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 zeigt String mit asiatischen Zeichen an (https://www.delphipraxis.net/186928-delphi-zeigt-string-mit-asiatischen-zeichen.html)

hedie 13. Okt 2015 12:35

Delphi zeigt String mit asiatischen Zeichen an
 
Hallo zusammen

Ich habe ein Beispiel von hier genommen:
http://www.ftdichip.com/Support/Soft...les/Delphi.htm

Im zip befindet sich bereits ein exe file.
Dieses liest unter anderem die Description eines USB-Serial Wandlers aus.
Das funktioniert einwandfrei.

Wenn ich nun das Projekt in Delphi 10 öffne, wird dieses konvertiert (zu einer DPROJ Datei)
Nach dem erneuten Build der EXE, welches auf anhiebt klappt, zeigt die Combobox mit den Descriptions jedoch nur noch asiatische Zeichen an.

Irgenwas ging hier wohl schief.
Ich mag mich erinnern, dass einmal einige diskussionen zum Thema Unicode im Forum waren vor einigen Jahren.
Hat es etwas damit zu tun?

Danke schonmal!

baumina 13. Okt 2015 12:38

AW: Delphi zeigt String mit asiatischen Zeichen an
 
Wenn es mit Delphi 5 entwickelt wurde lautet die Antwort definitiv JA, das ist ein Unicode-Problem.

hedie 13. Okt 2015 12:42

AW: Delphi zeigt String mit asiatischen Zeichen an
 
Ich glaube es wurde mit D7 entwickelt.

Die Frage ist nun, wass muss ich tun, damit ich wieder korrekte Strings habe?

Perlsau 13. Okt 2015 12:44

AW: Delphi zeigt String mit asiatischen Zeichen an
 
Alle Strings als Ansi-Strings deklarieren.

mkinzler 13. Okt 2015 12:45

AW: Delphi zeigt String mit asiatischen Zeichen an
 
Erstmal den Typ String durch AnsiString ersetzen.

hedie 13. Okt 2015 12:50

AW: Delphi zeigt String mit asiatischen Zeichen an
 
Da gibt es solche Funktionen:

Delphi-Quellcode:
Function GetDeviceString : String;
Var I : Integer;
Begin
Result := ''; I := 1;
FT_Device_String_Buffer[50] := Chr(0); // Just in case !
While FT_Device_String_Buffer[I] <> Chr(0) do
  Begin
  Result := Result + FT_Device_String_Buffer[I];
  Inc(I);
  End;
End;
Die Nutzen Char Arrays welche dann zu einem String convertiert werden.
Vermutlich geschieht dort der Fehler.

Wenn ich nun Result aber auf AnsiString setze, dann motzt er, dass er Char nicht in AnsiString konvertieren kann.

mkinzler 13. Okt 2015 12:53

AW: Delphi zeigt String mit asiatischen Zeichen an
 
Weil es sich um einen Char-Array ( 16 Bit) und keinen AnsiChar-Array handeln wird.
Char -> AnsiChar

hedie 13. Okt 2015 13:29

AW: Delphi zeigt String mit asiatischen Zeichen an
 
Vielen Dank!

Mit AnsiChar gings dann wieder.


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