AGB  ·  Datenschutz  ·  Impressum  







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

FindFirst, FindNext

Ein Thema von nailor · begonnen am 6. Jan 2003 · letzter Beitrag vom 12. Jan 2003
Antwort Antwort
Seite 2 von 2     12   
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#11
  Alt 8. Jan 2003, 12:10
Moin Nailor,

Zitat von Delphi Hilfe zu FindFirst:
Der Parameter Attr gibt an, welche speziellen Dateien zusätzlich zu den normalen Dateien angezeigt werden.
Ich hab' mir das jetzt auch erst nochmal gründlich durchgelesen und bin dann beim dritten mal über diese Formulierung gestolpert

Mit anderen Worten:
FindFirst sucht immer nach allen Dateien (was sich auch mit den zugrunde liegenden API Funktionen deckt), und zeigt die im Filter angegebenen zusätzlich an.
Der Filter gibt also nicht an, was man nur haben will, sondern was man auch haben will.

Also, wie schon weiter oben gesagt:
Nimm' faAnyFile und filtere hinterher das raus, was Du haben willst. Geht nicht anders.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von nailor
nailor

Registriert seit: 12. Dez 2002
Ort: Karlsruhe
1.989 Beiträge
 
#12
  Alt 8. Jan 2003, 13:37
also

To test for an attribute, combine the value of the Attr field with the attribute constant with the and operator. If the file has that attribute, the result will be greater than 0. For example, if the found file is a hidden file, the following expression will evaluate to True: (SearchRec.Attr and faHidden) <> 0.

Demnach nach faanyfile suchen, für Ordner
(SearchRec.Attr and fadirectory) <> 0 nehmen

und für dateien:
FindFirst('*.*', 0, SearchRec)

oder wie
Michael N.
http://nailor.devzero.de/code/sharpmath/testing/ --- Tests, Feedback, Anregungen, ... aller Art sehr willkommen!
::: don't try so hard - it'll happen for a reason :::
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#13
  Alt 8. Jan 2003, 15:08
Moin Nailor,

immer nach faAnyFile suchen.

Bei Directories dann
Delphi-Quellcode:
if (srSearch.Attr and faDirectory) <> 0 then // Verzeichnis
// oder
if (srSearch.Attr and faDirectory) = faDirectory then // Verzeichnis
und bei Dateien
Delphi-Quellcode:
if (srSearch.Attr and faDirectory) = 0 then // Kein Verzeichnis
// oder
if (srSearch.Attr and faDirectory) <> faDirectory then // Kein Verzeichnis
Mit der Methode bin ich bislang gut gefahren.

Eine kleine Frage noch:
Warum benutzt Du eigentlich immer die Kombination aus SetCurrentDir und FindFirst mit Dateimaske?
Als ersten Parameter akzeptiert FindFirst auch einen kompletten Pfad.
Ich frage nur, weil ich das bisher noch nie so gesehen habe.

Eines noch zum +/or "Problem":
Ich sage nicht, dass es grundsätzlich nicht geht Flags mit + zu verknüpfen, nur kann immer der Fall eintreten, das die Verwendung von arithmetischen Operatoren zu Fehlern führen kann.
Da sich dies, ohne die genauen numerischen Werte zu kennen, aber nicht vorhersagen lässt, finde ich es einfach sinnvoller Flags nur mit logischen Operatoren zu bearbeiten. Dann braucht man sich nicht darum zu kümmern, ob das in dem speziellen Falle anders geht oder nicht.
Intern benutzt Borland übrigens auch or um die Flags zu Verknüpfen.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von nailor
nailor

Registriert seit: 12. Dez 2002
Ort: Karlsruhe
1.989 Beiträge
 
#14
  Alt 8. Jan 2003, 15:51
1. Weil ich mir noch keine Gedenken darüber gemacht habe, dass es natürlich auch reicht, den Pfad so weit wie nötig anzugeben und weil in der Hilfe halt steht, dass das aktuelle Verzeichnis durchsucht wird, daher SetCurrentDir. Ist aber doof. Hast Recht, weil das dann ja verstellt bleibt.

2. Flags mit arith. Ich bin halt nie auf die Idee gekommen, dass das Fehler geben könnte. genau wie bei
if boolean = true then
Michael N.
http://nailor.devzero.de/code/sharpmath/testing/ --- Tests, Feedback, Anregungen, ... aller Art sehr willkommen!
::: don't try so hard - it'll happen for a reason :::
  Mit Zitat antworten Zitat
Benutzerbild von nailor
nailor

Registriert seit: 12. Dez 2002
Ort: Karlsruhe
1.989 Beiträge
 
#15
  Alt 11. Jan 2003, 18:41
Noch eine Frage: Wie krieg ich den kompletten Pfad (mit oder ohne Dateiname angehängt)?
Michael N.
http://nailor.devzero.de/code/sharpmath/testing/ --- Tests, Feedback, Anregungen, ... aller Art sehr willkommen!
::: don't try so hard - it'll happen for a reason :::
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#16
  Alt 11. Jan 2003, 18:50
Moin Nailor,

den kompletten Pfad von was?
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von nailor
nailor

Registriert seit: 12. Dez 2002
Ort: Karlsruhe
1.989 Beiträge
 
#17
  Alt 11. Jan 2003, 20:02
Von hier nach München
Von einer Datei natürlich...
Michael N.
http://nailor.devzero.de/code/sharpmath/testing/ --- Tests, Feedback, Anregungen, ... aller Art sehr willkommen!
::: don't try so hard - it'll happen for a reason :::
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#18
  Alt 11. Jan 2003, 22:49
Moin Nailor,

das war soweit schon klar, nur:
  • Meinst Du jetzt wie eine Datei als Parameter übergeben wird?
  • wie Du den Pfad über einen Dialog bekommst?
  • wie Du den Pfad über DragNDrop bekommst?

Das nur mal so, was mir auf anhieb einfällt.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von nailor
nailor

Registriert seit: 12. Dez 2002
Ort: Karlsruhe
1.989 Beiträge
 
#19
  Alt 12. Jan 2003, 00:03
Das wenn man mit FindFirst sucht,
man aus dem
TSearchRec.Name
den kompletten Pfad der Datei, die gefunden wurde bekommt.
Michael N.
http://nailor.devzero.de/code/sharpmath/testing/ --- Tests, Feedback, Anregungen, ... aller Art sehr willkommen!
::: don't try so hard - it'll happen for a reason :::
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#20
  Alt 12. Jan 2003, 00:47
Moin Nailor,

ach so

( das war bloss für mich in Erinnerung an meine eigenen Anfänge mit FindFirst, das Problem hatte ich nämlich auch)

Gar nicht, den Pfad musst Du wissen, was ja auch keine Schwierigkeit sein dürfte, denn den gibst Du ja auf die eine oder andere Weise auch an, bevor Du FindFirst aufrufst.
SearchRec.Name gibt Dir nur den Namen eines im angegebenen Pfad gefundenen Elementes zurück (könnte ja auch ein Directory sein).
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 15:07 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