Entwickler-Ecke

Sonstiges (Delphi) - if a=ZAHL


Killuminati91 - So 08.02.09 23:05
Titel: if a=ZAHL
Moin, hab grad mit Delphi angefangen und will nen kleinen Taschenrechner machen.
Wenn man ins Edit-Feld etwas anderes als eine Zahl eingibt soll beim drücken des Knopfes eine Meldung kommen, aber wie genau stelle ich das an? Hier mein Quelltext:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
procedure TForm1.BtnPlusClick(Sender: TObject);
var
  a, b, c : Integer;
begin
  if a=Zahl then
    begin
    a:=StrToInt(EdPlus1.Text);
    end
  else
    begin
    ShowMessage('Bitte nur Zahlen eingeben!');
    end

  if b=Zahl then
     begin
     b:=StrToInt(EdPlus2.Text);
     end
  else
    begin
    ShowMessage('Bitte nur Zahlen eingeben!');
    end

  c:=a+b;
  EdPlus3.Text:=IntToStr(c);

end;


jaenicke - So 08.02.09 23:12

Hallo und :welcome: im Forum!

Wie wäre es so: ;-)

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
procedure TForm1.BtnPlusClick(Sender: TObject);
var
  a, b: Integer;
begin
  if not TryStrToInt(EdPlus1.Text, a) or not TryStrToInt(EdPlus2.Text, b) then
  begin
    ShowMessage('Bitte nur Zahlen eingeben!');
    Exit;
  end;

  EdPlus3.Text := IntToStr(a + b);
end;
TryStrToInt gibt dir zurück ob die Umwandlung erfolgreich war und legt das Ergebnis in den zweiten Parameter.
Exit verlässt die aktuelle Schleife oder Prozedur, der Quelltext danach wird also nicht mehr ausgeführt (hier die Ergebnisanzeige).

Oder:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
procedure TForm1.BtnPlusClick(Sender: TObject);
var
  a, b: Integer;
begin
  if TryStrToInt(EdPlus1.Text, a) and TryStrToInt(EdPlus2.Text, b) then
    EdPlus3.Text := IntToStr(a + b)
  else
    ShowMessage('Bitte nur Zahlen eingeben!');
end;

// EDIT:
Vielleicht noch was zu deinem Code:
user profile iconKilluminati91 hat folgendes geschrieben Zum zitierten Posting springen:

Delphi-Quelltext
1:
2:
3:
  if a=Zahl then
    begin
    a:=StrToInt(EdPlus1.Text);
Du willst ja nicht schauen ob a eine Zahl ist, sondern ob in EdPlus1.Text eine Zahl drin steht. ;-)
In a ist bis dahin ja noch nichts drin.


Blackheart666 - So 08.02.09 23:41

Lässt nur Zahlen und . zu.

Delphi-Quelltext
1:
2:
3:
4:
5:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if not( Key in ['0'..'9'#8] ) then
  Key := #0;
end;


jaenicke - So 08.02.09 23:50

Ich glaube dazu wäre eine kleine Erklärung sinnvoll:
Mit dem Code kannst man gleich verhindern, dass in die Editfelder etwas anderes als Zahlen eingegeben werden.
Um den Code zu nutzen müssen beide Editfelder markiert werden und dann im Objektinspektor (links unten normalerweise) unter Ereignisse in das Eingabefeld neben OnKeyPress doppelt geklickt werden. In die dann erstellte Methode gehört dann der Code.

Dieser sorgt bei einem Tastendruck dafür, dass alles außer Zahlen und Backspace verworfen wird.


ololo - Do 22.10.09 13:53

ohne dieses alte thema unnütz pushen zu wollen^^:

man sollte meinermeinung nach den code so machen:

Delphi-Quelltext
1:
2:
  if not (key in ['0'..'9'#8#46] ) then
    key := #0;

dann hat man die entfernen taste auch noch dabei, die benutz ich da auch des öfteren...;)

greetz


ThunderDragon - Di 08.06.10 09:00

oder


Delphi-Quelltext
1:
2:
if not TryStrToInt(Edit1.Text,lIntVar) then
  Key := #0;


Edit: Sorry, dass sollte eigentlich in einen anderen Thread ...