Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Encoding-Probleme mit GetEnvironmentVariable und FindFirst


Christian213 - Do 16.06.11 10:24
Titel: Encoding-Probleme mit GetEnvironmentVariable und FindFirst
Hallo zusammen,

ich werde hier noch wahnsinnig mit dem Problem. Habe inzwischen alle denkbaren Ansätze durchprobiert, aber finde keine Lösung:
Ich lese per "GetEnvironmentVariable" die Umgebungsvariable "APPDATA" aus, bastel mir einen Pfad zusammen und möchte dies dann an "FindFirst" übergeben, wo dann rekursiv mit FindNext usw. ein Verzeichnisbaum durchgesteppt wird.
Das klappt auch alles wunderbar, allerdings nicht wenn "APPDATA" Umlaute enthält, bspw. "C:\Users\Erich Kühl\AppData\Roaming". Diese werden irgendwie komplett falsch an FindFirst übergeben.
Auch ein manuelles Konvertieren mittels "OEMtoANSI" u.Ä. brachte keine Lösung.

Meine Fragen:

- Was für ein Encoding verwendet Windows standardmäßig bei den Environment-Variablen?
- Was erwartet Windows bei den FILE-API Funktionen wie FindFirst oder ExecuteProcess?
- Wie kann ich dies so konvertieren, dass es funzt?

Wie gesagt, ich habe etliche "müsste eigentlich so funktionieren"-Beispiele schon durch, wäre also toll wenn mir jemand ein Beispiel geben könnte was tatsächlich in der Praxis auch funktioniert. ;o)

Vielen Dank schon mal!

Gruß,
Christian


jaenicke - Do 16.06.11 10:41

Hallo und :welcome:

Lass einfach den Umweg mit der Umgebungsvariable weg und mach es gleich richtig. ;-)
http://www.delphi-library.de/viewtopic.php?t=9428


Christian213 - Do 16.06.11 11:11

Hallo Sebastian,

Danke für die Antwort.
Verstehe ich das richtig, dass die "SH-Funktionen" also alle bereits "save" was Umlaute angeht?

---Moderiert von user profile iconNarses: Beiträge zusammengefasst---

Funktioniert leider genauso wenig wie meine vorigen Versuche.
Aus meinem Test-Account "Ümüt Üzkäl" wird folgendes (siehe Screenshot).
Hier scheint also doch noch irgend eine Form des (De-)Codings benötigt zu werden.

---Moderiert von user profile iconNarses: Beiträge zusammengefasst---

Mein Fehler - funktioniert doch! Ich hatte nur im Code noch ein "AnsiToUTF8" vom Testen vergessen rauszunehmen *g* ;-)
Eine Frage hätte ich aber noch: Gibt es eine Möglichkeit die Funktion "GetSpecialFolder" von der verlinkten Seite auch ohne ActiveX zu bauen?
Ich bin mir nicht sicher, ob dies auch auf allen Zielsysteme verfügbar ist.

Danke!

Gruß,
Christian


jaenicke - Do 16.06.11 11:52

Das ist eine Standardfunktion der Windows-API. Solange du unter Windows (zumindest 2000 bis 7) bist, funktioniert die auch.


Christian213 - Do 16.06.11 11:58

Alles klar, tausend Dank! :-)