Mein Enum
Delphi-Quellcode:
TPlayState = (psError = -1, psStop = 0, psPlay = 1,
psIsPlaying = 2, psPause= 3,
psPrevTitle = 4, psNextTitle = 5,
psSetPlaylistTitle = 6, psGetPlaylistTitlePos = 7,
psSetPlaylistPos = 8, psGetSelectedTitlePos = 9,
psPlaylistClear = 10, psAddPlaylistTitle = 11);
erweitere ich nun das Enum um einen Eintrag verursacht dieser Eintrag eine ungültige gleitkommaoperation unter VB6.
Die Callback sieht so aus.
Delphi-Quellcode:
TBASSVIS_STATECALLBACK = procedure(NewState: TPlayState); stdcall;
var
AmpStateCallback : TBASSVIS_STATECALLBACK;
Der neue Entrag..
psExternalClose = 12
wird dann so übergeben
Delphi-Quellcode:
if (assigned(AmpStateCallback)) then
AmpStateCallback(psExternalClose );
funktioniert alles unter Delphi aber nicht mit VB6.
Das Problem ist das ich den DatenTyp (integer) mit den Enum nicht übergeben kann der typ der dann in VB6 ankommt "könnte" also variant sein.
Wenn also Variant verwendet wird löscht die Callback an ihrem Ende zu viel vom Stack.
Würde ich jetzt zumindest mal vermuten.
Wie könnte ich die Callback umbauen so das ich von dem Enum wegkomme?
gruss