Autor Beitrag
Jakane
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 257



BeitragVerfasst: Fr 06.05.11 15:12 
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1085
Erhaltene Danke: 53

WinXP, Win7, Win10
Delphi 7 Enterprise, XE
BeitragVerfasst: Fr 06.05.11 16:35 
In dem Du in der Filtereinstellung 'alle Dateien *.*' als 1. Eintrag einfügst

Gruss Alf

_________________
Wenn jeder alles kann oder wüsste und keiner hätt' ne Frage mehr, omg, währe dieses Forum leer!
Dude566
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1592
Erhaltene Danke: 79

W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
BeitragVerfasst: 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:

_________________
Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.
Jakane Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 257



BeitragVerfasst: Mo 09.05.11 12:46 
ausblenden 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

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8548
Erhaltene Danke: 477

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: 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: www.delphi-library.de/viewtopic.php?t=94

_________________
We are, we were and will not be.

Für diesen Beitrag haben gedankt: Jakane
Jakane Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 257



BeitragVerfasst: 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

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8548
Erhaltene Danke: 477

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: 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
ausblenden 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:
ausblenden 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;

_________________
We are, we were and will not be.
Jakane Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 257



BeitragVerfasst: 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 :)