Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Zahlen von Anfang an ausschließen (https://www.delphipraxis.net/163658-zahlen-von-anfang-ausschliessen.html)

Mulgatree 9. Okt 2011 18:38

Delphi-Version: 6

Zahlen von Anfang an ausschließen
 
Hi!
Ich bin zum ersten mal hier auf Delp-PRAXis, also erspart mir bitte die kommentare das diese frage in der falschen Sparte ist.

Nun zu meinem Problem:
Ich muss für informatik einen Taschenrechner programmieren, an für sich kein Problem, er soll nur '+' '-' 'div' und 'mod'
können. Allerdings kann man ja nicht durch 0 teilen, deswegen hat uns unser lehrer gesagt, das wir verhindern sollen, dass der DAUS (Dümmster Anzunehmender USer) das programm crasht.
Ich hab also versucht die null auszuschließen, und zwar wiefolgt:
Delphi-Quellcode:
If (spe_2.value=0) or (spe_1.value=0)
  then
    begin
    b_div_kom.enabled:=false;
    b_div_rest.enabled:=false;
    lbl_div_0.Visible:=true;

If spe_2.value > 0 then begin
b_div_kom.enabled:=true;
b_div_rest.enabled:=true;
lbl_div_0.Visible:=false;
end;
end;
Also werden die Button bei dem erfüllen dieser Vorraussetzung ungebrauchbar. Allerdings krieg ich dann immer die Fehlermeldung: Meldun "" ist kein gültiger integerwert wenn ich die null aus spinbox löschen will.
und außerdem werden die Button erst disabled, wenn ich noch einmal die null eingebe... hoffe es ist nicht zu kompliziert formuliert.

himitsu 9. Okt 2011 18:58

AW: Zahlen von Anfang an ausschließen
 
Delphi-Referenz durchsuchenTryStrToInt, bzw. Delphi-Referenz durchsuchenTryStrToFloat und schon kannst du die Strings problemfrei konvertieren.

Ansonsten Exceptionbehandlung mit Try-Except. (wobei Ersteres zu bevorzugen ist)

Theoretisch würde auch
Delphi-Quellcode:
b_div_kom.enabled := spe_2.value <> 0;
ausreichen, aber wie du gemerkt hast, ist die integrierte Typkonvertierung nicht unbedingt passend, für deine Bedürfnisse ... also selber umwandeln.


Zitat:

Ich bin zum ersten mal hier auf Delp-PRAXis, also erspart mir bitte die kommentare das diese frage in der falschen Sparte ist.
Hast du dir denn Gedanken gemacht, wo es reinpassen könnte?
Wenn ja, dann hätte man sich solche Sätze sparen können, vorallem da man sich ja keine großen Sorgen machen muß.
(klingt halt nicht unbedingt ganz so frendlich :wink:)

Nja, paßt schon.

Aber dennoch Willkommen an Board.

Mulgatree 9. Okt 2011 19:16

AW: Zahlen von Anfang an ausschließen
 
Okay, danke! :) :)

Sir Rufo 10. Okt 2011 03:06

AW: Zahlen von Anfang an ausschließen
 
Zitat:

Zitat von Mulgatree (Beitrag 1129495)
DAUS (Dümmster Anzunehmender USer)

Und ich dachte immer das heisst DAU ... man lernt nie aus

Oder ist diese Information von einem DAL? :mrgreen:

Medium 10. Okt 2011 03:38

AW: Zahlen von Anfang an ausschließen
 
Wenn schon, dann von einem DALEK :mrgreen:

Jumpy 10. Okt 2011 08:10

AW: Zahlen von Anfang an ausschließen
 
Ei der Daus

Luckie 10. Okt 2011 11:20

AW: Zahlen von Anfang an ausschließen
 
Zitat:

Zitat von Mulgatree (Beitrag 1129495)
Allerdings krieg ich dann immer die Fehlermeldung: Meldun "" ist kein gültiger integerwert wenn ich die null aus spinbox löschen will.

Ich nehme an, du bekommst diese Meldung wenn kein Wert in dem SpinEdit steht. Kann es sein, dass du irgendwo eine OnChange Ereignisbehandlungsroutine für das SpinEdit hast, wo auf dessen Wert zugegriffen wird?

himitsu 10. Okt 2011 11:59

AW: Zahlen von Anfang an ausschließen
 
Jupp, vermutlich ist der Code dort und sein Zugriff geht ja aktuell übet
Delphi-Quellcode:
spe_2.value
, welches intern ein StrToInt benutzt.

stahli 10. Okt 2011 12:01

AW: Zahlen von Anfang an ausschließen
 
Zitat:

Zitat von Mulgatree (Beitrag 1129495)
Fehlermeldung: Meldun "" ist kein gültiger integerwert wenn ich die null aus spinbox löschen will.

Das ist leider ein Fehler direkt im SpinEdit.
Entweder musst Du Dich damit abfinden oder eine andere (fehlerbreinigte) Komponente verwenden. Das ist aber nicht ganz so einfach (man muss sich etwas mit der Komponentenentwicklung befassen) ...

[Edit]In der Ereignisbehandlung prüft er ja scheinbar explizit auf 0.[/Edit]


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:30 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz