![]() |
Probleme mit "SearchRec"s
Here ist ein Auszug aus einem meiner Programme.
Noch vorab: Es gibt 4 Ebenen: 1. - 3. Ebene NUR Ordner und 4. Ebene NUR ".dat"-Dateien
Delphi-Quellcode:
In der ersten Prozedur (OnActivate) funktioniert die auflistung der Vorhandenen Ordner im Ordner der exe-Datei.
procedure TForm1.FormActivate(Sender: TObject);
var SR : TSearchrec; begin if FindFirst('*.*', faAnyFile, SR) = 0 then begin repeat // handelt es sich um ein Verzeichnis? if (SR.Attr and faDirectory) = faDirectory then begin if (SR.Name <> '.') and (SR.Name <> '..') then ComboBox1.Items.Add(SR.Name); end; until FindNext(SR) <> 0; FindClose(SR); // wird benötigt um den Speicher wieder freizugeben end; end; procedure TForm1.ComboBox1Change(Sender: TObject); var SR : TSearchrec; tmp : String; begin tmp := ComboBox1.Items[ComboBox1.ItemIndex] + '\*.*'; if FindFirst(tmp, faAnyFile, SR) = 0 then begin repeat // handelt es sich um ein Verzeichnis? if (SR.Attr and faDirectory) = faDirectory then begin if (SR.Name <> '.') and (SR.Name <> '..') then ComboBox2.Items.Add(SR.Name); end; until FindNext(SR) <> 0; FindClose(SR); // wird benötigt um den Speicher wieder freizugeben end; end; procedure TForm1.ComboBox2Change(Sender: TObject); var SR : TSearchrec; tmp : String; begin tmp := ComboBox1.Items[ComboBox1.ItemIndex] + '\' + ComboBox2.Items[ComboBox2.ItemIndex] + '\*.*'; if FindFirst(tmp, faAnyFile, SR) = 0 then begin repeat // handelt es sich um ein Verzeichnis? if (SR.Attr and faDirectory) = faDirectory then begin if (SR.Name <> '.') and (SR.Name <> '..') then ComboBox3.Items.Add(SR.Name); end; until FindNext(SR) <> 0; FindClose(SR); // wird benötigt um den Speicher wieder freizugeben end; end; Leider passiert bei den anderen zweien nichts. Es werden keine Ordner aufgelistet! |
Re: Probleme mit "SearchRec"s
probier mal anstatt combobox.Items[combobox.itemindex], combobox.text zu nehmen ;)
|
Re: Probleme mit "SearchRec"s
Ahh! Wieso habe ich das nicht gemerkt?
"TComboBox.Items[TComboBox.ItemIndex]" ist der Eintrag, der gerade markiert ist und "TComboBox.Text" ist der Text, der gerade angezeigt wird... richtig? :-D |
Re: Probleme mit "SearchRec"s
Zitat:
[add] Zitat:
|
Re: Probleme mit "SearchRec"s
warum suchst du eigentlich nach "*.*"? willst du nur dateinamen aufgelistet bekommen in denen ein "." enthalten ist? Wenn dem nicht so ist und du alles aufgelistet bekommen willst solltest du nach "*" suchen
|
Re: Probleme mit "SearchRec"s
Ich habe mein Programm korrigiert:
Delphi-Quellcode:
Jetzt funktioniert es.
procedure TForm1.FormActivate(Sender: TObject);
var SR : TSearchrec; begin if FindFirst('*.*', faAnyFile, SR) = 0 then begin repeat // handelt es sich um ein Verzeichnis? if (SR.Attr and faDirectory) = faDirectory then begin if (SR.Name <> '.') and (SR.Name <> '..') then ComboBox1.Items.Add(SR.Name); end; until FindNext(SR) <> 0; FindClose(SR); // wird benötigt um den Speicher wieder freizugeben end; end; procedure TForm1.ComboBox1Change(Sender: TObject); var SR : TSearchrec; tmp : String; begin tmp := ComboBox1.Text + '\*.*'; if FindFirst(tmp, faAnyFile, SR) = 0 then begin repeat // handelt es sich um ein Verzeichnis? if (SR.Attr and faDirectory) = faDirectory then begin if (SR.Name <> '.') and (SR.Name <> '..') then ComboBox2.Items.Add(SR.Name); end; until FindNext(SR) <> 0; FindClose(SR); // wird benötigt um den Speicher wieder freizugeben end; end; procedure TForm1.ComboBox2Change(Sender: TObject); var SR : TSearchrec; tmp : String; begin tmp := ComboBox1.Text + '\' + ComboBox2.Text + '\*.*'; if FindFirst(tmp, faAnyFile, SR) = 0 then begin repeat // handelt es sich um ein Verzeichnis? if (SR.Attr and faDirectory) = faDirectory then begin if (SR.Name <> '.') and (SR.Name <> '..') then ComboBox3.Items.Add(SR.Name); end; until FindNext(SR) <> 0; FindClose(SR); // wird benötigt um den Speicher wieder freizugeben end; end; @ SirThornberry: Mann kann mit "*.*" jede Datei und jeden Ordner suchen. Ein Ordner hat zwar nicht eine "extention" aber es geht eben so. (Wurde mir gesagt). Und es funktioniert! :zwinker: |
Re: Probleme mit "SearchRec"s
Zitat:
Und ich finde es ist so (mit *.*) auch effektiver, denn wenn eh nichts anderes im zu durchsuchenden Verzeichnis enthalten ist, braucht man Windows (die WinAPI) nicht auch noch "sinnlos" eine Namensprüfung machen zu lassen. |
Re: Probleme mit "SearchRec"s
Ich glaube das kommt daher, dass im uralten DOS (noch vor Windows 3.1) für Ordner die extention ".dir" benutzt wurde.
Stimmt das, oder täusche ich mich? :angel2: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:17 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