Delphi: CopyFileEx und Thread

8

Ich habe einen Thread und eine Fortschrittsroutine (eine Funktion) darin (in meiner Thread-Klasse).

Ich versuche das innerhalb des Threads zu tun:

%Vor%

Aber ich bekomme einen Fehler: "Variable erforderlich" (der Fehler ist in diesem: @ProgressRoutine ). Wenn die Funktion ProgressRoutine außerhalb des Threads ausgeführt wird, ist alles normal.

Wie benutzt man diese Funktion innerhalb des Threads?

Danke.

    
maxfax 09.08.2011, 00:02
quelle

1 Antwort

9

Wenn Sie "außerhalb des Threads" und "innerhalb des Threads" sagen, meinen Sie "als eigenständige Funktion" und "als Mitglied des Thread-Objekts"? Denn wenn eine Funktion ein Mitglied eines Objekts ist, ist ihre Signatur anders, also entspricht sie nicht dem, was der Compiler erwartet.

Dies können Sie beheben, indem Sie Self an CopyFileEx als Parameter lpData übergeben. Dies gibt ihm einen Zeiger, der es an den Rückruf zurückgibt. Schreiben Sie Ihren Callback als eigenständige Funktion, die den Parameter lpData als Thread-Objektverweis interpretiert und damit die Methode für Ihr Thread-Objekt mit denselben Parametern aufruft.

BEARBEITEN: Einfaches Beispiel. Angenommen, der Callback hat nur zwei Parameter, "Wert" und "lpData":

%Vor%     
Mason Wheeler 09.08.2011, 00:19
quelle

Tags und Links