@s-f - poprzednik podał Ci rozwiązanie według Twojego kodu;
Innym rozwiązaniem de facto wykluczającym konieczność zastosowania bloku Try Except jest skorzystanie z funkcji TryStrToInt, która w razie jakiegokolwiek błędu konwersji ani nie zatrzyma programu, ani nie wywoła wyjątku, także w trybie debugowania;
Czyli Twój kod wyglądałby tak jak poniżej, zachowując obecną logikę:
if TryStrToInt(Edit1.Text, a) and TryStrToInt(Edit2.Text, b) and TryStrToInt(Edit2.Text, c) then
begin
// dalsza część
end
else
ShowMessage('Wprowadź calkowitą iczbę w przedziale od 1 do 250');
Ewentualnie, jeśli już konieczne chcesz mieć kod liniowy, to wystarczy zanegować całość warunku i wtedy wyświetlić komunikat, po czym wyjść z bloku kodu instrukcją Exit:
if not (TryStrToInt(Edit1.Text, a) and TryStrToInt(Edit2.Text, b) and TryStrToInt(Edit2.Text, c)) then
begin
ShowMessage('Wprowadź calkowitą iczbę w przedziale od 1 do 250');
Exit;
end;
// dalsza część
Razem z przedziałami może to wyglądać tak:
{..}
if TryStrToInt(Edit1.Text, a) and TryStrToInt(Edit2.Text, b) and TryStrToInt(Edit2.Text, c) then
if (a in [1 .. 250]) and (b in [1 .. 250]) and (c in [1 .. 250]) then
begin
// dalsze operacje
Exit; // tu wychodzimy z bloku kodu, pomijając końcowy komunikat
end;
ShowMessage('Wprowadź calkowitą iczbę w przedziale od 1 do 250');
end;
Te zmienne trzeba nazwać sensowniej, bo po identyfikatorze nie wiadomo do czego służą.