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