Was das Speicherleak angeht, sollte es so ja eigentlich keine Probleme geben.
Es kommt nur auf die "richtige" Konvertierung an, also welche Seite konvertiert wird.
Das worauf zugewiesen wird und nicht das was zugewiesen wird.
Aber stimmt schon, obwohl String und TObject doch eigentlich nur Zeiger auf ihre Struktur sind (je 32 Bit groß) kann man dem Konvertiertem String nichts Zuweisen, wärend komischer Weise das Auslesen geht?
Delphi-Quellcode:
// hinzufügen
i := ListBox1.Items.Add('Item');
String(ListBox1.Items.Objects[i]) := 'Object';
// löschen
String(ListBox1.Items.Objects[i]) := '';
ListBox1.Items.Delete(i);
// abfragen
Label1.Caption := String(ListBox1.Items.Objects[i]);
// oder
Label1.Caption := PChar(ListBox1.Items.Objects[i]);