AGB  ·  Datenschutz  ·  Impressum  







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

Freien Dateinamen finden

Ein Thema von N30N · begonnen am 25. Okt 2007 · letzter Beitrag vom 25. Okt 2007
Antwort Antwort
N30N

Registriert seit: 7. Aug 2007
78 Beiträge
 
#1

Freien Dateinamen finden

  Alt 25. Okt 2007, 09:41
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:
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;
Jetzt hab ich 2 Probleme:

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.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Freien Dateinamen finden

  Alt 25. Okt 2007, 09:43
Schau mal nach FindFirst/FindNext()
Markus Kinzler
  Mit Zitat antworten Zitat
N30N

Registriert seit: 7. Aug 2007
78 Beiträge
 
#3

Re: Freien Dateinamen finden

  Alt 25. Okt 2007, 10:05
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 :/
Ich bin ein Delphi-Anfänger.
  Mit Zitat antworten Zitat
Reinhard Kern

Registriert seit: 22. Okt 2006
772 Beiträge
 
#4

Re: Freien Dateinamen finden

  Alt 25. Okt 2007, 10:10
Zitat von N30N:
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.
...
.
Hallo,

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
  Mit Zitat antworten Zitat
Benutzerbild von nachti1505
nachti1505

Registriert seit: 7. Apr 2007
188 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Freien Dateinamen finden

  Alt 25. Okt 2007, 10:13
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;
  Mit Zitat antworten Zitat
Benutzerbild von nachti1505
nachti1505

Registriert seit: 7. Apr 2007
188 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Freien Dateinamen finden

  Alt 25. Okt 2007, 10:16
Zitat von Reinhard Kern:
Hallo,

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
Das setzt voraus, dass nur sein Programm die Dateien erstellt!!! Dem scheint aber nicht so:
Zitat:
Ich habe in meinem Verzeichniss Dateien mit dem Namen 1.txt,2.txt etc. liegen.
Für seine Aufgabenstellung ist es durchaus intelligent von eins an zu suchen.
  Mit Zitat antworten Zitat
N30N

Registriert seit: 7. Aug 2007
78 Beiträge
 
#7

Re: Freien Dateinamen finden

  Alt 25. Okt 2007, 10:36
Zitat von nachti1505:
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;

Das scheint mir ganz logisch zu sein, danke schonmal. Aber wozu dient das "procedure DoIt;" unter der Variablendeklaration?


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



//Edit:

Okay, hab ne Kleinigkeit verpennt, jetzt funktioniert es!

Danke
Ich bin ein Delphi-Anfänger.
  Mit Zitat antworten Zitat
Benutzerbild von peschai
peschai

Registriert seit: 15. Feb 2004
Ort: Göppingen
270 Beiträge
 
Delphi XE5 Professional
 
#8

Re: Freien Dateinamen finden

  Alt 25. Okt 2007, 10:44
schaut euch mal die windows API funktion an
GetTempFileName
Peter Schaible
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Freien Dateinamen finden

  Alt 25. Okt 2007, 10:57
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');
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  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 02:06 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