2010-03-11 6 views
7

Q1: Was bedeutet das: WriteLn (#$0b)?Verwendung von # in Pascal

$0b sollte hexadezimal wie 0x0b, aber was ist mit dem Zeichen?

Q2:

x:=readkey; 
if (x = #5) do... 

Does #5 Mittelwert fünf? Was ist dann das Zeichen ?

Vielen Dank.

+0

(Beachten Sie, dass in (auch nicht so) kürzlich durchgeführten Delphi und FPC Versionen größere Zahlen als 255 widechars sind, 16-Bit verwendet Basisentität eine Basis für UTF16-String-Typen) –

Antwort

7

Die # vor einer Zahl, die eine Zeichen mit dem angegebenen Wert entspricht (beide Dezimal und Hexadezimalzahlen durch eine $ voran, werden akzeptiert). So ist #5 das gleiche wie chr(5) oder CtrlE.

+0

Ich musste ['chr'] (http://physinfo.ulb.ac.be/cit_courseware/pascal/pas036.htm) nach dieser Antwort suchen, um zu helfen, aber zumindest wusste ich es schau auf 'chr'. 'chr (65) = # 65 = 'A'' – DCShannon

2

Ah, Erinnerungen ...

#x ist in der Tat das Äquivalent von chr(x), wie Greg Hewgill sagte.

Ich möchte eine kleine Info hinzufügen.
Erweiterte Tasten, dh die Pfeiltasten, senden Null und den Code des char:

ch := ReadKey; 
    if ch = #0 then 
    begin // extended key 
    ch := ReadKey; // <-- read again to get the actual code 
    end else ...