![]() |
Versionsnamen wechseln
Hallo Leute,
die erste gespeicherte Datei soll Datei_v1.csv heißen. Beim normalen Speichern soll die Datei überschrieben werden (ist kein Problem). Schließt man das Programm und öffnet diese Datei dann erneut, soll die Datei beim Speichern nicht überschrieben werden, sondern es soll (im gleichen Verzeichnis) die Datei_v2.csv erstellt werden. usw. Bsp: Name: Übungstext Gespeicherte Datei: Übungstext_v1.csv <Programm geschlossen und neu geöffnet (z.B. an neuem Tag)> Name: Übungstext (NICHT Übungstext_v1.csv) Gespeicherte Datei: Übungstext_v2.csv Hat jemand eine Idee wie man das realisieren könnte? FG Dunkelbunt |
AW: Versionsnamen wechseln
Was genau ist das Problem? Die Versionsnummer auszutauschen oder zu erkennen, ob das Programm neu gestartet wurde?
|
AW: Versionsnamen wechseln
Die Versionnummer zu tauschen.
|
AW: Versionsnamen wechseln
Bei Programmstart wird geschaut was die letzte Datei ist und entsprechend ein neuer Dateiname generiert.
Wärend das Programm läuft wird dann immer dieser Name zum Speichern genutzt. Zitat:
Delphi-Quellcode:
.
Dateiname := 'Übungstext_v%d.csv';
zusammen mit ![]() Wenn ja, dann Hochzählen und weiterprüfen. Wenn nicht, dann hast du deinen Dateinamen. |
AW: Versionsnamen wechseln
Am geeignesten wäre wohl eine .ini Datei, in der du das Prefix ablegst, z.b. "Übungstext" und die aktuelle Versionsnummer. Beim Programmstart lädst du das Prefix und die Versionsnummer, wobei du letztere inkrementierst und den neuen Wert in die .ini zurückschreibst. Zum Speichern hängst du das Prefix und die Versionsnummer aneinander und speicherst unter diesem Namen. Diese Methode überschreibt während einer "Session" die aktuelle Datei, benutzt aber beim nächsten Start eine erhöhte Versionsnummer.
Delphi-Quellcode:
// Programmstart
var Ini: TIniFile; begin Ini := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'Settings.ini'); try MyPrefix := Ini.ReadString('File', 'Prefix', 'Default'); MyVersion := Inc(Ini.ReadInteger('File', 'Version', 0)); Ini.WriteInteger('File', 'Version', MyVersion); finally Ini.Free; end; end; // Speichern MyStringList.SaveToFile(ExtractFilePath(ParamStr(0) + MyPrefix + IntToStr(MyVersion) + '.csv')); |
AW: Versionsnamen wechseln
Also, die Versionsnummer speichere ich immer mit. Ich könnte auch den Dateinamen und Versionsnummer speichern, doch wenn der User nachträglich die Datei umbenennt dann gibts doch sicher Probleme, oder?
Edit: @ himitsu Das könnte gehen, ich schau mal. @ Zacherl Danke für das Ini-File, ich versuch erstmal ohne zusätzliche Datei klar zu kommen. |
AW: Versionsnamen wechseln
Wenn der User den Dateinamen nachträglich per Hand ändert, gibt es sowohl bei meiner, als auch bei himitsu Methode Probleme. Aber normalerweise sollte kein Anwender sowas machen. Ich meine ich bennene ja auch nicht mal eben explorer.exe um und erwarte, dass alles noch funktioniert :D
Kannst ja eine Umbenennen Funktion in dein Programm mit einbauen, die alles regelt. Edit: Zitat:
|
AW: Versionsnamen wechseln
Naja,
bei meinem Programm handelt es sich um Dateien, die man öfter bearbeitet und durchaus umbenennen kann, wie eine Worddatei umbenannt wird... Das ist das Problem... Dann nehmen wir mal an jemand ändert den Namen nicht. Wäre das mit Format dann nicht der kürzeste Weg? |
AW: Versionsnamen wechseln
@himitsu's Vorschlag
Wenn die letzte Datei Übung_v1.csv heißt und man sie läd und dann folgendes anwendet:
Delphi-Quellcode:
Dann kommt doch nicht Übung_v2.csv raus, oder?
Dateiname := Übung_v1.csv;
NeuerName := Format(Dateiname+'_v%d.csv',[i]); Kann man nicht mit
Delphi-Quellcode:
die Stelle vom '_v' im String ermitteln und das und nachfolgende mit
Pos(string)
Delphi-Quellcode:
löschen?
delete(string)
Dann hätte man den Dateinamen ohne '_v1'. |
AW: Versionsnamen wechseln
Dort werden fortlaufend nummerierte Dateinamen erstellt.
![]() ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:34 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz