Ein paar Tipps zu den vorherigen Lösungen:
Werte aus Textfeldern sollten nicht mit StrToInt umgewandelt werden. Besser ist
auswahl := StrToIntDef(ComboBox1.Text,auswahl); ComboBox1.Text := IntToStr(auswahl);
Beim normalen StrToInt() wird eine
Exception ausgelöst, wenn der eingegebene Text nicht in eine Zahl umgewandlet werden kann. Die obige Zeile
versucht, den Text in eine Zahl umzuwandeln. Wenn das nicht geht, wird der Vorgabewert übernommen, den man als zweiten Parameter angibt. Also hier: wenn eine Zahl eingegeben wurde, übernimm diese, ansonsten wird wieder der alte Wert genommen.
Danach wird das Textfeld nochmal neu gesetzt.
Wer es richtig schön machen möchte inkl. Fehlermeldung für den Anwender, sollte sich TryStrToInt() angucken:
Delphi-Quellcode:
if not TryStrToInt(ComboBox1.Text, auswahl) then begin
MessageDlg('Würden Sie bitte freundlicherweise nur Zahlen eingeben, sonst komme ich durcheinander.'+#10#10+
'Danke!', mtError, [mbOk], 0);
exit;
end;
Auf Items[] sollte nicht ohne Prüfung zugegriffen werden, weil es auch dann wieder zu einer
Exception kommen kann:
if (ComboBox1.ItemIndex >= 0) then str := Combobox1.items[combobox1.itemindex];
Das bringt hier aber eigentlich nichts, da die Items auch wieder Strings sind, die mit StrToIntDef umgewandelt werden müssen.