AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Suchmaske nach FindFirst verändern?
Thema durchsuchen
Ansicht
Themen-Optionen

Suchmaske nach FindFirst verändern?

Ein Thema von PeterPanino · begonnen am 21. Nov 2009 · letzter Beitrag vom 30. Nov 2009
Antwort Antwort
Seite 1 von 6  1 23     Letzte »    
PeterPanino

Registriert seit: 4. Sep 2004
1.451 Beiträge
 
Delphi 10.4 Sydney
 
#1

Suchmaske nach FindFirst verändern?

  Alt 21. Nov 2009, 03:52
Hallo, weiß jemand wie man NACH FindFirst die Suchmaske verändern kann, sodass FindNext dann diese veränderte Suchmaske verwendet?
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.347 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Suchmaske nach FindFirst verändern?

  Alt 21. Nov 2009, 04:56
Ganz einfach: Es ist nicht möglich.

Wie auch? Ich meine zuerst holst du mit FindFirst eine Liste von passenden Dateien, die du dann mit FindNext durchgehen kannst. Und dann willst du eine neue Suche mit einer neuen Liste starten, nur mit der alten Liste von Dateien.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.451 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Suchmaske nach FindFirst verändern?

  Alt 21. Nov 2009, 12:39
Zitat von jaenicke:
zuerst holst du mit FindFirst eine Liste von passenden Dateien, die du dann mit FindNext durchgehen kannst.
Eine Liste von passenden Dateien? Ich dachte immer, FindFirst findet einfach nur die erste Datei im betr. Verzeichnis (und FindNext die jeweils nächste) und schreibt deren Eigenschaften in den SearchRecord? Wo soll denn diese Liste von gefundenen passenden Dateien sein?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

Re: Suchmaske nach FindFirst verändern?

  Alt 21. Nov 2009, 12:51
FindFirst initialisiert die Suche und stellt quasi intern eine Dateiliste zusammen
und es liefert auch gleich das erste Suchergebnis.
FindNext liefert dann sozusagen die nächste Datei aus dieser Liste.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.451 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: Suchmaske nach FindFirst verändern?

  Alt 21. Nov 2009, 13:10
Ja, aber irgendwo muss dann diese "Liste von gefundenen passenden Dateien" sich doch befinden - in einem anderen Universum?
  Mit Zitat antworten Zitat
Benutzerbild von Mithrandir
Mithrandir
(CodeLib-Manager)

Registriert seit: 27. Nov 2008
Ort: Delmenhorst
2.379 Beiträge
 
#6

Re: Suchmaske nach FindFirst verändern?

  Alt 21. Nov 2009, 13:13
Kann das sein, dass du eine Auswahl von Dateien suchen möchtest, und diese dann nochmal filtern möchtest? Warum prüfst du dann nicht nach jedem FindNext, ob die Datei deinem neuen Muster entspricht? Oder, was hindert dich daran, das Muster schon am Anfang zu nutzen?
米斯蘭迪爾
"In einer Zeit universellen Betruges wird das Aussprechen der Wahrheit zu einem revolutionären Akt." -- 1984, George Orwell
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.451 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: Suchmaske nach FindFirst verändern?

  Alt 21. Nov 2009, 13:21
Nein, ich möchte u.a. herausfinden, wie FindFirst und Findnext WIRKLICH funktionieren.

Wenn FindFirst wirklich wie oben behauptet eine "Liste der passenden Dateien" erstellt, dann müsste:

1. FindFirst in einem Verzeichnis mit sehr vielen Dateien (z.B. 100.000) erheblich langsamer sein als in einem Verzeichnis mit z.B. nur 3 Dateien, was nach meiner Erfahrung nicht zutrifft,

2. diese Liste sich irgendwo in unserem Universum befinden.
  Mit Zitat antworten Zitat
Benutzerbild von Mithrandir
Mithrandir
(CodeLib-Manager)

Registriert seit: 27. Nov 2008
Ort: Delmenhorst
2.379 Beiträge
 
#8

Re: Suchmaske nach FindFirst verändern?

  Alt 21. Nov 2009, 13:29
Also:

FindFirst erstellt ein SearchHandle, und listet die erste Datei auf, die Windows findet, die zu den Parametern passt. FindNext nutzt dann diese Handle, und findet die nächste Datei, die eben genau zu diesem Handle passt. Und ja, je mehr Dateien vorhanden sind, umso länger dauert das. Ist das bei dir nicht der Fall, dann hat der Cache zugeschlagen.

Interessant dazu auch die Remarks-Sektionen der MSDN-Einträge zu FindNextFile und FindFirstFile.

Das hat nix mit dem Universum zu tun. Sollte dir aber klar sein.

//Edit: Wobei man hier "länger" vielleicht noch genauer definieren sollte.
米斯蘭迪爾
"In einer Zeit universellen Betruges wird das Aussprechen der Wahrheit zu einem revolutionären Akt." -- 1984, George Orwell
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.451 Beiträge
 
Delphi 10.4 Sydney
 
#9

Re: Suchmaske nach FindFirst verändern?

  Alt 21. Nov 2009, 16:03
Zitat von Daniel G:
Das hat nix mit dem Universum zu tun. Sollte dir aber klar sein.
Natürlich hat das was mit dem Universum zu tun. Damit wollte ich ausdrücken, dass wenn es wirklich irgendwo die besagte Liste geben sollte, diese auch auffindbar sein sollte. Dazu gibt es ja ein WinAPI. Wenn aber FindFirst nach deiner Aussage keine solche Liste erstellt, sondern nur "die erste Datei auflistet, die Windows findet", dann dauert die Suche mit FindFirst in einem Verzeichnis mit sehr vielen Dateien zwar "etwas länger", aber nicht deswegen weil eine Liste mit den gefundenen Dateien vorab erstellt wird.

So wie ich die Sache jetzt sehe, beauftragt FindFirst Windows mit der Suche und erhält von Windows:

1. ein Such-Ergebnis zurück, das im SearchRecord gespeichert wird, und

2. ein Handle auf eben diese von Windows erstellte/durchgeführte Suche (das ebenfalls im SearchRecord gespeichert wird), das dann FindNext (über SearchRecord) übergeben werden kann.

Ergebnis: Die Suche wird von Windows durchgeführt und die Parameter einer einmal durchgeführten/erstellten Suche können nicht mehr über die WinAPI beeinflusst werden. Könnte man das so stehen lassen?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

Re: Suchmaske nach FindFirst verändern?

  Alt 21. Nov 2009, 16:10
Zitat von PeterPanino:
Könnte man das so stehen lassen?
Ja,

es sei denn, man geht direkt auf die grundlegenden und undokumentierten WinAPI's los,
denn da wird quasi jedesmal in FindNext die Suchmaske auf die nächsten Dateien angewendet, bis eine passende Datei gefunden wird und diese wird dann zurückgegeben.

Aber diese interen APIs können sich auch mal ändern, und dann geht es z.B. mit der nächsten Windowsversion nicht mehr und da undokumentiert, gibt es fast keine, welche wissen, wie man diese AOIs aktuell nutzt.


Was aber möglich ist: alles liefern lassen und dann selber filtern.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 6  1 23     Letzte »    


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 14:44 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