Entwickler-Ecke
Dateizugriff - Wo liegt die Datei? (Done; mehr oder minder ;-)
Terra23 - Fr 31.10.03 20:53
Titel: Wo liegt die Datei? (Done; mehr oder minder ;-)
Hi Leute.
Ich habe in meinem Programm mehrere Unterordner nach Dateien gesucht, diese vom Pfad getrennt und in einer ListBox ausgegeben. Das klappt auch alles hervorragend. Nun gebe ich in ein Edit-Feld ein paar Buchstaben ein und bekomme auch entsprechend alle Dateien, die mit dem Text aus dem Edit-Feld beginnen. Nun ja; da beginnt mein nächstes Problem. Wenn ich diese Dateien (z.B. Word-Dokumente) öffnen will, mache ich das ja per ShellExecute. Wie das funktioniert, weiß ich. Wie bekomme ich nun aber den Pfad, wo diese Datei liegt? Wißt ihr, wie ich's meine?
Ich habe als Pfad z.B. "C:\". Nun wird in C:\ und allen Unterordnern gesucht, ich kann aber nur die Dateien starten, die auch in C:\ liegen. Liegt die woanders, geht's nicht. Wer weiß Rat? Ich zumindest mal nicht.. ;-)
Keldorn - Fr 31.10.03 21:41
Speichere den Pfad extra in Zusatzinformationen (additem) oder du übernimmst das Zeichnen der Listbox selber (ondrawitem) und beim Anzeigen zeigst du dann nur den Dateinamen (extractfilename).
Mfg Frank
Terra23 - Fr 31.10.03 23:44
... so ähnlich habe ich mir jetzt auch geholfen. Ich habe eine zusätzliche ListBox in mein Programm gepackt, die jedoch unsichtbar ist. In der speichere ich die Pfade (wenn ich die Dateien auslese) und arbeite dann im Aufruf auch mit ihr. Ist zwar nicht sehr "sauber" programmiert, aber was soll's. Es funktioniert zumindest mal vorerst.. ;-)
Danke für die Hilfe..
:beer:
Keldorn - Sa 01.11.03 09:30
warum eine unsichtbare Listbox und nicht gleich eine normale Stringlist?
Delete - Sa 01.11.03 11:32
Und wenn er das eine sortiert oder was aus der Listbox löscht gibt es Probleme. Aber TStrings kennt ja die Methode AddObject. Etwas Beispeil Code:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36:
| type TPerson = record Name: string[255]; Vorname: string[255] end; PPerson = ^TPerson;
procedure TForm1.btnAddClick(Sender: TObject); var Person: PPerson; begin new(person); Person^.Name := edtName.Text; Person^.Vorname := edtVorname.Text; Listbox1.Items.AddObject(IntToStr(Listbox1.Items.Count + 1), TObject(Person)); end;
procedure TForm1.ListBox1Click(Sender: TObject); var Name, Vorname: string; begin if Listbox1.ItemIndex > -1 then begin Name := PPerson(Listbox1.Items.Objects[Listbox1.ItemIndex])^.Name; Vorname := PPerson(Listbox1.Items.Objects[Listbox1.ItemIndex])^.Vorname; ShowMessage(name + ', ' + Vorname); end; end;
procedure TForm1.FormDestroy(Sender: TObject); var Loop: Integer; begin for Loop := 0 downto Listbox1.Items.Count - 1 do Dispose(PPerson(Listbox1.Items.Objects[Loop])); end; |
Oder einfach mal nach
ADDOBJECT suchen, da gibt es eine schöne, ausführliche Erklärung von Klabautermann.
Terra23 - Sa 01.11.03 12:57
@Luckie: Danke. Ich schaue mir das mal an; löschen kann man aus der ListBox nicht. Das habe ich verboten..
@Keldorn: Mit der StringList habe ich immer so meine Probleme. Ich habe kaum Zeit, mich neben der Schule so intensiv mit Delphi weiterzubilden. Ich kann viele grundlegende Sachen, aber teilweise muss ich immer nochmal schauen. Bis ich so Sachen fehlerfrei aus dem Kopf kann, dauert's halt ein wenig; wie gesagt, gibt viel zu tun in der Schule.. ;-)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!