Wenn sich die Callback-Prozedur
nicht innerhalb der Klasse befindet, funktioniert deren Aufruf aus der Klasse heraus problemlos.
Delphi-Quellcode:
[...schnipp...]
AdsResult := AdsResult + AdsSyncAddDeviceNotificationReq( @LocalAddr,
ADSIGRP_SYM_VALBYHND,
varHandle,
@adsNotificationAttrib,
@NotificationCallback,
//hier wird auf die Adresse der Callback-Prozedur verwiesen
Handle,
@hNotification );
[...schnipp...]
Nur kann ich dann
nicht innerhalb der Callback-Prozedur auf das Feld/Attribut
MessageID
zugreifen.
Delphi-Quellcode:
[...schnipp...]
Procedure NotificationCallback( pAddr:PAmsAddr;
pNotification:PAdsNotificationHeader;
hUser:Longword ); stdcall;
begin
PostMessage(HWND(hUser), TMeineKlasse.MessageID , 0, 0); //Compiler findet Feld/Attribut "TMeineKlasse.MessageID" nicht
end;
Wenn der Quellcode aber so geändert wird, dass die Callback-Prozedur Teil der Klasse wird, dann ist zwar der Zugriff auf das Feld/Attribut
MessageID
problemlos möglich
Delphi-Quellcode:
Procedure TMeineKlasse.NotificationCallback( pAddr:PAmsAddr;
pNotification:PAdsNotificationHeader;
hUser:Longword );
stdcall;
begin
PostMessage(HWND(hUser), MessageID, 0, 0);
//Compiler findet Feld/Attribut "MessageID"
end;
[...schnipp...]
AdsResult := AdsResult + AdsSyncAddDeviceNotificationReq( @LocalAddr,
ADSIGRP_SYM_VALBYHND,
varHandle,
@adsNotificationAttrib,
@NotificationCallback,
//hier wird auf die Adresse der Callback-Prozedur verwiesen
Handle,
@hNotification );
[...schnipp...]
aber der Compiler bringt die Fehlermeldung "Variable erforderlich" für die Stelle
@NotificationCallback,
, in der auf die Callback-Prozedur, bzw. jetzt Callback-Methode verwiesen wird.
Hat jemand eine Idee?