![]() |
case of.. erwartet Ordinaltyp??
Delphi-Quellcode:
Ich programmiere gerade eine multipliaktive ENTschlüsselung und wandle alle Schluesseleingaben in die passende um, damit die Entschlüsslung auch funktioniert. Nun kommt bei "Case Of Schluessel" die Meldung:
if (Modus = 'M') and (Verschl = false) then
begin case Schluessel of 3 : Schluessel := '9'; 5 : Schluessel := '21'; 7 : Schluessel := '15'; 9 : Schluessel := '3'; 11 : Schluessel := '19'; 15 : Schluessel := '7'; 17 : Schluessel := '23'; 21 : Schluessel := '5'; 23 : Schluessel := '17'; end; for i := 1 to length(text) do begin if (ord(Text[i]) < 65) OR (ord(Text[i]) > 90) then ausgabe := ausgabe + Text[i] else begin wert := StrToInt(Schluessel) * (ord(text[i]) - 65 ); wert := wert mod 26; kta := char(wert + 65); ausgabe := ausgabe + kta; end; SetzeKlartext(ausgabe); end; end; [Fehler] uKryptool.pas(185): E2001 Ordinaltyp erforderlich *shrug* :duck: |
Re: case of.. erwartet Ordinaltyp??
Ein Charakter ist keine Ordinaltyp. Vielleicht geht es so:
Delphi-Quellcode:
case ORD(Schluessel) of
3 : Schluessel := '9'; |
Re: case of.. erwartet Ordinaltyp??
Delphi-Quellcode:
Na was ist Schluessel denn nu für ein Typ? Integer oder String? :stupid:
case Schluessel of
3 : Schluessel := '9'; 5 : Schluessel := '21'; 7 : Schluessel := '15'; 9 : Schluessel := '3'; 11 : Schluessel := '19'; 15 : Schluessel := '7'; 17 : Schluessel := '23'; 21 : Schluessel := '5'; 23 : Schluessel := '17'; end; Case erwartet wie die Fehlermeldung schon sagt, einen ordinalen Typ. Also etwas wie Integer oder Char. String funktioniert nicht ;) Und wie gesagt: Entweder ist Schluessel vom Typ String oder vom Typ Integer. Beides auf einmal - wie in deinem Code - geht nicht :zwinker: |
Re: case of.. erwartet Ordinaltyp??
du kannst in einer case-Abfrage nur auf Ganzzahlen (Integer) überprüfen, also beispielsweise so
Delphi-Quellcode:
doch da Schluessel, wie es aussieht, nur Integer-Werte annimmt, würde ich Schluessel auch als Integer deklarieren.
case StrToInt(Schluessel) of
Edit: Huch, wo kommen denn die 2 Beiträge her. |
Re: case of.. erwartet Ordinaltyp??
Moin mkinzler,
Zitat:
|
Re: case of.. erwartet Ordinaltyp??
Okay, Problem gelöst. Wo der Fehler nune xakt liegt weiß ich nicht. Aber ich habe einfach mal Schluessel (String) durch eine separate variable key (Integer) ersetzt und schon klappt es. Die procedure ist wohl einfahc zu unsauber programmiert. Danke =)
|
Re: case of.. erwartet Ordinaltyp??
Ein Char ist ein Ordinaltyp, aber es wird ein String verwendet. Ein String ist keine Zahl = Ordialtyp.
Es ist nun mal so. case geht nur mit Zahlen. In der source wird auch ein String mit Integern verglichen. Das geht natuerlich schief. |
Re: case of.. erwartet Ordinaltyp??
Zitat:
Zitat:
Case funktioniert mit Ordinaltypen. Das können z.B. sein Integer, Chars, Mengenelemente. |
Re: case of.. erwartet Ordinaltyp??
Manchmal muss man es den Leuten mit einfachen Worten erklaeren. Es war deutlich zu erkennen das "Ordinaltyp" bereits ueber den Horizont des Fragers geht.
|
Re: case of.. erwartet Ordinaltyp??
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:44 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