Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - zuordnungsfunktion Buchstabe zu Zahl


michaelarban - Mo 26.07.10 16:26
Titel: zuordnungsfunktion Buchstabe zu Zahl
Hallo,

wie kann man am besten eine Funktion schreiben, die zu einem Buchstaben eine Zahl zurückliefert;

also
'a' --> 100
'b' --> 101
'c' --> 102
.
.
'z'--> 126

getInteger('c') --> liefert 102

Ich könnte es mit case machen, aber wäre zu aufwndig; gibt es einen einfachenere Weg?

Danke


Stundenplan - Mo 26.07.10 16:37

Hallo!

Ord('c'); gibt schon einen Wert zurück, nämlich 99. Du kannst ja einfach eine Konsante dazuaddieren, um "deine" Werte zu bekommen.

Grüße,
Stundenplan.


Georg08 - Mo 26.07.10 16:49

Kleiner Tipp:
ich würde noch überprüfen, ob es ein Buchstabe ist, sonst kommt auch beim leerzeichen eine Zahl oder bei Entf.
Also:

Delphi-Quelltext
1:
2:
3:
4:
5:
function getInteger(c: Char): Integer;
begin
  if not(c in ['a'..'z']) then exit;
  Result:= Ord(c)+3;
end;


bole - Mo 26.07.10 19:26

So würde ich das aber nicht machen... im Falle das es kein Buchstabe zwischen a und z ist ist der Rückgabewert der Funktion undefiniert!

Delphi-Quelltext
1:
2:
3:
4:
5:
function TForm2.getInteger(c: char): Integer;
begin
  if (c in ['a'..'z']) then Result:= Ord(c)+3;
                       else Result:= -1;  
end;


Der Aufrufer muss den Return Code abfragen, -1 = Fehler.

Gruss

Bole


jfheins - Mo 26.07.10 21:01

user profile iconbole hat folgendes geschrieben Zum zitierten Posting springen:

Der Aufrufer muss den Return Code abfragen, -1 = Fehler.
Gruss
Bole

Also wenn angedacht ist, dass nur normale Kleinbuchstaben da hineinkommen, würde ich einfach eine Exception werfen ;)


michaelarban - Mo 26.07.10 21:38

ok. danke