![]() |
String zu AnsiChar oder Char umwandeln
Hallo Wissende,
ich möchte die Zeichen von einem Memo-Feld von allen Zeichen den ASCII Wert ermitteln. Dafür hat Delphi die Funktion ord() vorgesehen. Diese kann man aber leider nicht mit einem String, sei es ein 1-Zeichen-String, füttern. Momentan bin ich soweit gekommen:
Delphi-Quellcode:
Nun ja, ich habe es noch nicht hinbekommen eine einfache Typenumwandlung dafür hinzubekommen.
procedure TForm1.Button1Click(Sender: TObject);
var buchstabe, s: string; x, i, zeilen, zlaenge, zeichen: integer; temp: AnsiChar; // Kann auch Char sein begin zeilen := Memo1.Lines.Count; for i := 0 to zeilen-1 do begin s := Memo1.Lines[i]; zlaenge := Length(s) - 1; for x := 0 to zlaenge do begin buchstabe := System.Copy(s, x, 1); // Aus dem String den einen bestimmten Buchstaben herauskopieren temp := Char(buchstabe); // Hier haperts!! zeichen := ord(temp); showmessage(inttostr(zeichen)); end; end; end; Als Anmerkunk: showmessage(IntToStr(ord('r'))); // zeigt den ASCII-Wert von r an var zeichen: string showmessage(IntToStr(ord(string))); // Inkompatible Typen (umwandlung??) rollstuhlfahrer PS: Eine Tabelle mit möglichst vielen Typenumwandlungen fehlt (mir) |
Re: String zu AnsiChar oder Char umwandeln
Hallo,
wie wär's damit:
Delphi-Quellcode:
Gruß
procedure TForm1.Button1Click(Sender: TObject);
var s: string; i, j, zeilen, zlaenge: Integer; Zeichen: Byte; begin zeilen := Memo1.Lines.Count; for i := 0 to zeilen - 1 do begin s := Memo1.Lines[i]; zlaenge := Length(s); for j := 1 to zlaenge do begin Zeichen := Ord(s[j]); // <-- hier Umwandlung des j-ten Zeichens showmessage(IntToStr(Zeichen)); end; end; end; xaromz |
Re: String zu AnsiChar oder Char umwandeln
Hallo, ich habe Deinen Source mal etwas zusammengekürzt (ungetestet):
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var buchstabe, s: string; x, i, zeilen, zlaenge, zeichen: integer; temp: AnsiChar; // Kann auch Char sein begin zeilen := Memo1.Lines.Count; for i := 0 to zeilen-1 do begin s := Memo1.Lines[i]; // zlaenge := Length(s) - 1; for x := 1 to Length(s) do begin //buchstabe := System.Copy(s, x, 1); // Aus dem String den einen bestimmten Buchstaben herauskopieren //temp := Char(buchstabe); // Hier haperts!! //zeichen := ord(temp); showmessage(inttostr(Ord(s[x]))); end; end; end; |
Re: String zu AnsiChar oder Char umwandeln
Hallo,
ein String ist wie ein Array of Char aufgebaut, nur dass das erste Zeichen mit dem Index 1 beginnt. Das erste Zeichen aus einem String bekommst du also so:
Delphi-Quellcode:
Die Funktion Ord() benötigt als Argument einen ordinalen Typ, Char ist ein ordinaler Typ, String aber nicht.
var s: String; c: Char;
c := s[1]; ShowMessage(IntToStr(Ord(string[1]))) funktioniert also :wink: Was du vor hast, könnte man auch einfach so machen (Kopieren und temporärer String wird überflüssig).
Delphi-Quellcode:
oder auch einfach:
var temp: Char; zeichen: Byte;
for i := 1 to Length(s) do begin temp := s[i]; zeichen := Ord(temp); ShowMessage(IntToStr(zeichen)); end;
Delphi-Quellcode:
Übrigens:
for i := 1 to Length(s) do
ShowMessage(IntToStr(Ord(s[i]))); Char = AnsiChar |
Re: String zu AnsiChar oder Char umwandeln
Vielen dank für die zahlreichen und schnellen Antworten.
Was ich nicht wusste ist, dass ein einfacher String ein Array aus Char darstellt. Damit wird das Leben etwas einfacher. rollstuhlfahrer |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:47 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz