03. august 2003 - 23:08Der 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 ?
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;
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
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
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.