Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Non-Unicode Temp Folder (https://www.delphipraxis.net/163615-non-unicode-temp-folder.html)

nobby 7. Okt 2011 08:14

Non-Unicode Temp Folder
 
Hallo

Gibt es in Windows Vista/7 eine API-Funktion welche mir einen Pfad zu einem temporären Verzeichnis erstellt, welcher garantiert nur aus ASCII-Zeichen besteht - auch auf einem Chinesischen-Windows?

Ich habe eine 3rd-Party DLL, welche keine Unicode Verzeichnis- und Dateinamen kennt. Daher will ich die gebrauchten Dateien temporär in ein Verzeichnis kopieren, dessen Pfad keine Unicode-Zeichen (also nur ASCII) enthält.

Kann mir da jemand weiterhelfen? Bin für jeden Tip dankbar.

Grüsse Nobby

DeddyH 7. Okt 2011 08:32

AW: Non-Unicode Temp Folder
 
MSDN-Library durchsuchenGetTempPath gibt es in einer ANSI- und einer Unicode-Variante (GetTempPathA/GetTempPathW).

[edit] ASCII und ANSI verwechselt :oops:, Antwort passt somit gar nicht zur Frage.
Ich sollte noch einen Kaffee trinken :mrgreen: [/edit]

Bernhard Geyer 7. Okt 2011 08:47

AW: Non-Unicode Temp Folder
 
Zitat:

Zitat von nobby (Beitrag 1128992)
Gibt es in Windows Vista/7 eine API-Funktion welche mir einen Pfad zu einem temporären Verzeichnis erstellt, welcher garantiert nur aus ASCII-Zeichen besteht - auch auf einem Chinesischen-Windows?

Nö. Da das Temp-Verzeichnis seit einigen Jahren im User-Profil liegt wirst du das nicht bekommen. Jedoch wird Windows dafür sorgen das auch Nicht-Unicode-Fähige Programme über den 8.3-Namen einen verdauliche Pfadangabe bekommen.
Aber Grundsätzlich kannst du dich nicht darauf verlassen das nicht ein Win8/9/10 hier mal die 8.3er repräsentation abschafft.

himitsu 7. Okt 2011 09:06

AW: Non-Unicode Temp Folder
 
MSDN-Library durchsuchenGetShortPathName
Macht aus jedem Unicode-Pfad einen ANSI-Pfad ... alles nur noch 8.3-DOS-Pfadnamen

Wobei die ANSI-API das vermutlich auch selbst schon teilweise erledigen sollte, wenn der ein Name nicht in ANSI reinpaßt,
aber ASCII wird es nicht unbedingt werden. (außer wenn man alles eben direkt in 8.3 umwandelt)

nobby 7. Okt 2011 13:24

AW: Non-Unicode Temp Folder
 
Ich lege z.Z. ein eigenes Temp-Verzeichnis unter C:\ProgramData\Temp\MyApp\ an.
Kann ich mit dieser Methode sicher sein, dass "ProgramData" unter allen Windows-Sprachen immer so heisst oder lautet das auf einem Chinesischen Rechner wieder anders?

Bernhard Geyer 7. Okt 2011 13:32

AW: Non-Unicode Temp Folder
 
Zitat:

Zitat von nobby (Beitrag 1129110)
Ich lege z.Z. ein eigenes Temp-Verzeichnis unter C:\ProgramData\Temp\MyApp\ an.
Kann ich mit dieser Methode sicher sein, dass "ProgramData" unter allen Windows-Sprachen immer so heisst oder lautet das auf einem Chinesischen Rechner wieder anders?

Ich denke seit Windows Vista heißt C:\ProgramData immer C:\ProgramData. Abfragen solltest du es trotzdem immmer über die entsprechende WinAPI-Funktion.

himitsu 7. Okt 2011 14:06

AW: Non-Unicode Temp Folder
 
Jupp, das sollte jetzt überall so heißen.
Seit Win7 liegt das gebootete Windows auch immer auf C:\ (selbst wenn es nicht die erste Partition ist).

Sind wohl alles zugeständnisse an blöde Programmierer, welche hardgecodete Pfade nutzen. :?

Bernhard Geyer 7. Okt 2011 14:14

AW: Non-Unicode Temp Folder
 
Zitat:

Zitat von himitsu (Beitrag 1129119)
Sind wohl alles zugeständnisse an blöde Programmierer, welche hardgecodete Pfade nutzen. :?

Und ich hab mich noch zurückgehalten mit diesem Kommentar 8-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:52 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 by Thomas Breitkreuz