Szukam w google i znalazłem ale nie dokońca to o co mi chodziło. Nie zamierzam kopiować całej listy rekordów a jedynie odczytać już istniejące. Zmienna string wiem jak przesłać ale z klasą mam problem.
type
Rekord = record
tekst: string;
liczba: integer;
end;
Watek = class(TThread)
public
procedure Execute;
end;
procedure TWatek.Execute;
var
List: TList<Rekord>;
s: string;
r: Rekord;
begin
List := TList<Rekord>.Create;
r.Text := 'Fajnie';
r.Liczba := 5;
List.Add(r);
s := 'To działa';
SendMessage(Handle, WM, integer(@s), LP_EndGetList); //Czekaj na obsłużenie
SendMessage(Handle, WM, integer(@List), LP_EndGetList); //Czekaj na obsłużenie
List.Free;
end;
procedure Odebrano(var Msg: TMessage);
var
tekst: string;
PList: ^TList<Rekord>;
List: TList<Rekord>;
begin
tekst := PString(Msg.LParam)^; //Tutaj zmienna tekst zawiera prawidłowy string
List := PList(Msg.LParam)^; // To się nie kompiluje Missing operator or semicolon
end;