Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi ASCII Unterschied zwischen Delphi Chr() und Alt + Zahl (https://www.delphipraxis.net/189488-ascii-unterschied-zwischen-delphi-chr-und-alt-zahl.html)

Shark99 17. Jun 2016 12:34

ASCII Unterschied zwischen Delphi Chr() und Alt + Zahl
 
Ich hab ein TMemo mit der Schrift Arial.

Über Chr(156) füge ich dem Memo ein Zeichen hinzu und es schaut so aus:

œ

Wenn ich in dem Memo den Windows Shortcut nutze um ein ASCII Char hinzuzufügen, also Alt + 156 auf der Zehnertastatur, schaut das Zeichen so aus:

£

Kann mir bitte jemand den Unterschied erklären? Hängt bestimmt mit den Codepages zusammen.

Wie kann ich Delphi dazu bringen das gleiche mit Chr() zu tun, was der Windows Shortcut tut?

himitsu 17. Jun 2016 14:16

AW: ASCII Unterschied zwischen Delphi Chr() und Alt + Zahl
 
Chr ist wie Ord mehr Compilermagic und kann oft wie Char-Chast angesehen werden, (Integer->Char, also früher AnsiChar und seit D2009 WideChar)
allerdings ist Chr weiterhin fast immer ein Cast nach AnsiChar.

Bei Char/AnsiChar/WideChar ist immer klar, was bei raus kommt. (außer man macht z.B. AnsiChar und weißt es einem UnicodeString zu)
Bei #123, #$12ab kommt es auf die Länge/Formatierung an.
So ist #133, #$85 und #$0085 nicht unbedingt das Selbe, denn Einiges wird als ANSI (#$85) und Anderes als Unicode (#$0085) interpretiert.
Aber dazu gibt es einen Eintrag in der OH, siehe
Delphi-Quellcode:
{$HIGHCHARUNICODE OFF}
.

Shark99 17. Jun 2016 15:04

AW: ASCII Unterschied zwischen Delphi Chr() und Alt + Zahl
 
Habe das Problem bei Delphi 7, also denke ich nicht dass es mit Unicode zusammenhängt.

Btw, ein Chr(163) liefert bei Arial ein £, es ist also um 7 Stellen zu den Alt + Tastaturblock Shortcuts verschoben.

nahpets 17. Jun 2016 15:18

AW: ASCII Unterschied zwischen Delphi Chr() und Alt + Zahl
 
Chr() liefert ANSI (http://www.chip.de/news/ANSI-Code-Ta..._51186087.html)

Alt+xxx liefert ASCII (http://www.chip.de/news/ASCII-Tabell..._51205777.html)

Dalai 17. Jun 2016 15:21

AW: ASCII Unterschied zwischen Delphi Chr() und Alt + Zahl
 
Die Anzahl der Stellen ist entscheidend: Benutze mal Alt+0156 und schon bekommst du dasselbe Zeichen wie bei Chr(156).

MfG Dalai

nahpets 17. Jun 2016 15:28

AW: ASCII Unterschied zwischen Delphi Chr() und Alt + Zahl
 
Interessant, dann bekomme ich ja mit Alt+156 Ascii und mit Alt+0156 Ansi. Das muss ich mir merken.

Shark99 17. Jun 2016 15:31

AW: ASCII Unterschied zwischen Delphi Chr() und Alt + Zahl
 
Zitat:

Zitat von nahpets (Beitrag 1340442)

Ja, echt interessant! Was muss ich statt Chr() nehmen um unter Delphi 7 statt Ansi, ASCII zu bekommen?

Laut Hilfe zu Chr() sollte diese ja ASCII und nicht ANSI liefern ("Returns the character for a specified ASCII value.").

p80286 17. Jun 2016 15:34

AW: ASCII Unterschied zwischen Delphi Chr() und Alt + Zahl
 
Zitat:

Zitat von Shark99 (Beitrag 1340423)
Kann mir bitte jemand den Unterschied erklären? Hängt bestimmt mit den Codepages zusammen.

Nun Du kennst den Grund doch schon, was soll man Dir noch erklären?

AAALSO, bei der Eingabe über die Tastatur erhält Deine Anwendung
Delphi-Quellcode:
Tasteninteger and $FF
also immer irgendetwas zwischen 0 und 255 oder aber
Delphi-Quellcode:
Tasteninteger
. das kommt auf die Anwendung an (Word akzeptiert auch 16Bit Kodierungen, Notepad erst einmal nicht). Wenn Deine Anwendung nur 8Bit-Zeichen beherrscht, dann kannst Du über die Codepages die Darstellung auswählen.
Ggf gibt es dann auch noch eine Verschiebung (7) um die Steuerzeichen hinter 127 im Ansizeichensatz auszublenden.ExtendedASCII hat dort darstellbare Zeichen.

Gruß
K-H

nahpets 17. Jun 2016 17:22

AW: ASCII Unterschied zwischen Delphi Chr() und Alt + Zahl
 
Zitat:

Zitat von Shark99 (Beitrag 1340450)
Was muss ich statt Chr() nehmen um unter Delphi 7 statt Ansi, ASCII zu bekommen?

Schau mal bitte hier: http://www.delphipraxis.net/63354-post3.html

Das Ergebnis müsste für Dich dann in etwa so aussehen:
Delphi-Quellcode:
irgendeinstring := Ansi2OEM(Chr(156));

Shark99 17. Jun 2016 17:43

AW: ASCII Unterschied zwischen Delphi Chr() und Alt + Zahl
 
Klappt leider nicht.

Ansi2OEM(Chr(156)) liefert ein kleines o statt £.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:10 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