AGB  ·  Datenschutz  ·  Impressum  







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

While FileExists endlosschleife

Ein Thema von Innovation · begonnen am 3. Feb 2017 · letzter Beitrag vom 3. Feb 2017
Antwort Antwort
Innovation

Registriert seit: 12. Jan 2017
7 Beiträge
 
#1

While FileExists endlosschleife

  Alt 3. Feb 2017, 15:55
Delphi-Version: 5
Hallo

Ich versche gerade meinem Tool beizubringen Textdateien mit einer fortlaufenden Nummer (damit keine Datei überschrieben wird )zu erstellen.
Es wird außerdem das Datum mit in den Dateinamen geschrieben
Code:
var
  Datestring, sDir: string;
  f : TextFile;
  helpint : Integer;

begin

  DateString := DateToStr(now);
  helpint :=1;
  //HIER WIRD GEGEBENENFALLS EIN ORDNER ANGELEGT
  sDir :='C:\XML Compare Fehlerbericht\Fehlerbericht\';
  if not DirectoryExists(sDir)then
    ForceDirectories(sDir);
  //HIER MEINE ENDLOSSCHLEIFE
  if FileExists(sDir+(IntToStr(helpint))+'.'+datestring+'.txt') then
  begin
    while FileExists(sDir+(IntToStr(helpint))+'.'+datestring+'.txt')do
    begin
      Inc(helpint);
      AssignFile(f,sDir+(IntToStr(helpint))+'.'+datestring+'.txt');
      Rewrite(f);
      CloseFile(f);
    end;
  end;

  //WENN KEIN FILE DANN ERSTELLE FILE Z.B.(C:\XML Compare Fehlerbericht\Fehlerbericht\1.03.02.2017.txt)
  if not FileExists(sDir+IntToStr(helpint)+'.'+datestring+'.txt')then
    AssignFile(f,sDir+(IntToStr(helpint))+'.'+datestring+'.txt');
    Rewrite(f);
    CloseFile(f);
end;
Wie macht man das richtig?
Bin total festgefahren und acuh noch ein Anfänger^^

MfG
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

AW: While FileExists endlosschleife

  Alt 3. Feb 2017, 16:00
Naja wenn die Datei schon existiert erhöhst du helpInt um 1 und erstellst eine Datei mit dieser neuen Nummer.
Danach kommst du wieder zur while-Schleife die nachschaut ob die gerade angelegte Datei existiert (natürlich existiert sie - du hast sie ja gerade angelegt...)
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Innovation

Registriert seit: 12. Jan 2017
7 Beiträge
 
#3

AW: While FileExists endlosschleife

  Alt 3. Feb 2017, 16:10
Würde das dann nicht eine schon vorhandene datei überschrieben?

es Existieren:
1.03.02.2017.txt //if exist ... inc(helpint)
2.03.02.2017.txt // wird überschrieben
3.03.02.2017.txt
4.03.02.2017.txt

oder sehe ich das falsch?
  Mit Zitat antworten Zitat
Brainshock

Registriert seit: 26. Nov 2004
Ort: 37345
214 Beiträge
 
Delphi 7 Professional
 
#4

AW: While FileExists endlosschleife

  Alt 3. Feb 2017, 16:23
Code:
 
AssignFile(f,sDir+(IntToStr(helpint))+'.'+datestring+'.txt');
Rewrite(f);
CloseFile(f);
muss glaub ich aus der while-Schleife raus und dahinter landen.
Die while-Schleife muss nur das helpint erhöhen, bis die Datei nicht mehr gefunden wird.
Matthias
  Mit Zitat antworten Zitat
Innovation

Registriert seit: 12. Jan 2017
7 Beiträge
 
#5

AW: While FileExists endlosschleife

  Alt 3. Feb 2017, 16:27
Zitat:
muss glaub ich aus der while-Schleife raus und dahinter landen.
Die while-Schleife muss nur das helpint erhöhen, bis die Datei nicht mehr gefunden wird
Ohh mein Gott das ich das nciht selber gesehen habe.
Danke es funktioniert.
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.737 Beiträge
 
Delphi 6 Enterprise
 
#6

AW: While FileExists endlosschleife

  Alt 3. Feb 2017, 16:28
Sinnvoller / Einfacher ist es erst nur den Dateinamen zu ermitteln (Variable benutzen) und dann einmalig zu schreiben also sowas:

Delphi-Quellcode:
Filename:=sDir+(IntToStr(helpint))+'.'+datestring+'.txt';
while FileExists(Filename) do
  begin
  inc(helpint);
  Filename:=sDir+(IntToStr(helpint))+'.'+datestring+'.txt';
  end;
AssignFile(f,Filename);
    Rewrite(f);
    CloseFile(f);
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#7

AW: While FileExists endlosschleife

  Alt 3. Feb 2017, 16:32
Ich hätte da was (uralt und wohl nicht State of the Art)
Delphi-Quellcode:
procedure GetListofGenerationFiles(const muster:string;var liste:tstringlist);
begin
  liste.Clear;
  Liste:=DATEILISTE(muster+'.G*');
  liste.Sort;
end;

function GENERATEGENERATIONFILE(muster:string):string;
var
  i : integer;
  dummy: string;
  dint : string;
  fl : tstringlist;
begin
  i:=length(muster);
  while (i>0) and (muster[i]<>'.') and (muster[i]<>'\') do dec(i);
  if i>0 then begin
    if muster[i]='\then dummy:=muster
    else dummy:=copy(muster,1,i-1);
  end
  else
    dummy:=muster;
  fl:=tstringlist.create;
  GetListofGenerationFiles(dummy,fl);
  if fl.count=0 then i:=0
  else begin
    i:=strtoint(copy(fl[fl.count-1],length(fl[fl.count-1])-1,2));
    i:=i+1;
  end;
  dint:=inttostr(i);
  while length(dint)<2 do dint:='0'+dint;
  dummy:=dummy+'.G'+dint;
  fl.free;
  result:=dummy;
end;{-- GENERATEGENERATIONFILE -----------------------------}
Das schaut nach Dateien MUSTER+'.Gxxx' und liefert die nächste Nummer, bzw. den Dateinamen zurück.
Ich seh' gerade, da fehlt noch ein fl.sort sonst ist nicht sichergestellt, daß die Einträge wirklich sortiert sind.
Hinter DATEILISTE verbirgt sich ein getfirst/getnextfile.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  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 19: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