Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Frage zu Case of ...


Toastbrotbaby - Mo 26.12.05 11:14
Titel: Frage zu Case of ...
Frohe Weihnachten erstmal.

Jetzt dann mal meine Frage. Ich habe das mit den Case of anweisungen offensichtlich nicht wirklich verstanden.

Wenn ich jetzt ein Edit feld habe und dort eine zahl eingegeben wird die im Bereich von 0 - 1999 liegt soll im Label1 die Zahl 1 auftauchen. Bei einer Zahl im bereich von 2000 - 2999 soll die Zahl 2 auftauchen. Und jetzt mein Quellcode.


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure TForm1.Edit1Change(Sender: TObject);
begin
case Edit1.Text of
0..1999: Label1.Caption := '1';
2000..2999: Label1.Caption := '2';
end;
end;


jetzt kriege ich eine Fehlermeldung die da lautet:
--> ordinaltyp erforderlich <--

wenn mir jetzt noch jemand erklären kann was ich wie falsch mache wäre das echt mal klasse, habe bisher nie Case of gebraucht.

Gruss
Toast


Moderiert von user profile iconGausi: Topic aus Sonstiges verschoben am Mo 26.12.2005 um 10:41


matze - Mo 26.12.05 11:21

das was in deinem Edit Feld eingegeben wird ist ein String. Den musst du zuerst in einen Integer umwandeln, damit du mit der iegendlichen Zahl arbeiten kannst.
Dazu nimm StrToInt();


Toastbrotbaby - Mo 26.12.05 11:31

hmmm ... kaum zu glauben das es ein soooooooo einfaches problem ist ...

Und jetzt noch eine kleinigkeit. Wenn nichts in dem Edit feld eingegeben wird, bzw das alles gelöscht wird wie muss ich es schreiben das es dann 0 ist? weil sonst kommt ja die Fehlermeldung das es kein gültiger Integer wert ist ...

hatte das gestern schon mal versucht mit ner kleinen if anweisung, aber das ging mal voll in die Hose.

Gruss
Toast


Gausi - Mo 26.12.05 11:37

Schau dir mal StrToIntDef an. Ich weiss nicht genau, ob das bei deiner Delphiversion schon dabei ist, aber dabei kann man einen Defaultwert angeben, wenn die Konvertierung vom String in eine Zahl fehlschlägt.
Ansonsten: Nimm eine Konstruktion mit try...except.


Jan11 - Do 05.01.06 00:03
Titel: if anweisung
mach das doch ruhig mit if

Zitat:

Delphi-Quelltext
1:
if edit1.text='' then "deine_integer_variable" := 0;                    


Blackheart666 - Do 05.01.06 01:49

Hier nochmal die Lösung für Jan11, Ich schätze mal die Frage war schon beantwortet.


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure TForm1.Edit1Change(Sender: TObject);
begin
case StrToIntDef(Edit1.Text,0of
  0..1999: Label1.Caption := '1';
  2000..2999: Label1.Caption := '2';
 end;
end;