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
 
PeterPanino

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

Re: Suchmaske nach FindFirst verändern?

  Alt 21. Nov 2009, 17:04
Zitat von himitsu:
Was aber möglich ist: alles liefern lassen und dann selber filtern.
Genau DAS wollte ich ja vermeiden. Grund des Ganzen: Ich brauche eine Funktion HoleNaechsteDatei, um ausgehend von der aktuell geladenen Datei die "nächste" Datei im Verzeichnis dieser geladenen Datei zu suchen (wobei die aktuell geladene Datei nicht über eine Suche gefunden sondern manuell vom Anwender geladen wurde). Dafür gibt es nun verschiedene Möglichkeiten:

1. Im Verzeichnis der aktuell geladenen Datei alle Dateien des gewünschten Dateityps suchen und dann in einer eigenen Liste SLNaechsteDateien speichern. Wenn der Anwender die Funktion "Lade nächste Datei im Verzeichnis der aktuell geladenen Datei" ausführt, wird die nächste Datei aus der Liste SLNaechsteDateien geladen und der Listeneintrag dann gelöscht, usw.
Diese Methode hat einige Nachteile:
a) Die Liste könnte nicht mehr aktuell sein, weil unterdessen Dateien im Verzeichnis etwa gelöscht wurden.
b) Aufwändige und fehleranfällige Verwaltung der Liste: Wenn der Anwender manuell eine Datei aus einem anderen Verzeichnis lädt, muss die Liste zurückgesetzt und neu eingelesen werden, usw.

2. Wenn der Anwender die Funktion "Lade nächste Datei im Verzeichnis der aktuell geladenen Datei" ausführt, sucht das Programm mit FindFirst und der Dateimaske des gewünschten Dateityps im Verzeichnis der aktuell geladenen Datei und lädt die gefundene Datei. SearchRecord wird in einer globalen Variable gespeichert, sodass beim nächsten Ausführen der Funktion "Lade nächste Datei im Verzeichnis der aktuell geladenen Datei" nur mehr FindNext mit der vorher initiierten globalen Variable SearchRecord aufgerufen werden muss.
Vorteil:
a) FindNext findet nur real existierende Dateien (s. Nachteil 1a).
Nachteil:
b) Ebenso aufwändige Verwaltung, da irgendwann FindClose aufgerufen werden und immer wieder überprüft werden muss, ob SearchRecord noch geöffnet bzw. das Searchhandle noch gültig ist.

3. Meine ursprüngliche Absicht - die sich nun wohl als unrealistisch herausgestellt hat - war: Mit FindFirst nach der aktuell geladenen Datei suchen und dann FindNext mit der Dateimaske des gewünschten Dateityps ausführen:

Delphi-Quellcode:
// Prototyp:
function HoleNaechsteDatei: string;
var
  SR: TSearchRec;
begin
  SearchDir := VerzeichnisDerAktuellGeladenenDatei;
  if FindFirst(SearchDir + AktuellGeladeneDatei, faAnyFile, SR) = 0 then
  begin
    AendereDateimaske; // <<<<< nicht möglich!?
    if FindNext(SR) = 0 then
      DateiLaden(SR.Name);
    FindClose(SR);
  end;
end;
Welche Methode würdet ihr bevorzugen?

[Edit: Schreibfehler korrigiert]
  Mit Zitat antworten Zitat
 


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 04:40 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