Hi!
Hoffe das Thema passt hier rein.
Weiter hoffe ich beim Suchen nicht übersehen zu haben, dass dies hier schon behandelt wurde.
Ich lese eine INI-Datei in eine Stringlist ein. In dieser gibt es Einträge, denen eine CharSet-Definition vorausgeht.
Um die Einträge richtig darzustellen muss ich nun den CharSet der als String vorhanden ist in Cardinal umwandeln.
Also aus 'CharSet=RUSSIAN_CHARSET' mache ich RUSSIAN_CHARSET, was aber ein String ist. Für die Konvertierung mit
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| function AnsiToWide(const Text: AnsiString; Charset: Cardinal): WideString; var CharsetInfo: TCharsetInfo; L: Integer; begin TranslateCharsetInfo(Charset, CharsetInfo, TCI_SRCCHARSET);
L := MultiByteToWideChar(CharsetInfo.ciACP, MB_PRECOMPOSED, @Text[1], Length(Text), nil, 0);
SetLength(Result, L);
MultiByteToWideChar(CharsetInfo.ciACP, MB_PRECOMPOSED, @Text[1], Length(Text), @Result[1], L); end; |
brauche ich nun die
Delphi-Quelltext
1: 2:
| {$EXTERNALSYM RUSSIAN_CHARSET} RUSSIAN_CHARSET = 204; |
aus der Windows-Klasse.
Gibt es da schon etwas fertiges? Eine Art StringToCharset o.Ä.?
Gruß
---
Moderiert von
Narses: Beiträge zusammengefasst---
also ich stell mir sowas in der Art vor, nur eben professioneller, bzw gibts das vl schon:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26:
| function StringToCharset(charsetString: WideString): Cardinal; begin if charsetString='ANSI_CHARSET' then Result:=ANSI_CHARSET
else if charsetString='DEFAULT_CHARSET' then Result:=DEFAULT_CHARSET else if charsetString='SYMBOL_CHARSET' then Result:=SYMBOL_CHARSET else if charsetString='SHIFTJIS_CHARSET' then Result:=SHIFTJIS_CHARSET else if charsetString='HANGEUL_CHARSET' then Result:=HANGEUL_CHARSET else if charsetString='GB2312_CHARSET' then Result:=GB2312_CHARSET else if charsetString='CHINESEBIG5_CHARSET' then Result:=CHINESEBIG5_CHARSET else if charsetString='OEM_CHARSET' then Result:=OEM_CHARSET else if charsetString='JOHAB_CHARSET' then Result:=JOHAB_CHARSET else if charsetString='HEBREW_CHARSET' then Result:=HEBREW_CHARSET else if charsetString='ARABIC_CHARSET' then Result:=ARABIC_CHARSET else if charsetString='GREEK_CHARSET' then Result:=GREEK_CHARSET else if charsetString='TURKISH_CHARSET' then Result:=TURKISH_CHARSET else if charsetString='VIETNAMESE_CHARSET' then Result:=VIETNAMESE_CHARSET else if charsetString='THAI_CHARSET' then Result:=THAI_CHARSET else if charsetString='EASTEUROPE_CHARSET' then Result:=EASTEUROPE_CHARSET else if charsetString='RUSSIAN_CHARSET' then Result:=RUSSIAN_CHARSET else if charsetString='MAC_CHARSET' then Result:=MAC_CHARSET else if charsetString='BALTIC_CHARSET' then Result:=BALTIC_CHARSET
else Result:=ANSI_CHARSET;
end; |