AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi GetDisplayNameOf und Sonderzeichenproblem
Thema durchsuchen
Ansicht
Themen-Optionen

GetDisplayNameOf und Sonderzeichenproblem

Ein Thema von hitzi · begonnen am 3. Nov 2004 · letzter Beitrag vom 4. Nov 2004
Antwort Antwort
Benutzerbild von hitzi
hitzi

Registriert seit: 2. Jan 2003
Ort: Eibau
768 Beiträge
 
Delphi 2010 Professional
 
#1

GetDisplayNameOf und Sonderzeichenproblem

  Alt 3. Nov 2004, 13:46
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?
Thomas
Besucht doch mal http://www.hitziger.net
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: GetDisplayNameOf und Sonderzeichenproblem

  Alt 3. Nov 2004, 13:51
Sollten das Unicode zeichen sein, wirst du sie in einem normalen Memo nie dargestellt bekommen, das die VCL Komponenten kein Unicode unterstützen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von hitzi
hitzi

Registriert seit: 2. Jan 2003
Ort: Eibau
768 Beiträge
 
Delphi 2010 Professional
 
#3

Re: GetDisplayNameOf und Sonderzeichenproblem

  Alt 3. Nov 2004, 14:11
Danke für den Hinweis Luckie. Gibt es einen Weg diese Unicode zeichen so umzuwandeln, dass das korrekte Zeichen angezeigt wird?

Hitzi
Thomas
Besucht doch mal http://www.hitziger.net
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.412 Beiträge
 
Delphi 12 Athens
 
#4

Re: GetDisplayNameOf und Sonderzeichenproblem

  Alt 3. Nov 2004, 14:16
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

......
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.201 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: GetDisplayNameOf und Sonderzeichenproblem

  Alt 3. Nov 2004, 15:10
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.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von hitzi
hitzi

Registriert seit: 2. Jan 2003
Ort: Eibau
768 Beiträge
 
Delphi 2010 Professional
 
#6

Re: GetDisplayNameOf und Sonderzeichenproblem

  Alt 3. Nov 2004, 16:58
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
Thomas
Besucht doch mal http://www.hitziger.net
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.201 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: GetDisplayNameOf und Sonderzeichenproblem

  Alt 3. Nov 2004, 19:13
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 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.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von hitzi
hitzi

Registriert seit: 2. Jan 2003
Ort: Eibau
768 Beiträge
 
Delphi 2010 Professional
 
#8

Re: GetDisplayNameOf und Sonderzeichenproblem

  Alt 4. Nov 2004, 07:14
Guten Morgen

Dann gibt es eben für das laufende Projekt kein Unicode Support
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?
Thomas
Besucht doch mal http://www.hitziger.net
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.201 Beiträge
 
Delphi 10.4 Sydney
 
#9

Re: GetDisplayNameOf und Sonderzeichenproblem

  Alt 4. Nov 2004, 08:24
Zitat von hitzi:
Dann gibt es eben für das laufende Projekt kein Unicode Support
Den hätte ich nur noch hinzugefügt, wenn's relativ unkompliziert funktioniert hätte.
Voller Unicode-Support bedeutet einige Umstellungs- und Testaufwand

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 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 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.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von hitzi
hitzi

Registriert seit: 2. Jan 2003
Ort: Eibau
768 Beiträge
 
Delphi 2010 Professional
 
#10

Re: GetDisplayNameOf und Sonderzeichenproblem

  Alt 4. Nov 2004, 08:34
Danke für die Infos.
Thomas
Besucht doch mal http://www.hitziger.net
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:15 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