Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi case of.. erwartet Ordinaltyp?? (https://www.delphipraxis.net/88646-case-erwartet-ordinaltyp.html)

Kuonrat 18. Mär 2007 21:01


case of.. erwartet Ordinaltyp??
 
Delphi-Quellcode:
  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;
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:

[Fehler] uKryptool.pas(185): E2001 Ordinaltyp erforderlich

*shrug* :duck:

mkinzler 18. Mär 2007 21:04

Re: case of.. erwartet Ordinaltyp??
 
Ein Charakter ist keine Ordinaltyp. Vielleicht geht es so:

Delphi-Quellcode:
case ORD(Schluessel) of
      3 : Schluessel := '9';

leddl 18. Mär 2007 21:05

Re: case of.. erwartet Ordinaltyp??
 
Delphi-Quellcode:
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;
Na was ist Schluessel denn nu für ein Typ? Integer oder String? :stupid:
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:

Matze 18. Mär 2007 21:05

Re: case of.. erwartet Ordinaltyp??
 
du kannst in einer case-Abfrage nur auf Ganzzahlen (Integer) überprüfen, also beispielsweise so

Delphi-Quellcode:
case StrToInt(Schluessel) of
doch da Schluessel, wie es aussieht, nur Integer-Werte annimmt, würde ich Schluessel auch als Integer deklarieren.


Edit: Huch, wo kommen denn die 2 Beiträge her.

Christian Seehase 18. Mär 2007 21:17

Re: case of.. erwartet Ordinaltyp??
 
Moin mkinzler,

Zitat:

Zitat von mkinzler
Ein Charakter ist keine Ordinaltyp.

wieso? :gruebel:

Kuonrat 18. Mär 2007 21:30

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 =)

Robert Marquardt 19. Mär 2007 04:38

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.

IngoD7 19. Mär 2007 08:38

Re: case of.. erwartet Ordinaltyp??
 
Zitat:

Zitat von Matze
du kannst in einer case-Abfrage nur auf Ganzzahlen (Integer) überprüfen,(...)

Nein. Das "nur" macht den Satz zur Falschaussage! ;)

Zitat:

Zitat von Robert Marquardt
case geht nur mit Zahlen.

Dito. ;)

Case funktioniert mit Ordinaltypen. Das können z.B. sein Integer, Chars, Mengenelemente.

Robert Marquardt 19. Mär 2007 08:46

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.

IngoD7 19. Mär 2007 10:37

Re: case of.. erwartet Ordinaltyp??
 
Zitat:

Zitat von Robert Marquardt
Manchmal muss man es den Leuten mit einfachen Worten erklaeren.

Sehe ich oftmals genauso. Ändert aber nichts an der Tatsache, dass die Aussagen - so, wie sie da standen - schlicht falsch waren. :cheers:


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:43 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