String): Boolean;
begin
try
DoubleVar := StrToFloat(Text);
Result := True;
except
on E: EConvertError do
begin
Result := False;
end;
end;
end;
Делаю так, исключение не хочет отлавливаться. Возможно ли это? Если да, то как?
Стикер
function _TryTextToDouble(var DoubleVar: Extended; Text: String): Boolean; begin Result := False; try DoubleVar := StrToFloat(Text); Result := True; except end; end;
Но понял. Если бы вы выразились более подробно, это бы помогло мне лучше вас понять
Какая разница?
Зачем делать то, что уже есть?
Я не знал про такое)
не используй исключения, если можно их обойти: StrToFloatDef
А как проверить что сконвертировалось корректно?
А в институтах преподы прям требуют, чтобы обязательно была предусмотрена обработка ошибок ))
пиши в Def что-нить невалидное
А где ты возьмёшь гевалидное число))
2234.23424d
невалидное с точки зрения логики Device.LastRec.Latitude := StrToFloatDef(LatitudeEdit.Text, 0); Device.LastRec.Longitude:= StrToFloatDef(LongitudeEdit.Text, 0);
Зачем? Если можно пропустить Def и использовать Try.
Это не всегда возможно
у Try.. используется out-параметр
если что, в си принято не пользоваться исключениями, как хороший тон )
Тут включается все вместе... Исключения - это дорого. Исключения - ломают логику и затрудняют отладку/чтение.
Обсуждают сегодня