UNICODE oder was???

01/05/2010 - 10:46 von Ralf Schlegel | Report spam
Hallo *.*

ich raff's nicht! Folgendes Problem:
Auf einem Rechner ist ein ENGLISCHES MS Server 2003 installiert, als
zusàtzliche Sprache noch Russisch.

Darauf habe ich meinen VB6 Explorer-Clone installiert - làuft auch erst
mal, dann
wollte ich von meinem USB-Stick die Datei "Geràte.xls" öffnen (Geràte mit Ä)
in meinem ListView wird diese Datei aber als "Gerate.xls" (Gerate mit A)
angezeigt und làßt sich folglich nicht öffen.
Öffne ich den USB-Stick mit dem Windows-Explorer, so wird der Name
"Geràte" aber richtig angezeigt!
"AHA - da habe ich wohl ein ANSI-Problem", habe ich mir gedacht und meine
FindFist, FindNext Routine kurzerhand auf Unicode umgestellt:
FileName ist dann in der Struktur "WIN32_FIND_DATAW" nicht mehr String
260, sondern ByteArray (0-519)
Dieses muß dann wieder zur Weiterverarbeitung in einen natürlichen
String umgewandelt werden...

<< schnipp >>
Dim FD As WIN32_FIND_DATAW

hFile = FindFirstFileW(StrPtr(actPath & "*.*"), VarPtr(FD))
If hFile = 0 Or hFile = -1 Then Exit Function
Do
file = GetStrFromPtr(StrPtr(FD.FileName), True)
<< schnapp>>

die Funktion "GetStrFromPtr" soll genau das tun. Hier habe ich
mittlerweile alles durch, was VB und die API so hergibt:
von WideCharToMultiByte() über StrConv() und der Prüffunktion
IsTextUnicode() - funzt aber alles nicht :-(

Kann mir jemand ein Beispiel geben, wie ich das richtig mache???

Liebe Grüße aus Wegberg


Ralf Schlegel
www.vb-zentrum.de
 

Lesen sie die antworten

#1 Timo Kunze
01/05/2010 - 13:01 | Warnen spam
Am 01.05.2010 10:46, schrieb Ralf Schlegel:
die Funktion "GetStrFromPtr" soll genau das tun. Hier habe ich



Was soll sie tun?

mittlerweile alles durch, was VB und die API so hergibt:
von WideCharToMultiByte() über StrConv() und der Prüffunktion
IsTextUnicode() - funzt aber alles nicht :-(

Kann mir jemand ein Beispiel geben, wie ich das richtig mache???



Nutzt du denn ein Listview, das Unicode-Text anzeigen kann? Was hast du
überhaupt vor? Wenn du den Unicode-String nach ANSI konvertierst, hast
du zwangslàufig einen Verlust. Letztlich machst du mit so einer
Konvertierung nichts anderes als was Windows macht, wenn du die
ANSI-Versionen der APIs verwendest. Deshalb: Wenn du Unicode-Dateinamen
wirklich unterstützen willst, musst du das komplette Programm auf
Unicode umstellen, nicht nur ein paar Zeilen.

Timo
www.TimoSoft-Software.de - Unicode controls for VB6
"Those who sacrifice freedom for safety deserve neither."
"Demokratie ist per Definition unsicher. Ihr Schutz entsteht aus der
Überzeugung, dass die demokratischen Kràfte überwiegen und sich – auf
demokratischem Wege – durchsetzen."

Ähnliche fragen