Autor Beitrag
Toastbrotbaby
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 98



BeitragVerfasst: Mo 26.12.05 11:14 
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.

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 4613
Erhaltene Danke: 24

XP home, prof
Delphi 2009 Prof,
BeitragVerfasst: 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();

_________________
In the beginning was the word.
And the word was content-type: text/plain.
Toastbrotbaby Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 98



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8548
Erhaltene Danke: 477

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: 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.

_________________
We are, we were and will not be.
Jan11
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 62



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

Zitat:
ausblenden Delphi-Quelltext
1:
if edit1.text='' then "deine_integer_variable" := 0;					
Blackheart666
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2195

XP
D3Prof, D6Pers.
BeitragVerfasst: Do 05.01.06 01:49 
Hier nochmal die Lösung für Jan11, Ich schätze mal die Frage war schon beantwortet.

ausblenden 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;