Einzelnen Beitrag anzeigen

SebE

Registriert seit: 31. Jul 2004
Ort: Chemnitz
316 Beiträge
 
Delphi 7 Personal
 
#3

Re: Parameterübergabe bei CreateThread

  Alt 20. Mai 2007, 14:33
@Basilikum: Danke für deine Antwort.
Zitat:
sie oben, plus: mit DWORD(t) greifst du auf die Adresse des Pointers zu, nicht auf den Speicher, auf den er zeigt... richtig dereferenziert wird mit: PDWORD(t)^ oder auch DWORD(t^)
Is mir schon klar, das war ein Überbleibsel vom Testen, da die Adresse bekannt war, wollte ich sie mir NACH der Übergabe anzeigen lassen.

Ich schreib mal, was ich geändert hab, damit es der Eine oder Andere verwenden kann, der das gleiche Problem hat:
Delphi-Quellcode:
procedure _run(const param: pointer); stdcall;
var
  t: <Objektname>;
  threadID: DWORD;
begin
t := <Objektname>(PDWORD(param^));

//Hier wird mit t gearbeitet (was übergeben wurde)
...
end;
Delphi-Quellcode:
procedure <Objektname>._start;
begin
...

fMainThread := CreateThread(nil, 0, @_run, @DWORD(Self), 0, fMainThreadID) //Änderung! Jetzt läuft's :-)
end;

procedure <Objektname>._stop;
begin
...

TerminateThread(fMainThreadID, 0)
end;
Wie man sieht, funktioniert es auch ohne New/Dispose - war aber trotzdem ein guter Gedanke.
Sebastian
  Mit Zitat antworten Zitat