03. august 2003 - 23:08
Der er
2 kommentarer og
1 løsning
floating point division by zero
Har nogle edit-felter hvor der skal indtastes tal(3 stk)
der skal være fejlmeddelse ved forkerte indtastninger.
Det går fint hvis man ikke taster forkert, men hvis man
ikke taster noget sker det som spm-titlen siger ?.Kan det undgåes ?
03. august 2003 - 23:08
#1
Koden er :procedure TForm1.Button2Click(Sender: TObject);
var
code:integer;
ovf,perspir,perspiro:real;
I:Integer;
g:integer;
f:real;
ts:string;
begin
val(edit1.text,I,code);
if code <> 0 then
begin
messagedlg (' udfyld vægt igen' +Inttostr(code),mtwarning ,[mbok] ,0)
end
else
repeat until code=0;
val(edit2.text,g,code);
if code <> 0 then
begin
messagedlg ('kun tal:slet HELE FELTET ! og tast forfra og udfyld høj osse' +Inttostr(code),mtwarning ,[mbok] ,0)
end
else
repeat until code=0;
val(edit5.text,f,code);
if code <> 0
then
begin
messagedlg ('brug punktum som . og ikke , og kun tal:slet HELE FELTET ! og tast forfra Og udfyld S-K osse' +Inttostr(code),mtwarning ,[mbok] ,0)
end
else
repeat until code=0;
begin
ovf:=(exp(0.425*ln(I)))*(exp(0.725*ln(g)))*0.007184;
perspiro:=ovf*375;
perspir:=perspiro+(perspiro*0.2*(f-37));
str(perspir:3:1,ts);
03. august 2003 - 23:52
#2
du kunne bruge en MaskEdit, og selv definere indputtet som er tilladt
//snip fra hjælpen
Use EditMask to restrict the characters a user can enter into the masked edit control to valid characters and formats. If the user attempts to enter an invalid character, the edit control does not accept the character. Validation is performed on a character-by-character basis by the ValidateEdit method.
//snip end
04. august 2003 - 03:01
#3
Stone: det lyder smart, men det er nok for svært alligevel for mig: har klaret det ved at lave en slags default-værdi:
val(edit2.text,g,code);
if code <> 0 then
begin
// her er default-værdien
g:=50;
messagedlg ('kun tal:slet HELE FELTET ! og tast forfra og udfyld høj osse' +Inttostr(code),mtwarning ,[mbok] ,0)
end
else