Autor Beitrag
Daether
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 21



BeitragVerfasst: Fr 19.08.05 10:35 
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?
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 443

Gentoo Linux, MacOS X, Win 2000
D5 Ent, D7 Ent, Lazarus, Anjuta, MonoDevelop
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 2322
Erhaltene Danke: 1

FireFox 3, Internet Explorer 6 SP1
D1, D3Prof, D6Pers, D7Pers+Indy, VisualStudio Express
BeitragVerfasst: 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:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 851

Win 2000 Win XP Vista
D7 Ent, SharpDevelop 2.2
BeitragVerfasst: Fr 19.08.05 10:40 
Oder du definierst dir die Art als Aufzählungstyp, dann geht das mit dem Case of wieder

_________________
Bravery calls my name in the sound of the wind in the night...
WeBsPaCe
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 2322
Erhaltene Danke: 1

FireFox 3, Internet Explorer 6 SP1
D1, D3Prof, D6Pers, D7Pers+Indy, VisualStudio Express
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 21



BeitragVerfasst: 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 :) .
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 19.08.05 10:58 
Suche in: Delphi-Forum, Delphi-Library CASE MIT STRING hatten wir schon oft genug, einfach mal suchen.
noidic
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 851

Win 2000 Win XP Vista
D7 Ent, SharpDevelop 2.2
BeitragVerfasst: 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....

_________________
Bravery calls my name in the sound of the wind in the night...