Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - case of mit Strings


Daether - Fr 19.08.05 10:35
Titel: case of mit Strings
Moin,
hoffe, dass es einfach noch zu früh für mich ist und ich einfach irgendwas dämliches angestellt habe, aber warum unktioniert dieser Code nicht?

Delphi-Quelltext
1:
2:
3:
4:
5:
case Spiel.Spielfeld[Markx,Marky].Planet.Art of
'All':begin
      end;
'Planetwueste':Begin
               end;

Es komt immer der Fehler :Ordinaltyp erforderlich
Und Spiel.Spielfeld[Markx,Marky].Planet.Art ist ein String.


Grendel - Fr 19.08.05 10:38

Du kannst unter Delphi ein case nicht auf Strings anwenden. Geht einfach nicht. Auch wenn sich mir der Sinn dahinter noch nicht ganz erschlossen hat.
Du musst also auf if - else zurückgreifen.

Bis neulich ...


WeBsPaCe - Fr 19.08.05 10:39

Joa. case ... of funktioniert eben nur, wenn du eine Variable auf eine Zahl abfragen willst. ;)

Musst du eben sowas machen:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
if Spiel.Spielfeld[Markx,Marky].Planet.Art = 'All' then
  begin
  end;
if Spiel.Spielfeld[Markx,Marky].Planet.Art = 'Planetwueste' then
  begin
  end;


;)


noidic - Fr 19.08.05 10:40

Oder du definierst dir die Art als Aufzählungstyp, dann geht das mit dem Case of wieder


WeBsPaCe - Fr 19.08.05 10:42

Wenn deine Variable allerdings nur einen der beiden Werte annehmen _kann_, dann bietet sich ein if ... then ... else natürlich an. Ist dann fast genauso kurz wie case ... of. ;)


Daether - Fr 19.08.05 10:48

erstma danke für eure Antworten.
Ich verusche die Art eines Planeten auszulesen und in ein Stringgrid zu stecken ( ist für ein Spiel ). Doch da ich später hoffentlich mehr als eine Art von Planeten habe, wollte ich das ganze mit Case of veruschen :) .


Delete - Fr 19.08.05 10:58

Suche in: Delphi-Forum, Delphi-Library CASE MIT STRING hatten wir schon oft genug, einfach mal suchen.


noidic - Fr 19.08.05 11:00

In dem Fall würde ich tatsächlich einen Aufzählungstypen benutzen. Ist zwar im ersten Schritt mehr Arbeit, weil du noch was bauen musst, was dir den Aufzählungstyp für die Ausgabe in Strings umwandelt und ggfls. umgekehrt ( nen Array bietet sich da an ), dafür ist das aber hinterher durchsichtiger im Code und vor allem werden Tippfehler schon beim Kompilieren entdeckt, nicht erst dadurch, das das Programm nicht das tut was es soll und man sich schon die Augen wund gesucht hat....