Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Einem Char einen Integer zuweisen


Marco D. - Do 22.06.06 20:33
Titel: Einem Char einen Integer zuweisen
Hallo,

ich will einem Char ein Integer zuweisen. Inttostr akzeptiert Delphi nicht:

[Fehler] maf.pas(840): Inkompatible Typen: 'Char' und 'String'

Was tun?


Allesquarks - Do 22.06.06 20:53

Nun ja ein char ist ja nur ein einziges Zeichen damit kann man also genau Zahlen von 1-9 darstellen (hexadezimal möchtest du doch nicht).

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
function inttochar(int:integer):char
asm
   add al,$30;
end;

//oder in pascal

function inttochar(int:integer):char
   result:=char(int+$30));
end;


Narses - Do 22.06.06 20:53


Delphi-Quelltext
1:
CharVar := Char(IntVar);                    


Marco D. - Do 22.06.06 20:57

user profile iconAllesquarks hat folgendes geschrieben:

function inttochar(int:integer):char
result:=char(int+$30));
end;
[/delphi]

Was bedeutet $30?

@Narses: funktioniert :zustimm:


Allesquarks - Do 22.06.06 21:03

Ein Character in Delphi ist nach dem Ascii oder Ansii Zeichensatz codiert egal wie, wenn der Binäre Wert des Char 2 ist ist das irgendein sehr merkwürdiges Sonderzeichen. Die Ziffern 1-9 beginnen in der Ascii Tabelle bei $30, wobei das $ nur signalisiert, dass die eingegebene Zahl hexadezimal ist, das heißt im konkreten Fall 3*16=48, dass heißt du könntest auch 48 hinterschreiben dann aber ohne $.

Um die Tabellenplätze bestimmter Zeichen zu finden empfiehlt sich ord().

Da ein char = 1 byte ist hat die ascii Tabell maximal 256 einträge, da 11111111b = $FF = 255 . +1 wegen der Null

siehe auch widechar.