Hallo sirius. Vielen Dank für Deine Antwort.
Zitat von
sirius:
Da musst du wohl besser direkt einen Zeiger übergeben, denn derzeit wird in deinem Constructor TDataFrame kopiert.
Delphi-Quellcode:
type PDataFrame=^TDataframe;
constructor xyzThread.create(...; Data:PDataFrame);
//und jetzt immer mit PDataFrame arbeiten
//aufrufen kannst du den constructor dann so
xyzThread.create(... @Data);
//..wenn Data eine Variable vom Typ TDataFrame im HauptThread ist.
Ich verstehe das leider noch nicht so ganz. Okay, wenn ich es so mache, habe ich den Zeiger im Constructor. Wie komme ich in meiner Execute Prozedur an den Zeiger?
Das ist ja das Problem was ich bis jetzt auch hatte: Der var-Parameter stand mir im Constructor zur Verfügung. Ich wußte nicht wie ich in der Execute Prozedur an ihn rankomme. Also hab ich ihn in ein Feld kopiert. Allerdings macht dies natürlich die Funktionsweise des var-Parameters zu nichte...
Wie ich im ersten Post schon erwähnt hatte, braucht meine Funktion im Thread eigentlich einen var-Parameter und keinen Zeiger. Wenn ich ihr einen Zeiger übergebe, ändert sich der Inhalt des Zeigers, also die in ihm enthaltene Adresse und nicht die Speicherstelle auf der er zeigt.
Gibt es eine Möglichkeit einer Funktion, welche einen var-Parameter benötigt einen Zeiger zu übergeben?
Zitat von
sirius:
Achte dabei auch auf die Synchronisierung!
Werde ich drauf achten.
Vielen Dank