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.
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%Tags und Links multithreading delphi copyfile