Ja, das ist was
ganz Anderes.
Hier wird zwar eine Funktion aufgerufen, aber dann Zeitversetzt in einer anderen Funktion weitergearbeitet.
So würde ja der Speicher, auf welchen der Pointer zeigt schon freigegeben, bevor die andere Prozedur diesen auslesen kann.
Also hier wird dann natürlich ein Zwischenspeicher benötigt.
Delphi-Quellcode:
procedure ProcedureA(Gewicht : double)
var
pGewicht: PDouble;
begin
New(pGewicht);
pGewicht := @Gewicht;
PostThreadMessage(MyThreadId, WM_Gewichtserfassung, intAndererwert, Integer(pGewicht));
end;
procedure TScheduleThread.Execute;
var
Gewicht: double
begin
Gewicht := PDouble(Gewichtsparameter)^;
Dispose(PDouble(Gewichtsparameter)); // das Freigeben nicht vergessen
ShowMessage(FloatToStr(Gewicht));
end;
[edit] @ und p eingefügt ... siehe #15