Hallo,

ich habe das Problem gelöst. Scheinbar ist es ein Fehler von Realbasic seit der ersten Version in der Behandlung von AppleEvents.

Mein Problem war das ich beim senden eines "odoc" Events an QuarkXPress 3 keinen Fehlerstatus zurück erhalten habe wenn das referenzierte Dokument nicht gefunden wurde oder bereits geöffnet war. In den .Reply... Funktionen schien alles ok.

In der Tat enthält der Reply-Event jedoch einen Descriptor vom Typ "errn" und dieser enthält den gesuchten Fehlercode. Über RB gibt es jedoch keine Möglichkeit an diesen heranzukommen (die Funktion ae.ReplyDescList liefert NIL).

Mittels Declares und direktem bearbeiten des über ae.ReplyPtr referenzierten AppleEventRecords konnte ich diesen Parameter jedoch isolieren.

etwas gekürzt schaut das dann so aus:
---------------------
// !!! ACHTUNG: diese "Lösung" geht davon aus das es im Reply genau EINEN Parameter gibt der vom Typ "errn" ist !!!

Declare Function AEGetNthPtr Lib "CarbonLib" (theAEDescList as Integer, index as Integer, desiredType as OSType, theAEKeyword as Ptr, typeCode as Ptr, dataPtr as Ptr, maximumSize as Integer, actualSize as Ptr) as Integer

Dim ae as AppleEvent

// ... Apple Event senden ...

mb = NewMemoryBlock(4)
mb2 = NewMemoryBlock(4)
mb3 = NewMemoryBlock(256)
mb4 = NewMemoryBlock(4)
OSErr = AEGetNthPtr(ae.ReplyPtr, 1, "****", mb, mb2, mb3, 128, mb4)
if (OSErr <> 0) then
  MsgBox "Error " + Str(OSErr)
  return
end if
theAEKeyword = mb.StringValue(0,4)
typeCode = mb2.StringValue(0,4)
dataSize = mb4.Long(0)
data = mb3.Long(0)

if typeCode = "errn" then
  MsgBox "Quark meldete Fehler " + Str(data)
else
MsgBox "theAEKeyword='" + theAEKeyword + "'" + chr(13) + "typeCode='"+typeCode+"'"+chr(13) + "actualSize="+actualSize + chr (13) + "data=" +Str(data)
end if

---------------------

Ich denke das hier einfach ein (bislang unbemerkter?) Bug vorliegt.
Ich kenne keine AppleEvent Schnittstelle die so schlecht ist wie die von REALbasic. AppleScript kanns, sogar Perl auf MacOS kanns, C sowieso und ich denke alle anderen auch, nur RB kann es immer noch nicht :-((


Mit freundlichen Grüssen,

Oliver Geisen
_____________________________
Systemadministrator
Kreisboten Verlag Mühlfellner KG
82362 Weilheim i. Ob.
Tel. 0881/686-904
Fax 0881/686-74


Antwort per Email an