![]() |
Inhalt eines Ordners auslesen
Hi,
z.B in einem Ordner sind Bilder gespeichert und der Ordner heißt "Test" in meiner DB gibt es eine Person namens Test und zu der gehört der Ordner, der Pfad zu dem Ordner ist auch in der DB gespeichert. Ich möchte jetzt also, dass die Bilder(in dem Ordner "Test") in einer Combobox oder etwas anderem aufzurufen sind und wenn man das BIld auswählt und auf Öffnen drückt öffnet sich dies. Wie bekomme ich hin, dass der Inhalt und ausschließlich, .jpg oder .gif datein angezeigt werden. Zudem müssen sie ja noch geöffnet werden. Ich suche schon ne weile mir fällt nur keine Methode ein wie ich das hinbekommen soll. Also der Pfad zu dem Ordner ist vorhanden in der DB und wenn der User angewählt wird, und in den Bereich kommt wo man alles überihn noch ma genau sieht und ändern kann, sollen Bilder über ihn auch anwählbar sein. Ich hoffe ihr könnt mir helfen. Danke. |
Re: Inhalt eines Ordners auslesen
Delphi-Quellcode:
dabei werden auch unterordner durchsucht.
procedure GetFileList(Path: String; ZielListe: TStringList);
var SR: TSearchRec; begin if Path[length(Path)] <> '\' then Path := Path + '\'; if FindFirst(Path + '*.*', faAnyFile, SR) = 0 then repeat if (Lowercase(ExtractFileExt(Path + sr.Name)) = '.jpg') then ZielListe.Add(Path + sr.Name); until FindNext(SR) <> 0; FindClose(SR); if FindFirst(Path + '*.*', faAnyFile, SR) = 0 then repeat if (SR.Attr = faDirectory) and (SR.Name <> '.') and (SR.Name <> '..') then GetFileList(Path + SR.Name + '\', ZielListe); until FindNext(SR) <> 0; FindClose(SR); end; kannst du so aufrufen:
Delphi-Quellcode:
procedure TForm1.Button1Click;
var List: TStringList; I: Integer; begin List := TStringList.create; try GetFileList('<MeinPfad>', List); for I := 0 to List.Count do LoadMyImage(List[I]); // image laden finally FreeAndNil(List); end; end; |
Re: Inhalt eines Ordners auslesen
Kannst du mir das ein bisschen erläutern, ich würd auch gerne etwas lernen und wo muss ich was ändern.
|
Re: Inhalt eines Ordners auslesen
ok :stupid:
und ich hab beim durchgehen gesehen das man da noch was vereinfachen kann :cyclops:
Delphi-Quellcode:
das laden vom bild musst du übernehmen^^
procedure GetFileList(Path: String; ZielListe: TStringList);
var SR: TSearchRec; begin if Path[length(Path)] <> '\' then // erstmal schauen wir ob der übergebene pfad Path := Path + '\'; // mit einem \ aufhört, zB C:\Test\ if FindFirst(Path + '*.jpg', faAnyFile, SR) = 0 then // nach der ersten datei suchen die mit .jpg endet // * wird dabei als platzhalter verwendet // in SR wird der fund gespeichert repeat ZielListe.Add(Path + sr.Name); // pfad zum bild merken until FindNext(SR) <> 0; // mit FindNext wird die suche wiederholt FindClose(SR); // suche abschließen if FindFirst(Path + '*.*', faAnyFile, SR) = 0 then // das ganze noch mal von vorne mit ordnern repeat if (SR.Attr = faDirectory) and // schauen ob fund ein ordner ist (SR.Name <> '.') and (SR.Name <> '..') then // " GetFileList(Path + SR.Name + '\', ZielListe); // rekursiver aufruf unserer procedure mit unterordner until FindNext(SR) <> 0; // suche widerholen FindClose(SR); // suche abschließen end; procedure TForm1.Button1Click; var List: TStringList; I: Integer; begin List := TStringList.create; // unsere StringList erzeugen try // speicherschutzblock GetFileList('<MeinPfad>', List); // unsere prozedure, deinen pfad hier eintragen! for I := 0 to List.Count do // alle elemente der liste durchgehen... LoadMyImage(List[I]); // ... und laden (ist jetzt nur nen beispiel) finally FreeAndNil(List); // speicher freigeben end; end; setz dir am anfang der prozedure nen breakpoint, dann siehst du mit jedem knopfdruck auf F8 wo er gerade hinspringt. Bei weiteren Fragen fragen. |
Re: Inhalt eines Ordners auslesen
ok thx, morgen werd ich probieren.
|
Re: Inhalt eines Ordners auslesen
Was muss ich bei LoadMyImage einsetzen??
|
Re: Inhalt eines Ordners auslesen
Zitat:
|
Re: Inhalt eines Ordners auslesen
ok.
Sagen wir ich möchte, die Datein(also alle Bilder) in dem Ordner in einer Combobox angezeigt bekommen, wie stelle ich das dann an. |
Re: Inhalt eines Ordners auslesen
Meine Version ohne Unterordner:
Delphi-Quellcode:
procedure ListAllPics(sPath: string; List: TStrings);
var Rec: TSearchRec; begin List.BeginUpdate; List.Clear; if sPath[Length(sPath)] <> '\' then sPath := sPath + '\'; if FindFirst(sPath + '*.*',faAnyfile,Rec) = 0 then begin repeat if (AnsiLowerCase(ExtractFileExt(Rec.Name)) = '.jpg') or (AnsiLowerCase(ExtractFileExt(Rec.Name)) = '.gif') then List.Add(Rec.Name); until FindNext(Rec) <> 0; FindClose(Rec); end; List.EndUpdate; end; procedure TForm1.FormCreate(Sender: TObject); begin ListAllPics('F:',ComboBox1.Items); end; |
Re: Inhalt eines Ordners auslesen
Zitat:
Um aber beim Code von dominikkv zu bleiben:
Delphi-Quellcode:
Und dies anstelle von:
ComboBox1.Items.Assign(List);
Delphi-Quellcode:
Die Liste, die erstellt wird ist vom Typ TStringList und die Eigenschaft Items der Combobox ebenfalls. Mit Assign werden die Inhalte der einen Liste in die andere Liste kopiert.
for I := 0 to List.Count do // alle elemente der liste durchgehen...
LoadMyImage(List[I]); Natürlich wäre es auch richtig:
Delphi-Quellcode:
zu schreiben. Dann kannst du dir die Instanz "List" sparen und die File Liste wird direkt in die Stringliste Items der Combobox geschrieben.
GetFileList('<MeinPfad>', ComboBox1.Items);
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:54 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz