Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
Delphi 12 Athens
|
AW: Temp-Ordner
2. Feb 2021, 19:54
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)
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
Geändert von himitsu ( 2. Feb 2021 um 20:08 Uhr)
|