![]() |
Name für temporäre Datei erzeugen
Ich habe eine Routine CreateTempFile geschrieben, die einen Dateinamen für eine Temporäre Datei erzeugen soll:
CreateTempFile( Nummer der temporären Datei, index Mindestanzahl der Stellen der Nummernausgabe, digits (=4) Tildenersatz, divider (='~') VorlageString fmt (='~wdpai~$.tmp') ): string; Die einzelnen Zeichen des VorlageStrings sollen wie folgt behandelt werden: ~ wird durch den Wert des Parameters divider ersetzt $ wird durch die Nummernausgabe (in HEX) ersetzt alle anderen Zeichen werden in den Dateinamen übernommen.
Delphi-Quellcode:
Jetzt das Problem:
function CreateTempFile(index:word;digits:byte=4;divider:char='~';fmt:string='~wdpai~$.tmp'):string;
var i: byte; begin for i := 1 to Length(fmt) do if fmt[i]='~' then Result := Result+divider else if fmt[i]='$' then Result := Result+IntToHex(index,digits) else Result := fmt[i]; end; Ich habe die Funktion getestet:
Delphi-Quellcode:
Das Ergebnis war jedoch icht wirklich befriedigend: '.###'
CreateTempFile(0,2,'#','tmp$.~~~')
Immerhin haben die Tilden gefunzt - und der Punkt. Doch vom Rest keine Spur. |
Re: Name für temporäre Datei erzeugen
Die Funktionen GetTempPath und GetTempFileName kennst du aber? ;-)
Oder warum muss der Name der Datei so kompliziert sein? Dieser Beitrag könnte dich auch interessieren: ![]() |
Re: Name für temporäre Datei erzeugen
Hallo,
muss das nicht
Delphi-Quellcode:
heißen?
else Result := Result + fmt[i];
|
Re: Name für temporäre Datei erzeugen
![]() ![]() ![]() und noch die CodeLib ![]() Was passiert eigentlich, wenn die schon eine Datei, mit dem Namen von CreateTempFile, existiert? @nahpets: jupp, müßte es Zitat:
Nicht-Maskenzeichen löschten den vorherigen Result-String. der Punkt war das letzte Nicht-Maskenzeichen und stand somit noch drin ... nja und alle folgenen Maskenzeichen. [add] aber wenn es unbedingt so funktionieren soll: Schon mal was von StringReplace gehört?
Delphi-Quellcode:
Ich hätt das Ganze allerdings eher mit Format gelöst
function CreateTempFile(index: Word; digits: Byte = 4;
divider: Char='~'; fmt: String='wdpai%s%.*d.tmp'): String; begin Result := StringReplace(fmt, '~', divider, [rfReplaceAll]); Result := StringReplace(Result, '$', IntToHex(index, digits), [rfReplaceAll]); end; und die Maske etwas angepaßt.
Delphi-Quellcode:
function CreateTempFile(index: Word; digits: Byte = 4;
divider: Char='~'; fmt: String='wdpai%s%.*d.tmp'): String; begin Result := Format(fmt, [divider, digits, index]); end; |
Re: Name für temporäre Datei erzeugen
Zitat:
Das war das Problem. Zitat:
Zitat:
Eswäre wohl aber eine sinnvolle Lösung. Zitat:
|
Re: Name für temporäre Datei erzeugen
Das Problem an deinem Code ist allerdings, daß dieses einfach nur einen Namen zusammenstellt, anhand der Forgaben für diese Funktion (index, digits, divider und fmt),
aber dabei nicht sicherstellt, daß nicht schon eine Datei mit diesem Namen existiert. falls du dir die anderen Beispiele man ansiehst, wird dort noch geschaut ob der gewählte Name noch frei ist und wenn nicht, dann wird sooft der Name geändert, bis die Datei genutzt werden kann. und du kannst bei einigen der Funktionen auch ein anderes Verzeichnis angeben. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:36 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