Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Versionsnamen wechseln (https://www.delphipraxis.net/160044-versionsnamen-wechseln.html)

Dunkelbunt27 25. Apr 2011 15:36

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

Zacherl 25. Apr 2011 15:42

AW: Versionsnamen wechseln
 
Was genau ist das Problem? Die Versionsnummer auszutauschen oder zu erkennen, ob das Programm neu gestartet wurde?

Dunkelbunt27 25. Apr 2011 15:44

AW: Versionsnamen wechseln
 
Die Versionnummer zu tauschen.

himitsu 25. Apr 2011 15:44

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:

Die Versionnummer zu tauschen.
Delphi-Quellcode:
Dateiname := 'Übungstext_v%d.csv';
.
zusammen mit Delphi-Referenz durchsuchenFormat und einer bei 1 beginnenden Schleifenvariable kann man nun in einer Schleife prüfen ob die Datei schon existiert.
Wenn ja, dann Hochzählen und weiterprüfen.
Wenn nicht, dann hast du deinen Dateinamen.

Zacherl 25. Apr 2011 15:45

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'));

Dunkelbunt27 25. Apr 2011 15:47

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.

Zacherl 25. Apr 2011 15:52

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:

Zitat von Dunkelbunt27 (Beitrag 1096817)
Danke für das Ini-File, ich versuch erstmal ohne zusätzliche Datei klar zu kommen.

Die Ini war auch nur ein Beispiel. Du meintest ja, dass du die Versionsnummer sowieso speicherst. Dann kannst du sie natürlich auch aus deiner Config laden und entsprechend beim Programmstart inkrementieren und zurückspeichern.

Dunkelbunt27 25. Apr 2011 15:55

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?

Dunkelbunt27 25. Apr 2011 16:38

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:
Dateiname := Übung_v1.csv;
NeuerName := Format(Dateiname+'_v%d.csv',[i]);
Dann kommt doch nicht Übung_v2.csv raus, oder?

Kann man nicht mit
Delphi-Quellcode:
Pos(string)
die Stelle vom '_v' im String ermitteln und das und nachfolgende mit
Delphi-Quellcode:
delete(string)
löschen?
Dann hätte man den Dateinamen ohne '_v1'.

himitsu 25. Apr 2011 16:58

AW: Versionsnamen wechseln
 
Dort werden fortlaufend nummerierte Dateinamen erstellt.
http://www.delphipraxis.net/111851-t...-loeschen.html
http://www.delphipraxis.net/65701-ge...e-fileext.html


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:00 Uhr.
Seite 1 von 2  1 2      

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