Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#9

Re: Problem bei Datei-Erstellung

  Alt 16. Jun 2008, 10:46
Hallo,

solange die Datei 0.txt nicht existiert, bleibt wahrscheinlich deine FileListBox leer und deine Schleife wird garnicht erst betreten - ergo wird auch die Datei 0.txt nie angelegt.

Delphi-Quellcode:
function NextFileNumber(dir, ext: string): Integer;
begin
  dir := IncludeTrailingPathDelimiter(dir);
  Result := 0;
  while FileExists(Format('%s%d%s', [dir, Result, ext])) do
    Inc(Result);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  n: integer;
begin
  n := NextFileNumber(S_DIR, '.txt');
  Memo1.Lines.SaveToFile(IntToStr(n) + '.txt');
  FileListBox1.Update;
end;
Diese Methode funktioniert bei einer kleinen Anzahl Dateien, aber besser wäre es, wenn du dir einfach die zuletzt verwendete Dateinummer merkst. In einer Single-User Umgebung ist das trivial, bei mehreren Benutzern würde ich das Verzeichnis überwachen.

EDIT:

Wenn du alle Dateinamen sowieso in einer FileListBox vorhältst, dann kannst du die Funktion NextFileNumber() auch ohne Zugriff auf das Dateisystem implementieren.

Delphi-Quellcode:
function NextFileNumber(files: TStrings): Integer;
var
  i, n, nMax: Integer;
begin
  nMax := -1;
  for i := 0 to Pred(files.Count) do
  begin
    n := StrToIntDef(ChangeFileExt(ExtractFileName(files[i]), ''), -1);
    if n > nMax then
      nMax := n;
  end;
  Result := Succ(nMax);
end;
Die Semantik ist hier aber geringfügig anders - Lücken werden nicht berücksichtigt.

Getippt und nicht getestet.

Grüße vom marabu
  Mit Zitat antworten Zitat