Ich mach das mit Strings so:
Delphi-Quellcode:
// hineinschreiben
var
p: PChar;
p := StrAlloc(Length(myStr));
StrCopy(p, PChar(myStr));
AItem.Data := p;
// im OnDestroy des Formulars gehe ich alle Items durch
// und lösche deren Data-Strings
for i := 0 to ListView.Items.Count - 1 do
StrDispose(PChar(ListView.Items[i].Data));
Ist daran etwas auszusetzen?