Hej
Jeg har forsøgt, at få InputBox'en til kun, at godkende text indput og fange alle andre fejl, med mulighed for ny indtast mulighed.
Du begår den fejl at typecaste til en streng. Det vil typisk gå godt, fordi set fra en strengs synspunkt er alle karaktere gyldige. Du er istedet nødt til at teste strengen for tilstedeværelsen af ugyldige tegn. I dette tilfælde tal.
Jeg har modifieret din funktion en anelse, så den virker som jeg kan forstå du gerne vil have den til at virke.
function IndskrivSaetning( sCaption: string; rDefault: String): String;
var
s: string;
tmp: String;
idx: Integer;
begin
s := InputBox('Indskriv en sætning', sCaption, String(rDefault));
try
tmp := LowerCase(s);
for idx := 1 to length(tmp) do
begin
if not (tmp[idx] in ['a'..'z', 'æ', 'ø', 'å']) then
raise EConvertError.Create('Ikke gyldig sætning.');
end;
except
on e: EConvertError do
begin
ShowMessage('Fejl: ' + e.Message);
tmp := IndskrivSaetning(sCaption, rDefault);
end;
end; // try..except.
Result := tmp;
end;
--
Thomas Due
Software developer
udvikleren.dk - ASP redaktør
tdue@mail.dk
Hej Thomas Due
Det var lige det jeg ønskede. Tak.
function IndtastHelTal( sCaption: string; iDefault: Integer): Integer;
var
s: string;
tmp: Integer;
begin
s := InputBox('Indtast heltal', sCaption, IntToStr(iDefault));
try
tmp := StrToInt(s);
except
on EConvertError do
begin
ShowMessage('Du skal indtaste et heltal !');
tmp := IndtastHelTal(sCaption, iDefault);
end;
end; // try..except.
Result := tmp;
end;
function IndtastKommaTal( sCaption: string; rDefault: Real): Real;
var
s: string;
tmp: Real;
begin
s := InputBox('Indtast et komma-tal', sCaption, FloatToStr(rDefault));
try
tmp := StrToFloat(s);
except
on EConvertError do
begin
ShowMessage('Du skal indtaste et komma-tal !');
tmp := IndtastKommaTal(sCaption, rDefault);
end;
end; // try..except.
Result := tmp;
end;
Her bidrager jeg så med 2 functioner for IndtastHelTal og IndtastKommaTal. Som tak for hjælpen. Og ikke mindst hvis jeg også kunne hjælpe andre.
Er der nogle der har forslag eller forbedering til functionerne er det meget velkommen.
Mvh
Monie Jacobsen
E-mail:energy@sunwind.dk