AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Dateinamen um 1 erhöhen.

Ein Thema von axellang · begonnen am 15. Jan 2004 · letzter Beitrag vom 20. Jan 2004
Antwort Antwort
axellang

Registriert seit: 3. Mai 2003
Ort: München
138 Beiträge
 
Delphi XE2 Enterprise
 
#1

Dateinamen um 1 erhöhen.

  Alt 15. Jan 2004, 09:37
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.

Grüsse

Axel
Alexander Lang
  Mit Zitat antworten Zitat
MikeS

Registriert seit: 3. Mai 2003
Ort: München
157 Beiträge
 
Delphi 7 Professional
 
#2

Re: Dateinamen um 1 erhöhen.

  Alt 15. Jan 2004, 09:41
hallo

Code:
var i: integer;

begin
i := 0;
if fileexists('name' + inttostr(i) + '.txt') then
assignfile(fromf, 'name' + inttostr(i+1) + '.txt';
end;
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!
und dann eine neu anlegst die eins höher ist!
Mike Schröder
  Mit Zitat antworten Zitat
Cuchulainn

Registriert seit: 26. Aug 2003
182 Beiträge
 
Delphi 5 Enterprise
 
#3

Re: Dateinamen um 1 erhöhen.

  Alt 15. Jan 2004, 10:00
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;
  Mit Zitat antworten Zitat
axellang

Registriert seit: 3. Mai 2003
Ort: München
138 Beiträge
 
Delphi XE2 Enterprise
 
#4

Re: Dateinamen um 1 erhöhen.

  Alt 15. Jan 2004, 12:33
Danke für die Antworten.
Damit kann ich was anfangen.

Gruß

Axel
Alexander Lang
  Mit Zitat antworten Zitat
scp

Registriert seit: 31. Okt 2003
1.120 Beiträge
 
Delphi 7 Personal
 
#5

Re: Dateinamen um 1 erhöhen.

  Alt 15. Jan 2004, 13:35
Zitat von Cuchulainn:
Es geht bestimmt einfacher, aber so funktioniert es.
Es mag zwar funktionieren, aber deine Variante mit FindFirst / FindNext findete auch Dateien wie "dateiX.txt" oder "dateihateinenlaengerennamen.txt" und nicht nur Zahlen. Von daher ist eine for-Schleife eleganter und zverlässiger:

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;
  Mit Zitat antworten Zitat
Neg

Registriert seit: 16. Jan 2004
Ort: Berlin
63 Beiträge
 
Delphi 5 Professional
 
#6

Re: Dateinamen um 1 erhöhen.

  Alt 20. Jan 2004, 22:51
Wie wäre es denn hiermit:

(edit: Oh, der Delphi-Code rückt ja gar nicht automatisch ein... Naja, egal...)

Delphi-Quellcode:
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;
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.

Der Thread ist zwar schon ein paar Tage alt, aber vielleicht hilft dir das ja doch noch...
  Mit Zitat antworten Zitat
Antwort Antwort


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 20:20 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