Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Temp-Ordner (https://www.delphipraxis.net/206830-temp-ordner.html)

Willie1 2. Feb 2021 16:52

Temp-Ordner
 
Hallo,
eine kurze Zwischenfrage:
ich will einen temporären Ordner anlegen. Gibt es dazu bestimmte Regeln, die ich beachten sollte, oder kann ich eine zufällige Zeichenfolge mit Random erstellen?
Willie.

himitsu 2. Feb 2021 16:59

AW: Temp-Ordner
 
Delphi-Referenz durchsuchenTPath.GetTempFileName

Willie1 2. Feb 2021 17:52

AW: Temp-Ordner
 
Das hatte ich schon ausprobiert, es wird kein Ordner sondern eine Datei im Temp-Ordner angelegt.

TempPa := TPath.GetTempPath + TPath.GetRandomFileName;

So geht es!

stifflersmom 2. Feb 2021 18:23

AW: Temp-Ordner
 
gelöscht

himitsu 2. Feb 2021 18:54

AW: Temp-Ordner
 
Jupp, es wird schonmal eine Datei angelegt, damit der Platz besetzt ist und du bekommst den Namen.
Dann kannst in Ruhe diese Datei nutzen oder mit was Neuem überschreiben.

Die leere Datei wird angelegt, für den fast "unwahrscheinlichen" Fall, dass zwei Aufrufe/Programme den selben Namen liefern (was diese Funktion damit abfängt),
außerdem wird auch gleich die Schreibbarkeit des Verzeichnisses geprüft.


[edit] ach so, einen Unterordner im Temp-Order, für weitere Dateien ... nicht nur einen Dateinamem im Temp-Ordner.
OK, dann kannst dir auch den Dateinamen so generieren lassen und ihn als Verzeichnisname benutzen.

Oder zu kannst die erstellte Datei löschen und sofort durch ein TDirectory.Create ersetzen.
Wenn du hier direkt CreateDirectory mit ERROR_ALREADY_EXISTS verwendest (nach einem DeleteFile) dann kannst die Konfliktprüfung des TPath.GetTempFileName entsprechend fortsetzen.
Bei ERROR_ALREADY_EXISTS einfach nochmal TPath.GetTempFileName ausführen. (das TPath.GetTempFileName/DeleteFile/CreateDirectory gemütlich in eine Repeat-Until-Schleife rein)

Alternativ dein TPath.Combine(TPath.GetTempPath, TPath.GetRandomFileName) mit CreateDirectory+ERROR_ALREADY_EXISTS. (hier auch beim ERROR_ALREADY_EXISTS nochmal einen neuen Namen)


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