![]() |
Re: Suchmaske nach FindFirst verändern?
Zitat:
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:
Welche Methode würdet ihr bevorzugen?
// 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; [Edit: Schreibfehler korrigiert] |
Re: Suchmaske nach FindFirst verändern?
Guten Abend,
vielleich geht es so?
Delphi-Quellcode:
// auch ein Prototyp:
function HoleNaechsteDatei: string; var SR: TSearchRec; begin SearchDir := VerzeichnisDerAktuellGeladenenDatei; if FindFirst(SearchDir + AktuellGeladeneDatei, faAnyFile, SR) = 0 then begin FindClose(SR); AendereDateimaske; // <<<<< nicht möglich!? if FindFirst(AndereDateimaske,faAnyFile,SR) = 0 then //if FindNext(SR) = 0 then DateiLaden(SR.Name); FindClose(SR); end; end; Grüße Klaus |
Re: Suchmaske nach FindFirst verändern?
Zitat:
|
Re: Suchmaske nach FindFirst verändern?
Zitat:
Weiß nicht, ob ich dich jetzt richtig verstanden habe... :gruebel: |
Re: Suchmaske nach FindFirst verändern?
Zitat:
|
Re: Suchmaske nach FindFirst verändern?
Zitat:
Aber vom Prinzip ist der Weg gleich ja, bis auf die Sache mit dem Namen Pfad und dem entsprechenden Vergleich. |
Re: Suchmaske nach FindFirst verändern?
> Verzeichnisinhalt (gefiltert) auflisten
> Verzeichnisüberwachung einrichten > > wird datei gelöscht, dann wird sie auch aus der Liste gelöscht (wenn sie da drinnen ist) > > wird eine Datei erstellt/reinkopiert, dann wird sie mit der Suchmaske verlichen und wenn es stimmt, dann wird sie an die Liste angehängt |
Re: Suchmaske nach FindFirst verändern?
Habe gerade den Vorschlag von Klaus01 und Daniel G probiert - funktioniert leider nicht:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin // Verzeichnis, das mehrere JPG-Dateien enthält: Form1.Caption := 'F:\test\test1.jpg'; end; procedure TForm1.btnGetNextFileClick(Sender: TObject); var SR: TSearchRec; begin if FindFirst(Form1.Caption, faAnyFile, SR) = 0 then begin FindClose(SR); if FindFirst('F:\test\*.jpg', faAnyFile, SR) = 0 then Form1.Caption := 'F:\test\' + SR.Name; FindClose(SR); end; end; |
Re: Suchmaske nach FindFirst verändern?
Zitat:
|
Re: Suchmaske nach FindFirst verändern?
Jetzt hab ich erst gerafft, was du willst... :wall:
Der Vorschlag von Himi, mit der Überwachung des Verzeichnis, dürfte dich zum Ziel führen... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:33 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz