| Autor |
Beitrag |
Heiko
      
Beiträge: 3169
Erhaltene Danke: 11
|
Verfasst: Sa 06.08.05 11:24
Ich habe folgenden Quelltext:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9:
| if FindFirst(FileDir+'*.*', faAnyFile, SearchRec)=0 then begin repeat if (SearchRec.Attr=faDirectory) and (SearchRec.Name<>'.') and (SearchRec.Name<>'..') then begin ... end until not (FindNext(SearchRec)=0); end |
Da ich ja nur die Ordner haben will habe ich jetzt den Quelltext darauf reduziert:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9:
| if FindFirst(FileDir+'*.*', faDirectory, SearchRec)=0 then begin repeat if (SearchRec.Name<>'.') and (SearchRec.Name<>'..') then begin ... end until not (FindNext(SearchRec)=0); end |
Wenn ich allerdings in der Zeile
if (SearchRec.Name<>'.') and (SearchRec.Name<>'..') then einen Haltepunkt setzte und mir SearchRec.Name auswerten lasse, sehe ich dass er dort auch andere Dateien findet als nur die Ordner, obwohl es ja eigentlich durch faDirectory nicht sein dürfte. Weiß einer von euch woran das liegt?
|
|
AXMD
      
Beiträge: 4006
Erhaltene Danke: 7
Windows 10 64 bit
C# (Visual Studio 2019 Express)
|
Verfasst: Sa 06.08.05 11:40
Ich bin mir nicht sicher, ob das mit den Verzeichnissen in FindFirst so funktioniert. Ansonsten such einfach alle und filter dann die Verzeichnisse raus:
Delphi-Quelltext 1:
| if (searchrec.Attr and faDirectory) = faDirectory ... |
Außerdem: Ordner sind IMHO nicht *.*, sondern nur *, weil sie keinen Punkt beinhalten. Vielleicht liegt's ja daran...
AXMD
|
|
Heiko 
      
Beiträge: 3169
Erhaltene Danke: 11
|
Verfasst: Sa 06.08.05 13:41
Also so wie ich es bisher hatte.
@Dein Vorschlag: Bringt logischwerweise auch nix, da *-->test.mp3 auch sein kann.
|
|
AXMD
      
Beiträge: 4006
Erhaltene Danke: 7
Windows 10 64 bit
C# (Visual Studio 2019 Express)
|
Verfasst: Sa 06.08.05 13:48
Heiko hat folgendes geschrieben: | | Also so wie ich es bisher hatte. |
Nein. Schau dir mein if genau ein - da ist ein Unterschied!
AXMD
|
|
Heiko 
      
Beiträge: 3169
Erhaltene Danke: 11
|
Verfasst: Sa 06.08.05 13:59
Stimmt  , aber was bringt hier die kombination durch das and?
|
|
uall@ogc
      
Beiträge: 1826
Erhaltene Danke: 11
Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
|
Verfasst: Sa 06.08.05 14:01
die and verknüpfung schaut ob die bitmaske (das bit) von faDirectory gesetzt ist
_________________ wer andern eine grube gräbt hat ein grubengrabgerät
- oder einfach zu viel zeit
|
|
AXMD
      
Beiträge: 4006
Erhaltene Danke: 7
Windows 10 64 bit
C# (Visual Studio 2019 Express)
|
Verfasst: Sa 06.08.05 14:09
uall@ogc hat folgendes geschrieben: | | die and verknüpfung schaut ob die bitmaske (das bit) von faDirectory gesetzt ist |
Exakt. Falls du den Quelltext hast, einfach mal in die Windows.pas (ich glaub dort is es) schauen (nach der Deklaration von faDirectory)
AXMD
|
|
uall@ogc
      
Beiträge: 1826
Erhaltene Danke: 11
Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
|
Verfasst: Sa 06.08.05 14:14
Delphi-Quelltext 1:
| faDirectory = $00000010; @ sysutils |
-> mit or kann man die bitmasken setzen
Delphi-Quelltext 1:
| maske := maske or faDirectory; |
aulesen mit and
Delphi-Quelltext 1:
| if (maske and faDirectory) = faDirectory then |
das faDirectory in der FindFirst funktion klappt bei mir auch nicht
es wird immer nach faAnyFile gesucht (muss windows eh machen)
muss man halt danach prüfen mit
Delphi-Quelltext 1: 2:
| if (maske and faDirectory) = faDirectory then |
obs wirklich nen ordner ist
_________________ wer andern eine grube gräbt hat ein grubengrabgerät
- oder einfach zu viel zeit
|
|
StefanH
      
Beiträge: 1144
Win XP
D5 Standard, D7 Pers, D2005 Pers
|
Verfasst: Sa 06.08.05 14:33
Es folgt: mein Lieblingspost
Heiko hat folgendes geschrieben: | Wenn ich allerdings in der Zeile
if (SearchRec.Name<>'.') and (SearchRec.Name<>'..') then einen Haltepunkt setzte und mir SearchRec.Name auswerten lasse, sehe ich dass er dort auch andere Dateien findet als nur die Ordner, obwohl es ja eigentlich durch faDirectory nicht sein dürfte. Weiß einer von euch woran das liegt? |
Jep. Kann ich dir sagen: Wir setzen den Eingabecursor (dieses Blinkdings halt) auf das Wort "FindFirst" und drücken F1. Wir wählen die Funktion, nciht das vom DataSet. Es öffnet sich ein tolles Fenster, da steht gaaaaaanz viele lustige Sachen drin. Unter "Beschreibung" suchen wir uns en Teil über den Parameter, um den es geht ( Attr) und siehe da:
| Zitat: | | Der Parameter Attr gibt an, welche speziellen Dateien zusätzlich zu den normalen Dateien angezeigt werden. |
bütteschon. und sry wg der Blödellaune *qq*
_________________ "Als es noch keine Computer gab, war das Programmieren noch relativ einfach."(Edsger W. Dijkstra)
"Ich bin nicht von Sinnen, sondern ich rede wahre und vernünftige Worte." (Paulus)
|
|
Heiko 
      
Beiträge: 3169
Erhaltene Danke: 11
|
Verfasst: Sa 06.08.05 14:55
Und was meinen die mit normalen Dateien? Bei mir ist jede Datei "normal", ob die nun Schreibgeschützt ist oder nicht.
|
|
StefanH
      
Beiträge: 1144
Win XP
D5 Standard, D7 Pers, D2005 Pers
|
Verfasst: Sa 06.08.05 15:00
Heiko hat folgendes geschrieben: | | Und was meinen die mit normalen Dateien? Bei mir ist jede Datei "normal", ob die nun Schreibgeschützt ist oder nicht. |
bei mir auch  kA. aber du wolltest ja wissen, warum du nicht nur Ordner bekommst 
_________________ "Als es noch keine Computer gab, war das Programmieren noch relativ einfach."(Edsger W. Dijkstra)
"Ich bin nicht von Sinnen, sondern ich rede wahre und vernünftige Worte." (Paulus)
|
|
uall@ogc
      
Beiträge: 1826
Erhaltene Danke: 11
Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
|
Verfasst: Sa 06.08.05 15:50
faSpecial = faHidden or faSysFile or faVolumeID or faDirectory;
das is nicht "normal" dazu gehören auch die ordner ;P
_________________ wer andern eine grube gräbt hat ein grubengrabgerät
- oder einfach zu viel zeit
|
|
Heiko 
      
Beiträge: 3169
Erhaltene Danke: 11
|
Verfasst: Sa 06.08.05 16:02
Und warum gibt es dann faReadOnly wenn es eine normale Datei ist?
|
|
uall@ogc
      
Beiträge: 1826
Erhaltene Danke: 11
Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
|
Verfasst: Sa 06.08.05 16:16
vielleicht werden ide fa Konstanten nicht nur zum suchen verwendet
schau dir einfach besser mal den source an...
_________________ wer andern eine grube gräbt hat ein grubengrabgerät
- oder einfach zu viel zeit
|
|
drstar
      
Beiträge: 79
Erhaltene Danke: 2
Windows 8.1/x64
Delphi 10.1
|
Verfasst: Mi 17.08.05 16:31
Zum Thema * und *.* bei Ordnern möchte ich mal soviel sagen: Es kommt durchaus häufiger vor, daß Ordner einen Punkt beinhalten (vor allem Systemordner können davon betroffen sein...) und diese dann z. . die CLSID aus der Registry als Extension tragen.
Ich würde deshalb empfehlen, als Suchmaske *.* zu verwenden.
|
|