Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - ASCII-Wert eines bestimmten Zeichens anzeigen


Bomania - Sa 15.02.03 18:29
Titel: ASCII-Wert eines bestimmten Zeichens anzeigen
Gibt es eine einfachere Methode um den ASCII-Wert eines bestimmten Zeichens anzeigen zu lassen?


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure TForm1.Button1Click(Sender: TObject);
var
  asciinr : longint;
  zeile   : string;
  i       : integer;
begin
  i:=strtoint(edit1.text);
  zeile:=edit2.text;
  asciinr := ord(Zeile[i]);
  label1.Caption:=inttostr(asciinr);
end;


Danke


Delete - Sa 15.02.03 18:38


Quelltext
1:
2:
3:
4:
procedure TForm1.Button1Click(Sender: TObject);
begin
  Label1.Caption := IntToStr(ord(Edit1.Text[1]));
end;


DaRkFiRe - Sa 15.02.03 18:50

Naja offensichtlich stand die Position des Zeichens aus Edit1.Text in Edit2.text :)


Quelltext
1:
2:
3:
4:
procedure TForm1.Button1Click(Sender: TObject); 
begin 
  Label1.Caption := IntToStr(ord(Edit1.Text[StrToInt(Edit2.text)])); 
end;


Bomania - Sa 15.02.03 18:56

Ich möchte aus einem Textfeld per Schleife jedes einzelne Zeichen überprüfen - und zwar als ASCII-Zeichen. Bei folgendem Code gibt es die Fehlermeldung "Inkompatible Typen".


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
For i := 1 To length(txt_Eingabe.text) do
  begin
   case IntToStr(ord(Copy(txt_Eingabe.Text, i, 1))) of  //Fehler
    65..90, 97..122: begin
      tudiesunddas
    end;
    48..57: begin
    ....


Delete - Sa 15.02.03 19:01


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure TForm1.Button1Click(Sender: TObject);
var
  i : Integer;
  s : String;
begin
  for i := 1 to length(Edit1.Text) do
  begin
    s := IntToStr(ord(Edit1.Text[i]));
    Showmessage(s);
  end;
end;


ord liefert dir doch schon einen Integer für dein case. Und mit Strings kann case nichts anfangen.


Alibi - Sa 15.02.03 19:02

Du kannst mit case of nur Chars und Integer vergleichen. Lass das Inttostr weg und dann sollte das gehen.


Delete - Sa 15.02.03 19:07

Und copy liefert einen String zurück und keinen Char.

So sollte es gehen:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
procedure TForm1.Button1Click(Sender: TObject);
var
  i : Integer;
begin
  for i := 1 To length(Edit1.text) do
  begin
   case ord(Edit1.Text[i]) of  //Fehler
     65..90, 97..122:
     begin
       ShowMessage('1');
     end;
     48..57:
     begin
       Showmessage('2');
     end;
   end;
  end;
end;


Delete - Sa 15.02.03 19:22

Hm, dann doch lieber:

Quelltext
1:
2:
3:
4:
5:
6:
7:
case Edit1.Text[i] of
  'A'..'Z',
  'a'..'z':
    ShowMessage('1');
  '0'..'9':
    Showmessage('2');
end;

Oder spricht was gegen diesen Weg?


Bomania - Sa 15.02.03 19:29

Ja, oder so :)


Delete - Sa 15.02.03 19:31

Der Source ist getestet und hat ein TCPA-Zertifikat. Bei mir tut er es wunderbar.

Argh, so was unhöfliches, jetzt hat der editiert. :twisted:

Für den Rest Er hatte behauptet mein Code würde nicht gehen.


Bomania - Sa 15.02.03 19:45

Blasphemie :evil:

Nein nein, Luckie hat schon Recht. Ich wusste ja nicht, dass es unhöflich ist, seine Beiträge zu editieren nachdem man festgestellt hat, dass es doch funzt :oops:


Delete - Sa 15.02.03 19:47

Es ist dann unhöflich, wenn sich eine Nachfolgepost auf das editierte Posting bezieht.


Bomania - Sa 15.02.03 19:49

Kann doch aber nur dann unhöflich sein, wenn man wüsste, dass der andere bereits am posten ist


Delete - Sa 15.02.03 19:54

Du solltest mittlerweile gemerkt haben, dass ich in den Semesterfereien schneller poste als mein Schatten. :mrgreen:


Bomania - Sa 15.02.03 19:57

Mittlerweile? Ich bin doch ganz neu hier...und wann Semesterferien sind, weiß ich nun wirklich nicht. Aber ich werde in Zukunft gebührend Zeit zwischen meinen Postings verstreichen lassen :lol: