Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi GetDisplayNameOf und Sonderzeichenproblem (https://www.delphipraxis.net/33216-getdisplaynameof-und-sonderzeichenproblem.html)

hitzi 3. Nov 2004 12:46


GetDisplayNameOf und Sonderzeichenproblem
 
Hallo,

ich ermittel mit folgenden Code den Displaynamen eines Objektes:
Code:
Res := Folder.GetDisplayNameOf(Pidl, Flags, StrRet);
Ausgeben lass ich den Namen mit folgenden Code:
Code:
Memo1.Lines.Add(StrRet.pOleStr);
Obiger Code ist auf die relevanten Teile beschränkt worden und funktioniert soweit ganz gut.
Anders sieht es allerdings aus, wenn zum Beispiel der Name der Textdatei mit dem Namen "ěščřžůň.txt" ermittelt werden soll. "StrRet.pOleStr" liefert dann "ešcržun.txt" zurück, wobei š und ž ein schwarzer Balken im Memo ist.

Wie kann ich mit GetDisplayNameOf auch Dateien mit Sonderzeichen ermitteln?

MfG
Hitzi


[EDIT]
Bei Abschicken des Post ist mir der Explorer abgeschmiert. Sollte das mit den Zeichen zusammenhängen?

Luckie 3. Nov 2004 12:51

Re: GetDisplayNameOf und Sonderzeichenproblem
 
Sollten das Unicode zeichen sein, wirst du sie in einem normalen Memo nie dargestellt bekommen, das die VCL Komponenten kein Unicode unterstützen.

hitzi 3. Nov 2004 13:11

Re: GetDisplayNameOf und Sonderzeichenproblem
 
Danke für den Hinweis Luckie. Gibt es einen Weg diese Unicode zeichen so umzuwandeln, dass das korrekte Zeichen angezeigt wird?

Hitzi

sakura 3. Nov 2004 13:16

Re: GetDisplayNameOf und Sonderzeichenproblem
 
Zitat:

Zitat von hitzi
Danke für den Hinweis Luckie. Gibt es einen Weg diese Unicode zeichen so umzuwandeln, dass das korrekte Zeichen angezeigt wird?

Keinen garantierten. Aber schaue Dir mal die Bei Google suchenUnicode Controls von Mike Lischke an, die helfen Dir ;)

...:cat:...

Bernhard Geyer 3. Nov 2004 14:10

Re: GetDisplayNameOf und Sonderzeichenproblem
 
Für Unicode und Oberflächencontrols hast Du bei Delphi nur 2 Möglichkeiten: ElPack oder TNT-Controls.
TNT-Controls sind kostenlos, jedoch sind die Elpack-Controls Enhanced-Controls.

Für einen Einstieg in Delphi+Unicode kannst Du auch meinen Artikel We are a world in der Ausgabe 5.2003 der Zeitschrift "Der Entwickler" durchlesen.

hitzi 3. Nov 2004 15:58

Re: GetDisplayNameOf und Sonderzeichenproblem
 
Danke für eure Antworten.

Ein Control muss es nicht unbedingt sein. Ich möchte nur, dass der Dateiname so ermittelt wird, dass ich diese Datei später öffnen kann (mit assignfile, reset). Gibt es keine einfache Umwandlung eines Unicode Strings in einen normalen String?

Thomas

Bernhard Geyer 3. Nov 2004 18:13

Re: GetDisplayNameOf und Sonderzeichenproblem
 
Zitat:

Zitat von hitzi
Ich möchte nur, dass der Dateiname so ermittelt wird, dass ich diese Datei später öffnen kann (mit assignfile, reset)

Dann brauchst Du die TNT-Controls. Diese bieten Fileoperationen für Unicode-Dateinamen an. Für das ElPack ist dies erst angedacht. AssignFile/Reset können nicht mit Unicode-Dateinamen umgehen.

Zitat:

Zitat von hitzi
Gibt es keine einfache Umwandlung eines Unicode Strings in einen normalen String?

Diese einfach Umwandlung hast Du doch schon im obigen Fall. Alle Zeichen, die in der aktuellen Codepage mit einem (Ansi-)String nicht dagestellt werden können, werden konvertiert. In vielen Fällen wird dann aus diesem Sonderzeichen ein Fragezeichen.
In Fällen in denen du mit Unicode-Zeichen arbeiten mußt, jedoch z.B. für Transfers mit Ansi-String arbeiten mußt, kannst Du eine konvertierung in UTF-8 vornehmen.

hitzi 4. Nov 2004 06:14

Re: GetDisplayNameOf und Sonderzeichenproblem
 
Guten Morgen :)

Dann gibt es eben für das laufende Projekt kein Unicode Support :roll:
Den hätte ich nur noch hinzugefügt, wenn's relativ unkompliziert funktioniert hätte.

Kann Assignfile, ... eigentlich mit UTF8 umgehen? Wird Delphi 9 Unicode unterstützen?

[EDIT]
Wie ist das eigentlich, wenn das Programm auf einem System mit einer anderen Codepage läuft? Bei dem Textbeispiel von oben läufts auf einem Rechner mit der Codepage 1250 (tschechisch). Dann müsste es doch die Zeichen automatisch verwenden, wie bei uns das ÖÄÜ, oder?

Bernhard Geyer 4. Nov 2004 07:24

Re: GetDisplayNameOf und Sonderzeichenproblem
 
Zitat:

Zitat von hitzi
Dann gibt es eben für das laufende Projekt kein Unicode Support :roll:
Den hätte ich nur noch hinzugefügt, wenn's relativ unkompliziert funktioniert hätte.

Voller Unicode-Support bedeutet einige Umstellungs- und Testaufwand :-)

Zitat:

Zitat von hitzi
Kann Assignfile, ... eigentlich mit UTF8 umgehen?

Nein. Mußt Du selbst programmieren (aber sind nur wenige Zeilen, da es ja fertige Encode- und Decodefunktionen gibt.

Zitat:

Zitat von hitzi
Wird Delphi 9 Unicode unterstützen?

Teilweise ja. WinForms - Ja. Oberfläche nur ab NT, VCL.NET - Größtenteils ja. Oberfläche nur ab NT, VCL.Win32 - Teilweise, keine Oberfläche. IDE soll es größtenteils unterstützen.

Zitat:

Zitat von hitzi
Wie ist das eigentlich, wenn das Programm auf einem System mit einer anderen Codepage läuft? Bei dem Textbeispiel von oben läufts auf einem Rechner mit der Codepage 1250 (tschechisch). Dann müsste es doch die Zeichen automatisch verwenden, wie bei uns das ÖÄÜ, oder?

Auf einem tchechishen Rechner (Codepage 1250) werden obige Sonderzeichen genauso gut funktionieren, wie auf einem deuten Rechner (Codepage 1252) unsere Sonderzeichen (äüöÛîúÿ). Alles was Latin Extended-A definiert ist, wird dort keine Probleme verursachen.

hitzi 4. Nov 2004 07:34

Re: GetDisplayNameOf und Sonderzeichenproblem
 
Danke für die Infos. :thumb:


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