![]() |
Freien Dateinamen finden
Hi,
Ich habe in meinem Verzeichniss Dateien mit dem Namen 1.txt,2.txt etc. liegen. Mit meinem Code versuche ich, einen Dateinamen zu finden, der noch nicht vergeben ist.
Delphi-Quellcode:
Jetzt hab ich 2 Probleme:
var
i : integer; begin for i := 1 to 100 do begin if fileexists ('c:\' + inttostr(i) + '.txt') then edit28.text := ('Freie Zahl wird gesucht') else edit28.Text := inttostr(i); end; 1) Die for Schleife scheint nicht das beste zu sein, ich hätte am liebsten eine Schleife die ins unendliche geht. 2) Komischerweise wird nach der Abfrage im Editfeld immer "100" angezeigt. Normalerweise müsste doch, wenn es eine freie Stelle gibt, die passende Zahl im Editfeld erscheinen. Ich hab bestimmt nen Logikfehler :/ //Edit: Ahhh, Logikfehler gefunden ^^ Die Schleife wird ja immer wieder durchgelaufen, bis 100. Klar, dass dann 100 im Feld erscheint. |
Re: Freien Dateinamen finden
Schau mal nach FindFirst/FindNext()
|
Re: Freien Dateinamen finden
Also wenn ich den Delphi-Hilfe Text richtig verstanden habe, dann dient Findfirst / Findnext dazu, um Dateien zu finden. Aber ich suche ja ne einen freien Dateinamen.
Jedenfalls bekomm ich es so nicht gebacken :/ |
Re: Freien Dateinamen finden
Zitat:
es ist nicht sehr intelligent, jedesmal von 1 an zu suchen - ich würde im Programm einen Parameter "letzte Dateinummer" verwalten, so dass nach 10 Speichervorgängen automatisch eine Datei 11 angelegt wird. Die Schleife brauchst du trotzdem, weil ja was schiefgehen kann und die 11 bereits besetzt ist, dann must du wieder eine freie Nummer suchen, aber eben nur dann. Gruss Reinhard |
Re: Freien Dateinamen finden
Delphi-Quellcode:
var bFileFound: boolean;
i: Integer; procedure DoIt; begin bFileFound := false; i := 0; repeat inc(i); if not FileExists('C:\' + IntToStr(i) + '.txt') then bFileFound := true; until bFileFound; // nächste freie Dateinummer steht jetzt in i end; |
Re: Freien Dateinamen finden
Zitat:
Zitat:
|
Re: Freien Dateinamen finden
Zitat:
Das scheint mir ganz logisch zu sein, danke schonmal. Aber wozu dient das "procedure DoIt;" unter der Variablendeklaration?
Delphi-Quellcode:
Ausserdem gibts da noch ein kleines Problem. Ich musste das "procedure DoIt;" aus deinem Code löschen, da ich sonst nur Fehlermeldungen bekam. Wenn ich den Code jetzt ausführe, erscheint im Editfeld jedes Mal die Zahl 1. Die Datei 1.txt gibt´s allerdings schon, genau wie die Datei 2.txt... :(
var
bFileFound: boolean; i: Integer; begin bFileFound := false; i := 0; repeat inc(i); if not FileExists('C:\' + IntToStr(i) + '.txt') then bFileFound := true; until bFileFound; edit28.Text := inttostr(i); //Edit: Okay, hab ne Kleinigkeit verpennt, jetzt funktioniert es! :) Danke :) |
Re: Freien Dateinamen finden
schaut euch mal die windows API funktion an
Delphi-Quellcode:
GetTempFileName
|
Re: Freien Dateinamen finden
kurz und bündig:
Delphi-Quellcode:
var
i : Integer; begin i = 1; while FileExists('c:\' + inttostr(i) + '.txt') do inc(i); showmessage('Freier Dateiname: ' + 'c:\' + inttostr(i) + '.txt'); |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:49 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 by Thomas Breitkreuz