Hi ranftl!
Bei deinem Code existiert der String deiner Wünsche nur so lange, wie du in der Prozedur bleibst, in der dieser Code ausgeführt wird. Probier es lieber mal so (aus dem Kopf):
Delphi-Quellcode:
procedure TuWas;
var
LText : PString;
begin
New(LText);
LText^:=FieldByName('Test1').AsString + FieldByName('Test2').AsString;
ListItem.Data := Pointer(tmp);
end;
procedure HolDenText;
var
LText : PString;
begin
Ltext:=ListItem.Data;
Self.Caption:=LText^;
end;
//und irgendwann noch den Text freigeben
// Dispose(PString(ListItem.Data));
Und wenn du mal Zeit hast, lies mal 1-2 Tutorials über Pointer.