Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi #155<>Char(155) ? (https://www.delphipraxis.net/195982-155-char-155-a.html)

jziersch 12. Apr 2018 12:16

#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

Uwe Raabe 12. Apr 2018 12:21

AW: #155<>Char(155) ?
 
Schau mal, ob sich das mit der Compiler-Direktive
Delphi-Quellcode:
{$HIGHCHARUNICODE ON}
ändert.

jziersch 12. Apr 2018 12:32

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 08:08 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