AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

case of.. erwartet Ordinaltyp??

Ein Thema von Kuonrat · begonnen am 18. Mär 2007 · letzter Beitrag vom 19. Mär 2007
Antwort Antwort
Kuonrat

Registriert seit: 27. Okt 2006
Ort: Berlin
33 Beiträge
 
#1

case of.. erwartet Ordinaltyp??

  Alt 18. Mär 2007, 21:01
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*
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: case of.. erwartet Ordinaltyp??

  Alt 18. Mär 2007, 21:04
Ein Charakter ist keine Ordinaltyp. Vielleicht geht es so:

Delphi-Quellcode:
case ORD(Schluessel) of
      3 : Schluessel := '9';
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von leddl
leddl

Registriert seit: 13. Okt 2003
Ort: Künzelsau
1.613 Beiträge
 
Delphi 2006 Professional
 
#3

Re: case of.. erwartet Ordinaltyp??

  Alt 18. Mär 2007, 21:05
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?
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
Axel Sefranek
A programmer started to cuss, cause getting to sleep was a fuss.
As he lay there in bed, looping round in his head
was: while(!asleep()) ++sheep;
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: case of.. erwartet Ordinaltyp??

  Alt 18. Mär 2007, 21:05
du kannst in einer case-Abfrage nur auf Ganzzahlen (Integer) überprüfen, also beispielsweise so

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.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: case of.. erwartet Ordinaltyp??

  Alt 18. Mär 2007, 21:17
Moin mkinzler,

Zitat von mkinzler:
Ein Charakter ist keine Ordinaltyp.
wieso?
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Kuonrat

Registriert seit: 27. Okt 2006
Ort: Berlin
33 Beiträge
 
#6

Re: case of.. erwartet Ordinaltyp??

  Alt 18. Mär 2007, 21:30
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 =)
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#7

Re: case of.. erwartet Ordinaltyp??

  Alt 19. Mär 2007, 04:38
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.
  Mit Zitat antworten Zitat
IngoD7

Registriert seit: 16. Feb 2004
464 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: case of.. erwartet Ordinaltyp??

  Alt 19. Mär 2007, 08:38
Zitat von Matze:
du kannst in einer case-Abfrage nur auf Ganzzahlen (Integer) überprüfen,(...)
Nein. Das "nur" macht den Satz zur Falschaussage!

Zitat von Robert Marquardt:
case geht nur mit Zahlen.
Dito.

Case funktioniert mit Ordinaltypen. Das können z.B. sein Integer, Chars, Mengenelemente.
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#9

Re: case of.. erwartet Ordinaltyp??

  Alt 19. Mär 2007, 08:46
Manchmal muss man es den Leuten mit einfachen Worten erklaeren. Es war deutlich zu erkennen das "Ordinaltyp" bereits ueber den Horizont des Fragers geht.
  Mit Zitat antworten Zitat
IngoD7

Registriert seit: 16. Feb 2004
464 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: case of.. erwartet Ordinaltyp??

  Alt 19. Mär 2007, 10:37
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.
  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 16:37 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