AGB  ·  Datenschutz  ·  Impressum  







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

Datein durchnummeriert speichern

Ein Thema von darky95 · begonnen am 3. Jun 2014 · letzter Beitrag vom 3. Jun 2014
Antwort Antwort
darky95

Registriert seit: 7. Okt 2013
11 Beiträge
 
#1

Datein durchnummeriert speichern

  Alt 3. Jun 2014, 15:39
Hi Leute, hoffe ich bin hier jetzt richtig gelandet

Bin dabei eine kleine Auswertung zu Programmieren und will nun eingegebene Daten in txt's speichern! Für jeden Datensatz (Name, Vorname, Verein etc) soll eine extra txt erstellt werden! Und die sollen durchnummeriert sein (von 1 bis x)! Komme nur nicht auf den passenden ansatz!
Code:
procedure TForm2.btnHinzuClick(Sender: TObject);

var List:TStrings;
begin

  Teilnehmer.Name:=edtName.Text;
  Teilnehmer.Vorname:=edtVorname.Text;
  Teilnehmer.Verein:=edtVerein.Text;
  Teilnehmer.Ort:=edtOrt.Text;
  Teilnehmer.BK:=edtBK.Text;

  List:=TStringList.create;

  try
    List.Add(Teilnehmer.Name);
    List.Add(Teilnehmer.Vorname);
    List.Add(Teilnehmer.Verein);
    List.Add(Teilnehmer.Ort);
    List.Add(Teilnehmer.BK);


    if not DirectoryExists('C:/Turnierauswertung/Schuetzen/') then ForceDirectories('C:/Turnierauswertung/Schuetzen/');
    List.SaveToFile('C:/Turnierauswertung/Schuetzen/'+ {hier fehlt was!} +'.txt') ;
  finally
    List.Free;
  end;



  end;
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#2

AW: Datein durchnummeriert speichern

  Alt 3. Jun 2014, 15:47
Hallo,

ich hatte mal die gleiche Anforderung.

Ich hab´s so gelöst, dass ich prüfe, ob der Dateiname (inkl. der Nummerierung) vorhanden ist.
Ist der Dateiname vorhanden, zähl ich hoch und prüf wieder, bis der Dateiname nicht mehr
vorhanden ist. Das ist dann der nächst freie Dateiname.

Hier mal mein Code:
Delphi-Quellcode:
function SicherungName(Pfad, DateiName, Endung: String): String;
var
  i: Integer;

begin
  //Variablen vordefinieren
  Result := '';
  i := 1;

  //Pfad mit einem Backslash enden lassen
  Pfad := IncludeTrailingPathDelimiter(Pfad);

  while true do
    begin
      //Dateinamen zusammenstellen
      Result := Pfad + Format('%s%.3d.%s', [DateiName, i, Endung]);

      //wenn Datei nicht vorhanden, dann Schleife beenden
      If not FileExists(Result) then
        break;

      inc(i);
    end;
end;
Hat nur einen Schönheitsfehler. Löscht man eine Datei mit kleiner Nummer, so
wird automatisch aufgefüllt. Z. B. es gibt Test01, Test02 und Test03 und man
löscht Test02, so wird beim nächsten Speichern in Test02 und dann wieder ab
Test04 gespeichert.
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.152 Beiträge
 
Delphi 12 Athens
 
#3

AW: Datein durchnummeriert speichern

  Alt 3. Jun 2014, 16:04
Hat nur einen Schönheitsfehler. Löscht man eine Datei mit kleiner Nummer, so
wird automatisch aufgefüllt. Z. B. es gibt Test01, Test02 und Test03 und man
löscht Test02, so wird beim nächsten Speichern in Test02 und dann wieder ab
Test04 gespeichert.
Gut, man könnte einfach nochmal die nächsten 10 Dateien prüfen, ob es da nicht eventuell was gibt,
aber dann löscht jemand mal 11 Dateien und man hat wieder das Problem. (Meist) Unnötig viele Dateien zu Prüfen ist aber auch bissl blöd.



Man könnte aber auch eine Vergleichsmaske generieren, dann geht man durch das Verzeichnis und sucht alle Dateien, welcher dieser Maske entsprechen.
Nun initialisiert man seinen Startwert, für die Zählung und geht dann diese Dateinamen durch, extrahiert aus dem Namen die Nummer und schaut, ob sie größer oder gleich der eigenen Nummer ist, wenn ja, dann erhöht man seine Nummer (aktuell=ausgelesen+1) und geht die Namen weiter durch. Am ende hat man dann immer die höchste Nummer.

OK, wenn jemand die letzte Nummer löscht, dann würde diese Nummer "doppelt" vorkommen.
In diesem Fall muß man praktisch irgendwo anders die zuletzt verwendete Nummer speichern und verwendet dann immer Diese, so wie bei den Indexfeldern (Serial) in den Tabellen einer Datenbank.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#4

AW: Datein durchnummeriert speichern

  Alt 3. Jun 2014, 16:12
Ich hab meine Methode mal für eine Screenshot-Software benötigt, die die erzeugten Bilder automatisch speichert.
So hat automatisch jedes Bild einen eigenen Dateinamen, der auch noch durchnummeriert ist. Deswegen hab ich keinen
Wert darauf gelegt, dass es immer aufwärts gezählt sondern einfach ein freier Dateiname genutzt wird.
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Datein durchnummeriert speichern

  Alt 3. Jun 2014, 16:32
Und wenn man statt einer Nummerierung einen Dateinamen aus Datum und Uhrzeit wählt? Im Bezug auf Sortierung etc. wäre das genauso einfach zu handhaben.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Mikkey

Registriert seit: 5. Aug 2013
265 Beiträge
 
#6

AW: Datein durchnummeriert speichern

  Alt 3. Jun 2014, 16:38
Vorschlag:

Lies das Verzeichnis nach Dateien nach Deinem Muster (z.B. Personxxxxx.txt) durch.

Suche den höchsten xxxxx-Wert und beginne dann mit xxxxx+1.

Die Zeile hieße dann:

Delphi-Quellcode:
var
  lfd: Integer;
...
  {bestimme lfd}
  ...
  List.SaveToFile(Format('C:/Turnierauswertung/Schuetzen/Person%.05d.txt', [lfd])) ;
  Mit Zitat antworten Zitat
alda

Registriert seit: 24. Mär 2014
Ort: Karlsruhe
93 Beiträge
 
Delphi XE6 Architect
 
#7

AW: Datein durchnummeriert speichern

  Alt 3. Jun 2014, 16:42
Bist Du denn gezwungen die Daten so abzulegen? Wenn nicht, würde ich das eventuell nochmal überdenken.

Vielleicht hilft es, wenn Du Deine eigentlichen Anwendungsfall etwas näher beschreibst
  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 10:31 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