Autor Beitrag
Heiko
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3169
Erhaltene Danke: 11



BeitragVerfasst: Sa 06.08.05 11:24 
Ich habe folgenden Quelltext:

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

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

Windows 10 64 bit
C# (Visual Studio 2019 Express)
BeitragVerfasst: 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:

ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3169
Erhaltene Danke: 11



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 4006
Erhaltene Danke: 7

Windows 10 64 bit
C# (Visual Studio 2019 Express)
BeitragVerfasst: Sa 06.08.05 13:48 
user profile iconHeiko hat folgendes geschrieben:
Also so wie ich es bisher hatte.


Nein. Schau dir mein if genau ein - da ist ein Unterschied!

AXMD
Heiko Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3169
Erhaltene Danke: 11



BeitragVerfasst: Sa 06.08.05 13:59 
Stimmt :oops: , aber was bringt hier die kombination durch das and?
uall@ogc
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1826
Erhaltene Danke: 11

Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 4006
Erhaltene Danke: 7

Windows 10 64 bit
C# (Visual Studio 2019 Express)
BeitragVerfasst: Sa 06.08.05 14:09 
user profile iconuall@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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1826
Erhaltene Danke: 11

Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
BeitragVerfasst: Sa 06.08.05 14:14 
ausblenden Delphi-Quelltext
1:
  faDirectory = $00000010; @ sysutils					


-> mit or kann man die bitmasken setzen

ausblenden Delphi-Quelltext
1:
maske := maske or faDirectory;					


aulesen mit and

ausblenden 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

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1144

Win XP
D5 Standard, D7 Pers, D2005 Pers
BeitragVerfasst: Sa 06.08.05 14:33 
Es folgt: mein Lieblingspost ;)

user profile iconHeiko 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3169
Erhaltene Danke: 11



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1144

Win XP
D5 Standard, D7 Pers, D2005 Pers
BeitragVerfasst: Sa 06.08.05 15:00 
user profile iconHeiko 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 :shock: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1826
Erhaltene Danke: 11

Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3169
Erhaltene Danke: 11



BeitragVerfasst: Sa 06.08.05 16:02 
Und warum gibt es dann faReadOnly wenn es eine normale Datei ist?
uall@ogc
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1826
Erhaltene Danke: 11

Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 79
Erhaltene Danke: 2

Windows 8.1/x64
Delphi 10.1
BeitragVerfasst: 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.