(Moderator)
Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
Delphi 2006 Professional
|
AW: Parameterübergabe bei BeginThread für Klassenmethode
2. Jul 2010, 08:48
Das ist ganz einfach.
Deine Methode TTest.ThreadedMethod sieht intern so aus:
procedure TTest.ThreadedMethod(Self: TTest; Instance: TTest);
Es gibt also immer als ersten Parameter den unsichtbaren Self-Parameter. Anders ausgedrückt heißt es das deine Methode incompatibel zur erwarteten Funktion ist die eben nur einen Parameter vom Typ Pointer hat. Man sollte sich aber auch nicht darauf verlassen das es in alle Ewigkeit so aussieht das der erste unsichtbare Parameter Self ist. Denn wenn irgendwann mal in einer neuen Version oder bei einem anderen Compiler das ganze intern anders gehandhabt wird funktionieren dann solche hacks nicht mehr:
procedure TTest.ThreadedMethod();
(also das man eine Parameterlose Methode nimmt wohlwissen das der unsichtbare Parameter Self der einzige ist.
Jens Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
Geändert von SirThornberry ( 2. Jul 2010 um 08:50 Uhr)
|