Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Chr(224) Delphi 2007 <-> Delphi 2009 (https://www.delphipraxis.net/123513-chr-224-delphi-2007-delphi-2009-a.html)

Hawkeye219 3. Nov 2008 20:39

Re: Chr(224) Delphi 2007 <-> Delphi 2009
 
Hallo,
Zitat:

Zitat von mkinzler
Nein Chr liefert auch in D2009 einen Ansistring zurück

Die Standardfunktion Chr sollte in Delphi 2009 ein Unicode-Zeichen liefern:

Delphi-Quellcode:
var
  ch : Char;
begin
  ch := Chr($0815);
  ShowMessage (IntToHex(Ord(ch), 4));
end;
Zugegeben - die Hilfedatei ist in diesem Punkt leider keine große Hilfe...

Gruß Hawkeye

Uwe Raabe 3. Nov 2008 20:52

Re: Chr(224) Delphi 2007 <-> Delphi 2009
 
Zitat:

Zitat von Hawkeye219
Hallo,
Zitat:

Zitat von mkinzler
Nein Chr liefert auch in D2009 einen Ansistring zurück

Die Standardfunktion Chr sollte in Delphi 2009 ein Unicode-Zeichen liefern:

Delphi-Quellcode:
var
  ch : Char;
begin
  ch := Chr($0815);
  ShowMessage (IntToHex(Ord(ch), 4));
end;

Beides ist richtig! Je nach Ziel liefert Chr entweder einen 1- oder 2-Byte Wert zurück. Im Falle eines 1-Byte Ziels und eines 2-Byte Parameter gibt es dann auch eine Warnmeldung.

mkinzler 3. Nov 2008 20:53

Re: Chr(224) Delphi 2007 <-> Delphi 2009
 
Liste der Anhänge anzeigen (Anzahl: 1)
Die IDE auch nicht

SirThornberry 3. Nov 2008 21:00

Re: Chr(224) Delphi 2007 <-> Delphi 2009
 
wie sieht es aus wenn man castet mit char(zahl) anstelle die compilermagic funktion chr(zahl) zu verwenden?

ImpactMG 4. Nov 2008 08:59

Re: Chr(224) Delphi 2007 <-> Delphi 2009
 
Danke für die Tips.

BinToHex und HexToBin liefern gerau das gleiche Ergebnis wie meine Funktionen.

Habe inzwischen den Grund für das Problem gefunden, allerdings noch keine Lösung.

Auf meinem System war die Defaultcodepage auf Polnisch eingestellt (Systemsteuerung/Regions- und Sprachoptionen/Erweitert/Sprachversion für nicht-Unicodefähige Programme). Wenn ich sie auf Deutsch zurückstelle, bekomme ich wie Ihr ein 'á'.

Chr arbeitet also Systemcodepage-abhängig. Lösung mit Casten werde ich ausprobieren

Uwe Raabe 4. Nov 2008 19:40

Re: Chr(224) Delphi 2007 <-> Delphi 2009
 
Zitat:

Zitat von ImpactMG
BinToHex und HexToBin liefern gerau das gleiche Ergebnis wie meine Funktionen.

Hatte ich auch nicht anders erwartet, sollte nur Arbeit sparen...

Zitat:

Zitat von ImpactMG
Auf meinem System war die Defaultcodepage auf Polnisch eingestellt (Systemsteuerung/Regions- und Sprachoptionen/Erweitert/Sprachversion für nicht-Unicodefähige Programme). Wenn ich sie auf Deutsch zurückstelle, bekomme ich wie Ihr ein 'á'.

Chr arbeitet also Systemcodepage-abhängig.

Ich denke eher, daß die Umwandlung in den UnicodeString das CodePage-Problem hat. Aber du kannst die verwendete CodePage für AnsiStrings ja im Programm festlegen:

Delphi-Quellcode:
type
  GermanString = type AnsiString (1252);
  PolishString = type AnsiString (1250);
var
  German: GermanString;
  Polish: PolishString;
begin
  German := chr(224);
  Polish := chr(224);
  ShowMessage(German + '<>' + Polish);
end;
Wird nur AnsiString angegeben, verwendet Delphi die aktuelle Windows-CodePage. Leider geht das nicht mit AnsiChar, nur mit AnsiString;


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:12 Uhr.
Seite 2 von 2     12   

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