Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi eindeutigen Namen zum speichern (https://www.delphipraxis.net/152171-eindeutigen-namen-zum-speichern.html)

Cogito 14. Jun 2010 09:59

eindeutigen Namen zum speichern
 
Hallo zusammen,

sicher haben viele schon einmal vor dem gleichen Problem gestanden. Innerhalb meines Programmes gibt es die Möglichkeit automatisiert pdf-Dateien zu erzeugen. Das Problem ist hierfür eindeutige Namen zu erzeugen. Wie könnte einem Benutzer so etwas ermöglicht werden, bzw. sollte es überhaupt einem Benutzer zugänglich sein oder besser vollautomatisch geschehen? Gibt es hierfür bereits fertige Routinen?

freak4fun 14. Jun 2010 10:02

AW: eindeutigen Namen zum speichern
 
SaveDialog wäre eine Möglichkeit, oder werden die automatisch generiert? Dann könntest du den Benutzer einen Namen angeben lassen und anschließend durchnummerieren.

Thomas Horstmann 14. Jun 2010 10:03

AW: eindeutigen Namen zum speichern
 
Am besten eine UID erstellen, die ist immer eindeutig.

Delphi-Quellcode:
function GetGUID : String;
var
iGUID : TGUID ;
begin
{ Anlegen }
CreateGUID(iGUID) ;
{ Rückgabe }
Result := GUIDToString(iGUID) ;
end ;

Aurelius 14. Jun 2010 10:21

AW: eindeutigen Namen zum speichern
 
Eine Möglichkeit wäre, dass der Nutzer einen Teil des Dateinamens selbst bestimmen darf (bzw. dieser von dir mit einem sinnvollen Begriff vorgegeben wird) und du den Rest mit der aktuellen Zeit/Datumsangabe generierst, also z.B. "Backup - 01.01.2010 - 10:30:34.pdf". Das sollte sich recht einfach umsetzen lassen.

Eine GUID ist natürlich auch eine Variante, allerdings lässt der Name dabei keine Rückschlüsse auf den Inhalt der Datei zu bzw. erschwert die Suche nach bestimmten Dateien.

kuba 14. Jun 2010 10:34

AW: eindeutigen Namen zum speichern
 
Hy,

soll der Benutzer denn Einfluss auf den Namen haben ??

Delphi-Quellcode:
Daten.SaveToFile(ExtractFilepath(Application.Exename)+'MeinEigenerDateiName'+((FormatDateTime('dd.mm.yyyy - hh:MM:ss', now);

kuba

Aurelius 14. Jun 2010 10:52

AW: eindeutigen Namen zum speichern
 
Was mir gerade noch einfällt:

Natürlich kann man unter Windows den Doppelpunkt nicht innerhalb eines Dateinamens verwenden. Hab ich vorhin in aller Eile nicht bedacht :stupid:

Cogito 14. Jun 2010 14:37

AW: eindeutigen Namen zum speichern
 
Zitat:

Zitat von Aurelius
Eine Möglichkeit wäre, dass der Nutzer einen Teil des Dateinamens selbst bestimmen darf (bzw. dieser von dir mit einem sinnvollen Begriff vorgegeben wird) und du den Rest mit der aktuellen Zeit/Datumsangabe generierst, also z.B. "Backup - 01.01.2010 - 10:30:34.pdf". Das sollte sich recht einfach umsetzen lassen.

Eine GUID ist natürlich auch eine Variante, allerdings lässt der Name dabei keine Rückschlüsse auf den Inhalt der Datei zu bzw. erschwert die Suche nach bestimmten Dateien.

Glaubst Du ein Zeitstempel auf Sekundenbasis ist ausreichend? Ich stelle mir gerade so einen Massenexport von Dateien auf einer sehr schnellen Kiste vor...

Aurelius 14. Jun 2010 14:57

AW: eindeutigen Namen zum speichern
 
Du kannst natürlich auch noch die Milisekunden bei der Namensgenerierung berücksichtigen, das sollte dann keine Probleme mehr aufwerfen.

David Martens 14. Jun 2010 19:28

AW: eindeutigen Namen zum speichern
 
Also ich habe das so gelöst:

Delphi-Quellcode:
function RenameFile(sFileName : string) : string;
var
  sjetzt, NewFileName : string;
  count : integer;
begin
  Result := sFileName;
  NewFileName := sFileName;
  count := 0;
  while SysUtils.FileExists(NewFileName) and (count < 255)
  do begin
    inc(count);
    NewFileName := sFileName;
    DateTimeToString(sjetzt, 'dd.mm.yyyy hh_nn_ss', now);
    Insert('(' + sjetzt + ')', sFileName, Pos(ExtractFileExt(sFileName), sFileName));
  end;
  if CompareStr(sFileName , NewFileName) <> 0
  then
    Result := NewFileName;
end;
Den SaveFiledialog kann man auch auf FileExists kombinieren.

Gruß David


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:58 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