AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Probleme mit "SearchRec"s

Ein Thema von qb-tim · begonnen am 13. Jun 2006 · letzter Beitrag vom 13. Jun 2006
Antwort Antwort
Benutzerbild von qb-tim
qb-tim

Registriert seit: 3. Mär 2006
Ort: Deutschland
280 Beiträge
 
Delphi 6 Professional
 
#1

Probleme mit "SearchRec"s

  Alt 13. Jun 2006, 14:34
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:
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;
In der ersten Prozedur (OnActivate) funktioniert die auflistung der Vorhandenen Ordner im Ordner der exe-Datei.

Leider passiert bei den anderen zweien nichts. Es werden keine Ordner aufgelistet!
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#2

Re: Probleme mit "SearchRec"s

  Alt 13. Jun 2006, 14:57
probier mal anstatt combobox.Items[combobox.itemindex], combobox.text zu nehmen
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
Benutzerbild von qb-tim
qb-tim

Registriert seit: 3. Mär 2006
Ort: Deutschland
280 Beiträge
 
Delphi 6 Professional
 
#3

Re: Probleme mit "SearchRec"s

  Alt 13. Jun 2006, 15:00
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?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.080 Beiträge
 
Delphi 12 Athens
 
#4

Re: Probleme mit "SearchRec"s

  Alt 13. Jun 2006, 15:01
Zitat von qb-tim:
In der ersten Prozedur (OnActivate) funktioniert die auflistung der Vorhandenen Ordner im Ordner der exe-Datei.

Leider passiert bei den anderen zweien nichts. Es werden keine Ordner aufgelistet!
Hast du mal geprüft, was in den tmp-Variablen steht?


[add]
Zitat von qb-tim:
richtig?
Ja, aber wenn die ComboBox nur auswählbar ist ud somit immer ein Eintrag ausgewählt ist, dann sollte deinen auch funktionieren.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Probleme mit "SearchRec"s

  Alt 13. Jun 2006, 15:20
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
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von qb-tim
qb-tim

Registriert seit: 3. Mär 2006
Ort: Deutschland
280 Beiträge
 
Delphi 6 Professional
 
#6

Re: Probleme mit "SearchRec"s

  Alt 13. Jun 2006, 15:25
Ich habe mein Programm korrigiert:

Delphi-Quellcode:
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;
Jetzt funktioniert es.

@ 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!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.080 Beiträge
 
Delphi 12 Athens
 
#7

Re: Probleme mit "SearchRec"s

  Alt 13. Jun 2006, 15:29
Zitat von qb-tim:
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!
Klar funktioniert es, denn es wird nach allem mit beliebigen Zeichen vor und nach dem Punkt gesucht ... und kein Zeichen (keine Extension vorhanden), zählt auch mit dazu.

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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von qb-tim
qb-tim

Registriert seit: 3. Mär 2006
Ort: Deutschland
280 Beiträge
 
Delphi 6 Professional
 
#8

Re: Probleme mit "SearchRec"s

  Alt 13. Jun 2006, 15:32
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?
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:52 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz