Autor |
Beitrag |
exoduscrises
Hält's aus hier
Beiträge: 9
Win XP
D7 Pers
|
Verfasst: So 01.05.05 18: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 19: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 19: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 19: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 19: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 19:30
_________________ Gruß
Hansa
|
|
exoduscrises 
Hält's aus hier
Beiträge: 9
Win XP
D7 Pers
|
Verfasst: So 01.05.05 19: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 14:56, insgesamt 1-mal bearbeitet
|
|
Tino
      

Beiträge: 9839
Erhaltene Danke: 45
Windows 8.1
Delphi XE4
|
Verfasst: Mo 02.05.05 08: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 13:04
|
|
exoduscrises 
Hält's aus hier
Beiträge: 9
Win XP
D7 Pers
|
Verfasst: Di 03.05.05 14: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 15: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".
|
|