![]() |
ListView und Data: mit Strings arbeiten
Hallo,
ich habe ein Problem mit dem Datafeld von einem Item in einem ListView. Ich möchte dort für jedes Item dem Pfad einer Datei abspeichern. Der ListView besteht aus mehreren Spalten wobei in der ersten der Dateiname ohne Pfad steht, den Pfad soll man aber nicht sehen, daher dachte ich mir diesem im Datafeld zu hinterlegen, aber leider scheidert es beim auslesen bzw. beim füllen:
Delphi-Quellcode:
Als Anzeige bekomme ich nur sinnfreier Text, ohne Bezug.
// einfügen
ListView1.Items[0].Data := Pointer(PChar(Folder + SearchRec.Name)); // auslesen ShowMessage(String(PString(LVwMP3.Items[LVwMP3.ItemIndex].Data))); Hat jemand eine Lösung dafür? Gruß Mazel |
Re: ListView und Data: mit Strings arbeiten
Hi,
erstmal muss ich sagen das ich bei den Pointern nicht 100%ig durchblicke aber versuchs ma mit
Delphi-Quellcode:
Nicht böse sein wenns nicht geht :duck: ^^
ShowMessage(PString(LVwMP3.Items[LVwMP3.ItemIndex].Data)^);
Gruß Neutral General |
Re: ListView und Data: mit Strings arbeiten
Hi,
dein Pointer wird sicherlich nur lokal (auf dem Stack) abgelegt. Delphi weiß hier einfach nicht, dass Du den länger benötigst, mit dem Ende der Methode, indem dieser Aufruf statt findet wird auch dieser Pointer auf nichts sinnvolles mehr zeigen. Du solltest Dir lieber etwas Speicher auf dem Heap reservieren. Dazu kannst Du einfach mit GetMem Speicher holen und als String behandeln.
Delphi-Quellcode:
Nicht vergessen, das was Du so auf dem Heap ablegst, musst Du auch selbst wieder von dort entfernen!
var buffer: ^String;
begin GetMem(buffer, length(Folder + SearchRec.Name)); buffer^ := Folder + SearchRec.Name; ... end; Gruß Der Unwissende [add] ansonsten hat der Neutral General recht, Du musst natürlich den String wieder dereferenzieren! [/add] |
Re: ListView und Data: mit Strings arbeiten
Hallo,
mein Ansatz:
Delphi-Quellcode:
//setzen
ListView1.Items[0].Data := StrNew(PChar(s)); //lesen showmessage(pchar(ListView1.Items[0].Data)); //freigeben in OnDeletion StrDispose(PChar(Item.Data)); |
Re: ListView und Data: mit Strings arbeiten
Danke Lannes, das funktioniert.
Pointer sind nicht ganz meine Sache, da gibt es bei mir oft Verwirrung. Gruß Mazel |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:54 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz