Autor Beitrag
Killuminati91
Hält's aus hier
Beiträge: 2



BeitragVerfasst: So 08.02.09 23:05 
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:

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19324
Erhaltene Danke: 1749

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 08.02.09 23:12 
Hallo und :welcome: im Forum!

Wie wäre es so: ;-)
ausblenden 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:
ausblenden 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:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2195

XP
D3Prof, D6Pers.
BeitragVerfasst: So 08.02.09 23:41 
Lässt nur Zahlen und . zu.
ausblenden 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;

_________________
Blackheart666
Der Irrsinn ist bei Einzelnen etwas Seltenes, - aber bei Gruppen, Parteien, Völkern, Zeiten die Regel. (Friedrich Nietzsche)
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19324
Erhaltene Danke: 1749

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 41



BeitragVerfasst: Do 22.10.09 13:53 
ohne dieses alte thema unnütz pushen zu wollen^^:

man sollte meinermeinung nach den code so machen:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 26

Windows 7 Professional 32Bit
Delphi 2009 Enterprise
BeitragVerfasst: Di 08.06.10 09:00 
oder

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


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