Entwickler-Ecke
Dateizugriff - OpenDialog und Datennamen
Jakane - Fr 06.05.11 15:12
Titel: OpenDialog und Datennamen
Hallo liebe Delphi-Helfer :)
Ich habe ein kleines Programm, dass in einem ganz bestimmten Ordner Daten.html laden soll.
Das Programm funkioniert soweit, solange ich im meinem OpenDialog.InitialDir den kompletten Pfad vorgebe.
zB. "C:\Projekt\eMailAnhaenge\Hilfe_eMail_von_Mama.html"
Jetzt möchte ich allerdings nicht nur eMails die genau so heissen kontrollieren bzw. übergeben bekommen in InitialDir,
sondern auch eMails wie
zB. "C:\Projekt\eMailAnhaenge\Hilfe_eMail_von_Bruder.html"
Das ausfiltern funktioniert auch.
Mein Problem ist:
Wie sage ich meinen OpenDialog, oder irgendwas anderem, das er mir grundlegend erstmal alle Daten einliesst die sich in diesem Ordner befinden (damit ich sie danach auswerten und bearbeiten kann).
Danke für die Hilfe :)
Hab zwar was von TRegistry gefunden, aber irgendwie kann ich so gar nix mit anfangen ^^
jaenicke - Fr 06.05.11 16:16
Du hast da glaube ich einiges falsch verstanden. Aber ohne Quelltext kann ich nicht genau sagen was. :nixweiss:
InitialDir ist nur das anfangs ausgewählte Verzeichnis, wenn du dem Benutzer einen Öffnen-Dialog anzeigst. Der Benutzer wählt dann irgendwo Dateien aus. Das InitialDir ist danach also irrelevant.
ALF - Fr 06.05.11 16:35
In dem Du in der Filtereinstellung 'alle Dateien *.*' als 1. Eintrag einfügst
Gruss Alf
Dude566 - Fr 06.05.11 18:04
Meinst du mit "einlesen", dass du mehrere Dateien im OpenDialog auswählen willst oder das alle Dateien verschiedener Formate angezeigt werden sollen? :nixweiss:
Jakane - Mo 09.05.11 12:46
Quelltext
1: 2:
| ODMail.InitialDir:= 'C:/ProjektVW/eMailAnhaenge/HilfeMail von Mama.html'; lbCheck.Items.LoadFromFile(ODMail.InitialDir); |
Es muss nicht über OpenDialog laufen.
Ich will aber nicht jede einzelne Daten selbst prüfen, sonst bräucht ich das Programm ja nicht.
wenn in dem Ordner 'C:/ProjektVW/eMailAnhaenge' 20 oder mehr eMails drin sind,
soll der für jede Datei den Namen weiter geben so das der Rest meines Programms greifen kann
Quelltext
1: 2: 3:
| PfadUndDatei:= ? ODMail.InitialDir:= PfadUndDatei; lbCheck.Items.LoadFromFile(ODMail.InitialDir); |
? = 'HilfeMail von Mama.html' oder
? = 'HilfeMail von Bruder.html' oder
? = 'HilfeMail von Freundin.html' oder
? = 'SpamMail1.html' oder
? = 'SpamMail2.html'
Ist das so besser erklärt? :oops:
Gausi - Mo 09.05.11 12:51
Du willst also, dass dein Programm von alleine alle Dateien in einem Ordner findet, den du vorgibst?
Such mal nach FindFirst und FindNext - da sollte sich dann was zu finden lassen. :)
Edit: z.B. in der Library:
http://www.delphi-library.de/viewtopic.php?t=94
Jakane - Mo 09.05.11 13:02
das... wirkt sehr kompliziert :(
Ich habe mir aus einem anderen Thema jetzt den Code genommen, der wirkt am verständlichsten
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| procedure TfmProtokoll._btnFindFileClick(Sender: TObject; ADirectory: string; AMask: String; AList: TStrings; ARekursiv: Boolean); var searchResult : TSearchRec; begin if FindFirst('*', faAnyFile, searchResult) = 0 then begin repeat ShowMessage('File name = '+searchResult.Name); ShowMessage('File size = '+IntToStr(searchResult.Size)); until FindNext(searchResult) <> 0;
FindClose(searchResult); end; end; |
wenn ichs verstehen würde...
Starte ich die Procedur, bekomme ich aber kein ShowMessage und wo ich den Datenpfad hinterlegen kann weiss ich auch nicht :(
Gausi - Mo 09.05.11 13:42
Das mag kompliziert aussehen, aber für die Verwendung muss man das ja nicht alles im Detail durchblicken. ;-)
Schau dir die Funktion aus der Library mal an
Delphi-Quelltext
1:
| procedure GetFilesInDirectory(ADirectory: string; AMask: String; AList: TStrings; ARekursiv: Boolean); |
Also: "Hole alle Dateien im Verzeichnis".
- Welches Verzeichnis? aDirectory.
- Nur bestimmte Dateien? AMask auf *.mp3 setzen oder nur auf *, je nachdem, was man will.
- Wo sollen die gefundenen Dateien aufgelistet werden? In einer Stringliste AList. Das kann z.B. auch Memo1.Lines sein.
- Sollen auch Unterordner rekursiv durchsucht werden? ARekursiv auf True, sonst false.
Wenn du das unbedingt in einer ShowMessage haben willst, dann geht das z.B. so:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| liste := TStringList.Create; try GetFilesInDirectory('C:/ProjektVW/eMailAnhaenge', '*.*', liste, False); ShowMessage(Liste.Text); finally liste.free; end; |
Jakane - Mo 09.05.11 13:55
Ich hab noch nie eine Prozedur nicht über OnClick gebaut gehabt, hatte da Fehler drin ^^ jetzt hab ichs verstanden und es funktioniert! :D
Danke :)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 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!