Entwickler-Ecke

Sonstiges (Delphi) - Überprüfen ob SpinEdit eine Zahl hat


hui1991 - Di 11.04.06 11:10
Titel: Überprüfen ob SpinEdit eine Zahl hat
Immer wenn ich die Zahl in SpinEdit markiere und eine Zahl eintippe kommt eine Fehlermeldung. Wie kann ich überprüfen ob es jetzt ein Integer ist?

MfG
hui1991


BenBE - Di 11.04.06 11:23

Versuch mal TryStrToInt ... Oder per Val den Fehlercode abfragen ... Ansonsten geht auch StrToIntDef(S, 0) = StrToIntDef(S, 1)


matze - Di 11.04.06 16:40

in ein SpinEdit kann man doch sowieso nur Zhlen eintippen !


AXMD - Di 11.04.06 16:51

user profile iconmatze hat folgendes geschrieben:
in ein SpinEdit kann man doch sowieso nur Zhlen eintippen !


So ist es. Ich glaube daher, dass sich
user profile iconhui1991 hat folgendes geschrieben:
Immer wenn ich die Zahl in SpinEdit markiere und eine Zahl eintippe kommt eine Fehlermeldung.
darauf bezieht, dass beim Überschreiben kurzzeitig der Zustand "Leerstring" im SpinEdit vorliegt - daher meldet Delphi einen Fehler. Außerhalb der IDE tritt der soweit ich weiß aber nicht auf.

AXMD


matze - Di 11.04.06 17:27

das wäre mir auch neu.


hui1991 - Di 11.04.06 17:40

Da es sich ja noch auf SpinEdit bezieht frage ich mal wie man diesen Code verkürzen kann:

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:
  Form1.startwert[1]:=SpinEdit1.Value*1000;
  Form1.startwert[2]:=SpinEdit3.Value*1000;
  Form1.startwert[3]:=SpinEdit5.Value*1000;
  Form1.startwert[4]:=SpinEdit7.Value*1000;
  Form1.startwert[5]:=SpinEdit9.Value*1000;
  Form1.startwert[6]:=SpinEdit11.Value*1000;
  Form1.startwert[7]:=SpinEdit13.Value*1000;
  Form1.startwert[8]:=SpinEdit15.Value*1000;
  Form1.startwert[9]:=SpinEdit17.Value*1000;
  Form1.startwert[10]:=SpinEdit19.Value*1000;
  Form1.startwert[11]:=SpinEdit21.Value*1000;
  Form1.startwert[12]:=SpinEdit23.Value*1000;
  Form1.wieholungswert[1]:=SpinEdit2.Value*1000;
  Form1.wieholungswert[2]:=SpinEdit4.Value*1000;
  Form1.wieholungswert[3]:=SpinEdit6.Value*1000;
  Form1.wieholungswert[4]:=SpinEdit8.Value*1000;
  Form1.wieholungswert[5]:=SpinEdit10.Value*1000;
  Form1.wieholungswert[6]:=SpinEdit12.Value*1000;
  Form1.wieholungswert[7]:=SpinEdit14.Value*1000;
  Form1.wieholungswert[8]:=SpinEdit16.Value*1000;
  Form1.wieholungswert[9]:=SpinEdit18.Value*1000;
  Form1.wieholungswert[10]:=SpinEdit20.Value*1000;
  Form1.wieholungswert[11]:=SpinEdit22.Value*1000;
  Form1.wieholungswert[12]:=SpinEdit24.Value*1000;


DarkHunter - Di 11.04.06 17:49

Mit einer Schleife + FindComponent


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
var n: integer;
...
for n := 0 to 12 do
  Form1.startwert[n]:=Findcomponent('SpinEdit'+inttostr(n*2-1)).Value*1000;
for n := 0 to 12 do
  Form1.wieholungswert[n]:=Findcomponent('SpinEdit'+inttostr(n*2)).Value*1000;


hui1991 - Di 11.04.06 17:59

Delphi gibt darauf diesen Fehler aus:

Quelltext
1:
2:
[Fehler] Unit2.pas(284): Undefinierter Bezeichner: 'Value'
[Fehler] Unit2.pas(289): Undefinierter Bezeichner: 'Value'


Ich hab n als Integer festgelegt.
Mein Delphi gibt fehler bei Ceil und dem Gegenteil aus.
In der Hilfe steht es drin blos bei Delphi funktioniert es nicht.
Ich besitze Delphi 5.


fidionael - Di 11.04.06 18:10

Versuch es mal hiermit:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
var n: integer;  
...  
for n := 0 to 12 do  
  Form1.startwert[n]:=TSpinEdit(Findcomponent('SpinEdit'+inttostr(n*2-1))).Value*1000;  
for n := 0 to 12 do  
  Form1.wieholungswert[n]:=TSpinEdit(Findcomponent('SpinEdit'+inttostr(n*2))).Value*1000;


Müsste funktionieren, ist allerdings ungetestet.

Mfg


hui1991 - Di 11.04.06 18:34

Wie kann ich überprüfen ob das SpinEdit jetzt leer ist denn so kommt immer ein fehler. Weil '' kein Integer wert ist und mit einem String kann ich es nicht vergleichen.


fidionael - Di 11.04.06 18:46

Was ist denn mit:

Delphi-Quelltext
1:
2:
3:
4:
if not IntToStr(SpinEdit.Value)='' then
begin
  //Dein Quelltext
end;


Aber ich habe SpinEdits auch schon öfter benutzt und eine solche Abfrage war bei mir nie nötig?!


hui1991 - Di 11.04.06 18:48

Bei dem gibt er dies aus:
[Fehler] Unit2.pas(312): Inkompatible Typen: 'String' und 'Integer'

Ich muss dieses Programm öfters testen und muss die Wert zu anfang eintippen.
Deswegen brauche ich das auch.


jasocul - Di 11.04.06 18:53


Delphi-Quelltext
1:
2:
  if SpinEdit1.Text = '' then
    ShowMessage('Nix drin');


hui1991 - Di 11.04.06 19:06

So das Problem ist jetzt endlich weg.

Danke für eure Unterstützung.
MfG
hui1991