Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Probleme im Umgang mit ord() und chr() (https://www.delphipraxis.net/163729-probleme-im-umgang-mit-ord-und-chr.html)

ck.bielefeld 13. Okt 2011 14:44

Delphi-Version: 7

Probleme im Umgang mit ord() und chr()
 
Hallo zusammen!
Ich habe ein kleines Problem. Ich bin grad dabei ein paar Aufgaben unsers Profs zu machen, und hänge jetzt bei einer Aufgabe.
Ich habe ein Edit, ein Button und ein Label. In das Edit kann ich ein Zeichen schreiben. Dann soll mittels klick auf den Button das Zeichen in der Variable s hinterlegt werden, und der ASCII-Wert des Zeichens im Label ausgegeben werden.

Zitat:

procedure TForm1.Button1Click(Sender: TObject);
var s: String;
begin
s := Edit1.Text;
Label3.Caption := ord(s);
end;
Beim kompilieren jedoch meckert der Compiler mit der Zeile "Label3.Caption..." und springt mit dem Crusor vor das Semikolon. Was ist da falsch gelaufen? Ich fürchte, ich habe die Arbeitsweise von ord() nicht verstanden... :(

Gleiches soll ich dann noch in umgekehrter Reihenfolge machen: ich habe ein Edit in dem ich drei Zahlen eintragen kann, und dann soll das dazugehörige Zeichen als caption des Labels ausgegeben werden. Diesmal wird die Zahleneingabe in Variable c als Integer hinterlegt.
Ich habe so die Befürchtung, das der nächste Schritt dann genauso erfolglos bleibt, wie der erste...

Weiss da jemand vllt. Rat?

Gruß,

ck.bielefeld

DeddyH 13. Okt 2011 14:45

AW: Probleme im Umgang mit ord() und chr()
 
Schau mal nach, was Ord() zurückgibt und ob man das einer Caption ohne Konvertierung zuweisen kann ;)

ck.bielefeld 13. Okt 2011 14:49

AW: Probleme im Umgang mit ord() und chr()
 
Meinst du dann so? (Compiler meckert immer noch...)
Zitat:

procedure TForm1.Button1Click(Sender: TObject);
var s: String;
begin
s := Edit1.Text;
Label3.Caption := IntToStr(ord(s));
end;

DeddyH 13. Okt 2011 14:51

AW: Probleme im Umgang mit ord() und chr()
 
Du kannst Ord() keinen ganzen String übergeben, sondern nur einzelne Zeichen.
Delphi-Quellcode:
Label3.Caption := IntToStr(Ord(s[1]));

ck.bielefeld 13. Okt 2011 15:00

AW: Probleme im Umgang mit ord() und chr()
 
Oh, ok! Zum einen dachte ich, das ich durch den Umstand, das Edit auf eine maxlength von 1 beschränkt zu haben, dieses Problem umgehen zu können. Das war schon mal falsch - 1. Dank! :)
Und dann war mir außerdem nicht klar, das ich die eckigen Klammer noch in den Runden von ord machen muss...
Kurze Frage zur nächsten Aufgabe: was bedeutet der Typ Char? (Eine Variable soll den Typ Char haben...)

Bummi 13. Okt 2011 15:09

AW: Probleme im Umgang mit ord() und chr()
 
unter Delphi < 2009 entspricht ein ein Char einem Byte.
Ein String, oder vielmehr der Inhalt eines Strings einer Aneinanderreihung von Chars.

S='Nase';
C1=S[1];
C2=S[2];
...

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
Var
 C:Char;
 S:String;
 O:Integer;
begin
 C := 'H';
 O := 97;
 S := C + Char(O) + 'llo';
 Showmessage(S + ' - ' + IntToStr(Ord(S[1])) + ' - ' + IntToStr(Ord(C))) ;

end;

DeddyH 13. Okt 2011 15:09

AW: Probleme im Umgang mit ord() und chr()
 
Ein Char = ein Zeichen, das ist aber Grundlagenwissen.

ck.bielefeld 13. Okt 2011 15:12

AW: Probleme im Umgang mit ord() und chr()
 
Ah, alles klar! :thumb:
Vielen Dank!


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