Entwickler-Ecke

Sonstiges (Delphi) - Ausschließen von Minuszahlen


Tabakbrummel - So 22.02.09 09:51
Titel: Ausschließen von Minuszahlen
Hallo

Mein Problem ist ich möchte das negative Zahlen ausgeschlossen werden. Also wenn zum Beispiel -58 angezeigt wird soll dann 0 stehen.
Aber bei mein Code auf den Button clicke wird im Panel nichts Angezeigt.
Was mache ich hier Falsch?

Hier ist mal mein Code.


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
procedure TForm1.Button4Click(Sender: TObject);
var
  Dateiname : Real;
begin
  Dateiname := Anzünder[ComboBox2.ItemIndex];
  if Panel2.Caption >IntToStr(0then
    begin
      Panel2.Caption := IntToStr(Trunc((StrToFloat(Edit3.Text) / Dateiname - StrToFloat(Edit4.Text)) / 2)) + ' Stück möglich';
    end;
end;


Ulixes - So 22.02.09 10:49

Hallo,

wenn ich dein Problem richtig verstehe, brauchst du den Betrag einer Zahl, sodass du dies
dann addieren kannst und bei Null bist. Schau dafür mal unter der Funktion "Abs()".
Wenn du ein Problem mit der Erkennung von positiven bzw. negativen Zahlen hast, dann
schau dir die Funktion "sign" an, welche in der MathUnit integriert ist.

Ich hoffe, dass dir das hilft!

Schöne Grüße

//EDIT: Kann am Morgen wohl noch nicht klar denken. :oops:


Webo - So 22.02.09 10:51

Du prüfst nur darauf, ob die Zahl in Panel2.Caption größer 0 ist:
user profile iconTabakbrummel hat folgendes geschrieben Zum zitierten Posting springen:

Delphi-Quelltext
1:
if Panel2.Caption >IntToStr(0then                    

Du hast dann aber nicht den Fall eingebaut, dass es eine Minuszahl ist (was du ja haben willst).
Wenn bei einer Minuszahl automatisch 0 angezeigt werden soll (oder du überhaupt etwas machen möchtest, wenn es eine Minuszahl ist), dann musst du wohl noch ne extra IF-Abfrage einbauen, oder dieses an die alte mit else anhängen.


Tabakbrummel - So 22.02.09 11:25

Hallo Webo

Erstmal danke für deine Antwort.
Ich habe es jetzt so gemacht.


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
  if Panel2.Caption < IntToStr(0)  then
  Panel2.Caption := IntToStr(Trunc((StrToFloat(Edit3.Text) / Dateiname - StrToFloat(Edit4.Text)) / 2)) + ' Stück möglich';
  if Panel2.Caption > IntToStr(0then
  Panel2.Caption := IntToStr(Trunc((StrToFloat(Edit3.Text) / Dateiname - StrToFloat(Edit4.Text)) / 2)) + ' Stück möglich'
  else
  Panel2.Caption := '0' + ' Stück möglich';


Blackheart666 - So 22.02.09 11:42

Das dürfte dann das gleiche sein.

Delphi-Quelltext
1:
2:
3:
4:
if Panel2.Caption <> IntToStr(0)  then
  Panel2.Caption := IntToStr(Trunc((StrToFloat(Edit3.Text) / Dateiname - StrToFloat(Edit4.Text)) / 2)) + ' Stück möglich'
  else
  Panel2.Caption := '0 Stück möglich';

:wink:


Kha - So 22.02.09 12:40

user profile iconWebo hat folgendes geschrieben Zum zitierten Posting springen:
Du prüfst nur darauf, ob die Zahl in Panel2.Caption größer 0 ist:
Nope. Er prüft, ob der String in Caption größer als '0' ist. Richtig wäre

Delphi-Quelltext
1:
StrToInt(Panel2.Caption) > 0                    


Webo - So 22.02.09 12:55

user profile iconKha hat folgendes geschrieben Zum zitierten Posting springen:
Nope. Er prüft, ob der String in Caption größer als '0' ist.

Das ist mir heute morgen gar nicht aufgefallen ... Du hast aber natürlich Recht :)


jaenicke - So 22.02.09 14:12

Und noch einfacher (und sauberer) wäre es, das an der Stelle zu machen, wo der Zahlenwert ins Panel geschrieben wird, anstatt aus der Anzeige im Panel einen String wieder auszulesen und weiterzuverarbeiten...