![]() |
Dateinamen um 1 erhöhen.
Hallo Leute,
es geht um folgendes. Wenn im Windows ein neuer Ordner, Textdatei oder, oder erstellt wird heißt dieser "Neuer Ordner" der nächste "Neuer Ordner(2)" oder "Neu Text Document.txt" die nächste "Neu Text Document (2).txt" usw. Wie kann ich es in meiner App. machen das wenn ein Dateiname existiert ( FileExists) nicht erst die MsgBox kommt mit "wollen Sie die Datei überschreiben" sondern automatisch der Dateiname um eins erhöht wird. Ich weiß das ich es irgendwo gesehen habe aber ich finde es nicht mehr. :gruebel: Grüsse Axel |
Re: Dateinamen um 1 erhöhen.
hallo
Code:
das dann noch in einer schleife bearbeitet in der du zum beispiel alle dateien des ordners zählst und die schleife dann von 1 bis gezählte laufen lässt und schaust ob es die schon gibt!
var i: integer;
begin i := 0; if fileexists('name' + inttostr(i) + '.txt') then assignfile(fromf, 'name' + inttostr(i+1) + '.txt'; end; und dann eine neu anlegst die eins höher ist! |
Re: Dateinamen um 1 erhöhen.
Hallo,
ich habe es jetzt folgendermaßen gelöst. Und zwar will ich einfach mit SaveToFile den Inhalt von Memo1 in eine txt-Datei schreiben. Es geht bestimmt einfacher, aber so funktioniert es.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var StrPath: String; Search: TSearchRec; IntCounter: Integer; const StrExtension = '.txt'; begin StrPath := ExtractFilePath(ParamStr(0)) + 'datei'; if FindFirst(StrPath + '*' + StrExtension, faAnyfile, Search) <> 0 then begin // Datei speichern Memo1.Lines.SaveToFile(StrPath + StrExtension); end else begin IntCounter := 1; repeat StrPath := ExtractFilePath(ParamStr(0)) + 'datei(' + IntToStr(IntCounter) + ')' + StrExtension; Inc(IntCounter); until FindNext(Search) <> 0; Memo1.Lines.SaveToFile(StrPath); end; FindClose(Search); end; |
Re: Dateinamen um 1 erhöhen.
Danke für die Antworten.
Damit kann ich was anfangen. Gruß Axel :) |
Re: Dateinamen um 1 erhöhen.
Zitat:
Delphi-Quellcode:
var StrPath: String;
Search: TSearchRec; IntCounter: Integer; const StrExtension = '.txt'; begin StrPath := ExtractFilePath(ParamStr(0)); If (length(StrPath) > 0) and (StrPath[length(StrPath)] = '\') then Delete(StrPath, length(StrPath), 1); StrPath := StrPath + '\' + 'datei'; IntCounter := 0; If FileExists(StrPath + StrExtension) then begin IntCounter := 1; while FileExists(StrPath + IntToStr(IntCounter) + StrExtension) do Inc(IntCounter); end; If (IntCounter > 0) then StrPath := StrPath + IntToStr(IntCounter) + StrExtension else StrPath := StrPath + StrExtension); end; |
Re: Dateinamen um 1 erhöhen.
Wie wäre es denn hiermit:
(edit: Oh, der Delphi-Code rückt ja gar nicht automatisch ein... Naja, egal...)
Delphi-Quellcode:
Wenn du den OverWritePrompt des SaveDialogs auf FALSE lässt (Voreinstellung), dann fragt er nicht nach, wenn man einen bereits existierenden Dateinamen angibt, sondern speichert in die entsprechend nummerierte Datei.
function GetGoodFileName(FileName: String): String;
var tmp, path, ext: String; i: integer; begin ext:=ExtractFileExt(FileName); path:=copy(FileName, 1, length(FileName)-length(ext)); tmp:=FileName; i:=1; while NOT FileExists(tmp) do begin inc(i); tmp:=path + '(' + IntToStr(i) + ')' + ext; end; Result:=tmp; end; procedure TForm1.Button1Click(Sender: TObject); var tmp: String; begin if SaveDialog1.Execute then begin s:=GetGoodFileName(SaveDialog1.FileName); // todo : Speichern in s end; end; Der Thread ist zwar schon ein paar Tage alt, aber vielleicht hilft dir das ja doch noch... :bounce2: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:02 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