| Autor | Beitrag | 
| exoduscrises Hält's aus hier
 Beiträge: 9
 
 Win XP
 D7 Pers
 
 | 
Verfasst: So 01.05.05 17:40 
 
Hallo zusammen,
 ich nutze jetzt folgende Prozedur um eine Datei in die Listbox zu setzen. 
 		                       Delphi-Quelltext 
 									| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
 10:
 11:
 12:
 13:
 14:
 15:
 
 |  type TEntry = class(TObject)     fPath: string; end;
 
 
 
 var
 PLitem:TEntry;
 begin
 
 PLitem:=TEntry.Create();
 PLitem.fPath:=OpenDialog1.FileName;
 ListBox1.AddObject(CutPathName(OpenDialog1.FileName), PLitem);
 end;
 |  und dachte mir ich kann jetzt im Nachhinein den Pfad also PLitem wieder aufrufen undzwar so 
 		                       Delphi-Quelltext 
 									| 1:2:
 3:
 4:
 5:
 
 |  i := ListBox1.ItemIndex;
 
 Pfad:=listbox1.items.objects[iplay];
 
 |  geht aber leider nicht, kann mir vielleicht jemand weiterhelfen? | 
|  | 
| hansa 
          Beiträge: 3079
 Erhaltene Danke: 9
 
 
 
 
 | 
Verfasst: So 01.05.05 18:00 
 
Wieso benutzt Du einen schlichten Filename als Objekt ?  _________________ Gruß
 Hansa
 | 
|  | 
| exoduscrises  Hält's aus hier
 Beiträge: 9
 
 Win XP
 D7 Pers
 
 | 
Verfasst: So 01.05.05 18:10 
 
Es ging im Prinzip darum, mit einer Listbox eine Playlist für einen Mediaplayer zu machen. Das hat auch alles ganz gut geklappt so weit. Nun wollte ich aber, dass nicht immer der ganze Pfad in der Playlist steht sondern nur der Dateiname, da ich aber zum Dateinamen den Pfad brauche, damit es abgespielt werden kann, wollte ich ihn als Objekt mit anhängen. | 
|  | 
| Keldorn 
          Beiträge: 2266
 Erhaltene Danke: 4
 
 Vista
 D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
 
 | 
Verfasst: So 01.05.05 18:12 
 
	  |  hansa hat folgendes geschrieben: |  	  | Wieso benutzt Du einen schlichten Filename als Objekt ?  | 
 so wie ich das sehe, möchte er nur den Dateinamen (ohne Pfad) in der Listboxanzeige haben.
 //edit: zu langsam    was du brauchst, ist ein ein Typecast
 		                       Delphi-Quelltext 
 									| 1:
 | Pfad:=TEntry(listbox1.items.objects[iplay]).fpath;					 |  obwohl, man kann das auch etwas verfeinernen. Das Fpath finde ich unglücklich, da die variablen mit F immer die privaten sind. Außerdem könntest du dir einen eigenen constructor schreiben, wo du beim create gleich den Pfad übergibst.
 Cutpathname scheint was eigenes zu sein, brauchst du nicht. gugg dir in der OH exctractfilepath/dir an. 
 Und ich hoffe, du hast auch an das free geadcht, die Objects werden nicht automatisch freigegeben.
 Mfg Frank_________________ Lükes Grundlage der Programmierung: Es wird nicht funktionieren.
 (Murphy)
 | 
|  | 
| exoduscrises  Hält's aus hier
 Beiträge: 9
 
 Win XP
 D7 Pers
 
 | 
Verfasst: So 01.05.05 18:19 
 
Ok , danke erstmal so weit, ich probiers nochmal
Edit: Funktioniert so genau wie ich es mir vorstelle, vielen Dank nochmal   | 
|  | 
| hansa 
          Beiträge: 3079
 Erhaltene Danke: 9
 
 
 
 
 | 
Verfasst: So 01.05.05 18:30 
 
_________________ Gruß
 Hansa
 | 
|  | 
| exoduscrises  Hält's aus hier
 Beiträge: 9
 
 Win XP
 D7 Pers
 
 | 
Verfasst: So 01.05.05 18:57 
 
Eine Frage ist dann doch noch offen
 wie kann ich jetzt alle Pfade mit Hilfe von
 		                       Delphi-Quelltext 
 									| 1:
 | Pfad:=TEntry(listbox1.items.objects[i]).fpath;					 |  in einer Datei speichern? 
 Zuletzt bearbeitet von exoduscrises am Mo 02.05.05 13:56, insgesamt 1-mal bearbeitet
 | 
|  | 
| Tino 
          
  Beiträge: 9839
 Erhaltene Danke: 45
 
 Windows 8.1
 Delphi XE4
 
 | 
Verfasst: Mo 02.05.05 07:09 
 
In dem du alle Einträge der Listbox durchgehst und jeweils den Path liest und in die Datei speicherst. Wo liegt genau das Problem? | 
|  | 
| exoduscrises  Hält's aus hier
 Beiträge: 9
 
 Win XP
 D7 Pers
 
 | 
Verfasst: Mo 02.05.05 12:04 
 | 
|  | 
| exoduscrises  Hält's aus hier
 Beiträge: 9
 
 Win XP
 D7 Pers
 
 | 
Verfasst: Di 03.05.05 13:28 
 
so ging es dann
 		                       Delphi-Quelltext 
 									| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
 10:
 11:
 12:
 13:
 14:
 15:
 16:
 17:
 
 |  procedure TForm1.ImgBtn15Click(Sender: TObject);var
 sl: TStringList;
 s: string;
 e: TEntry;
 begin
 if SaveDialog1.Execute then
 begin
 sl := TStringList.Create;
 for i := 0 to Listbox1.Items.Count - 1 do begin
 e := TEntry(ListBox1.Items.Objects[i]);
 sl.Add(e.fpath);
 end;
 sl.SaveToFile(SaveDialog1.FileName);
 sl.Free;
 end;
 end;
 |  | 
|  | 
| Christian S. 
          Beiträge: 20451
 Erhaltene Danke: 2264
 
 Win 10
 C# (VS 2019)
 
 | 
Verfasst: Di 03.05.05 14:32 
 
Hallo!
 Du solltest mit einem Speicherschutzblock arbeiten, der sicherstellt, dass die Stringliste auch beim Auftreten einer Exception freiegegeben wird:
 		                       Delphi-Quelltext 
 									| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
 10:
 11:
 12:
 13:
 14:
 15:
 16:
 17:
 18:
 19:
 20:
 21:
 
 | procedure TForm1.ImgBtn15Click(Sender: TObject);var
 sl: TStringList;
 s: string;
 e: TEntry;
 begin
 if SaveDialog1.Execute then
 begin
 sl := TStringList.Create;
 try
 for i := 0 to Listbox1.Items.Count - 1 do
 begin
 e := TEntry(ListBox1.Items.Objects[i]);
 sl.Add(e.fpath);
 end;
 sl.SaveToFile(SaveDialog1.FileName);
 finally
 sl.Free;
 end;
 end;
 end;
 |  Außerdem habe ich den Quelltext mal anständig formatiert  _________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
 | 
|  |