AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi String zu AnsiChar oder Char umwandeln
Thema durchsuchen
Ansicht
Themen-Optionen

String zu AnsiChar oder Char umwandeln

Ein Thema von rollstuhlfahrer · begonnen am 26. Sep 2007 · letzter Beitrag vom 27. Sep 2007
Antwort Antwort
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#1

String zu AnsiChar oder Char umwandeln

  Alt 26. Sep 2007, 18:23
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:
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;
Nun ja, ich habe es noch nicht hinbekommen eine einfache Typenumwandlung dafür hinzubekommen.
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)
Bernhard
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#2

Re: String zu AnsiChar oder Char umwandeln

  Alt 26. Sep 2007, 18:30
Hallo,

wie wär's damit:
Delphi-Quellcode:
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;
Gruß
xaromz
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: String zu AnsiChar oder Char umwandeln

  Alt 26. Sep 2007, 18:31
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;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Martin K
Martin K

Registriert seit: 20. Okt 2005
919 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: String zu AnsiChar oder Char umwandeln

  Alt 26. Sep 2007, 18:38
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:
var s: String; c: Char;

  c := s[1];
Die Funktion Ord() benötigt als Argument einen ordinalen Typ, Char ist ein ordinaler Typ, String aber nicht.
ShowMessage(IntToStr(Ord(string[1]))) funktioniert also

Was du vor hast, könnte man auch einfach so machen (Kopieren und temporärer String wird überflüssig).
Delphi-Quellcode:
var temp: Char; zeichen: Byte;

for i := 1 to Length(s) do
begin
  temp := s[i];
  zeichen := Ord(temp);
  ShowMessage(IntToStr(zeichen));
end;
oder auch einfach:
Delphi-Quellcode:
for i := 1 to Length(s) do
  ShowMessage(IntToStr(Ord(s[i])));
Übrigens:
Char = AnsiChar
Mit den Menschen ist es wie mit Computern -
es gibt Nullen und Einsen.
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#5

Re: String zu AnsiChar oder Char umwandeln

  Alt 27. Sep 2007, 16:25
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
Bernhard
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:32 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