![]() |
#155<>Char(155) ?
Hallo,
Ich baue seit einiger Zeit WPTools für FireMonkey und nun auch für die Verwendung unter Android um und da gibt es ja bekanntermassen keine AnsiChar mehr. AnsiString gib es zwar auch nicht, dafür aber RAWByteStrings. RAWChar gibt es komischerweise nicht und so muss einiger optimierter code auf Byte umgestellt werden. Anstatt var Tabelle[AnsiChar] of Boolean habe ich also eine var Tabelle[#$00..#$FF] of Boolean verwendet und wie bisher initialisiert: Tabelle['.'] := true; Tabelle[#155] := true; Hierbei gab es keinen Rangecheck Fehler aber das Programm war instabil oder startet gar nicht, je nachdem welche units in welcher Reihenfolge man eingebaut hatte. (Super!) Irgendwann bin ich darauf gekommen den Code zu ändern in var Tabelle[#0..#256] of Boolean; Tabelle['.'] := true; Tabelle[Char(155)] := true; und ... nun geht es. Keine Probleme mehr. Ich habe mal einen Test gebaut: if #155<>Char(155) then ShowMessage(IntToStr(Integer(#155))); Und hier kommt die Messagebox und zeigt - Überraschung "155" - weiss jemand wieso? Grüsse, Julian |
AW: #155<>Char(155) ?
Schau mal, ob sich das mit der Compiler-Direktive
Delphi-Quellcode:
ändert.
{$HIGHCHARUNICODE ON}
|
AW: #155<>Char(155) ?
Danke - damit ist der Effekt weg.
Nach der doku - bei {$HIGHCHARUNICODE OFF} A := #$80; // Ord(A) = $80 W := #$80; // Ord(W) depends on default ANSI codepage; for example // = $0402 for Win1251 codepage ('Ђ') // = $20AC for Win1252 codepage ('€'); Es passiert also eine Umwandlung entsprechend der aktuellen codepage. Damit hatte ich nicht gerechnet. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:14 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