Erstmal Danke für die Antworten und die Gratulation (siehe Signatur Chewie)
@Chewie:
Wie ich das ganze mit einer Message machen könnte, weiß ich (mir würde AllocateHWnd zum Erzeugen eines unsichtbaren Fensters mit Nachrichtenschleife reichen). Ich hatte aber gehofft, auf den Umweg mit der Message verzichten zu können.
@negaH:
Ja, es lässt sich ein benutzerdefinierter Integer übergeben. Allerdings verstehe ich noch nicht, was mir die Übergabe von self an UserData bringen soll...
Mein Problem besteht darin, dass ich an die Aufruffunktion nicht einfach mit @Methode die Adresse meiner Callback-Methode übergeben kann. Der konkrete Fall:
Ich habe eine Callback-Funktion folgenden Typs:
TFSoundStreamCallback = function (Stream: PFSoundStream; Buff: Pointer; Length, Param: Integer): ByteBool; cdecl;
Die Aufruffunktion sieht folgendermaßen aus:
function FSound_Stream_SetEndCallback(Stream: Pointer; Callback: TFSoundStreamCallback; UserData: Integer): Integer;
In meinem Objekt gibt es eine Methode "EndCallback" vom Typ TFSoundStreamCallback, die bei jedem Callback aufgerufen werden soll. Dazu müsste ich diese Methode als Callback an
TFSound_Stream_SetEndCallback übergeben:
FSound_Stream_SetEndCallback(FStreamHandle, EndCallback, 0);
Und genau das ist nicht möglich, sondern liefert mir die Fehlermeldung
"Inkompatible Typen: Reguläre Prozedur und Methodenzeiger".
"Electricity is actually made up of extremely tiny particles called electrons, that you cannot see with the naked eye unless you have been drinking." (Dave Barry)