AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

#155<>Char(155) ?

Ein Thema von jziersch · begonnen am 12. Apr 2018 · letzter Beitrag vom 12. Apr 2018
Antwort Antwort
jziersch

Registriert seit: 9. Okt 2003
Ort: München
251 Beiträge
 
Delphi 10.4 Sydney
 
#1

#155<>Char(155) ?

  Alt 12. Apr 2018, 13:16
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
WPCubed GmbH
Komponenten für Delphi:
WPTools, wPDF, WPViewPDF
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.442 Beiträge
 
Delphi 12 Athens
 
#2

AW: #155<>Char(155) ?

  Alt 12. Apr 2018, 13:21
Schau mal, ob sich das mit der Compiler-Direktive {$HIGHCHARUNICODE ON} ändert.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
jziersch

Registriert seit: 9. Okt 2003
Ort: München
251 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: #155<>Char(155) ?

  Alt 12. Apr 2018, 13:32
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.
WPCubed GmbH
Komponenten für Delphi:
WPTools, wPDF, WPViewPDF
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:46 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