Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.02.28;
Скачать: [xml.tar.bz2];




Вниз

Какая исключительная ситуация происходит ? 


dim2001   (2002-02-08 18:51) [0]

Подскажите, пожалуйста,какая исключительная ситуация происходит при выполнении строки : N:=SpinEdit.Value // N - integer
если в spin ввели вещественное число? EConvertError не работает.
СПАСИБО!



Юрий Зотов   (2002-02-08 18:56) [1]

Дык... запустите программу под отладкой, введите действительное число - и сами все увидите в сообщении об ошибке.



McSimm   (2002-02-08 19:00) [2]

Именно EConvertError и происходит.
Только поднимается и обрабатывается оно не на этой строке, а внутри компонента:

function TSpinEdit.GetValue: LongInt;
begin
try
Result := StrToInt (Text);
except
Result := FMinValue;
end;
end;

Увидеть произошедший Exception можно из-под среды Делфи. При запуске программы без нее ошибка не проявится. (Но и Value не изменится)



McSimm   (2002-02-08 19:01) [3]

Сорри, изменится - станет равным FMinValue



dim2001   (2002-02-08 19:39) [4]

У меня этот фрагмент кода выполняет dll при ошибочном преобразовании числа комп просто затыкается. Заодно подскажите как в dll делать точки останова?
А куда поместить объявление SpinEdit.GetValue и ее реализацию ?



Dimk   (2002-02-08 21:07) [5]

Это же он Тебе из исходников TSpinEdit вытащил.
Все это можно посмотреть в каталоге c:/program files/...Delphi?/source
Никуда ничего не надо помещать - все уже у Тебя есть.



dim2001   (2002-02-08 22:09) [6]

Прошу прощения за бестолковость (10 лет пишу на ФОРТРАНЕ и тут вдруг перешел на DELPHI) но почему не работает этот кусок:

procedure TForm1.Button1Click(Sender: TObject);
var
k : integer;
begin
TRY
K:=SpinEditK.Value;
EXCEPT
ON EO: EConvertError DO BEGIN
MessageDlg ("ОШИБКА !! НЕ МОГУ ПРЕОБРАЗОВАТЬ ЧИСЛО К ТИПУ INTEGER", mtError,[mbOk],0);
SpinEditK.Value:=SpinEditK.MinValue;
Exit;
END;
ELSE BEGIN
MessageDlg ("ОШИБКА НЕ ИДЕНТИФИЦИРОВАНА",mtError,[mbOk],0);
Exit;
END;
END;
end;

с dll разобрался, это у меня особая форма перехватывает все сообщения и скрывает их. СОРРИ ....



McSimm   (2002-02-10 17:55) [7]

Дело в том, что возникающий EConvertError уже обработан компонентом. Поэтому ваш try-except его уже не поймает.
Тут надо идти другим путем.
1. На событие OnChange написать что-то вроде:
try I := StrToInt(SpinEdit1.Text)
except
......
end
2. Воспользоваться "услугами" другого компонента - UpDown с палитры Win32.




Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.02.28;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.73 MB
Время: 0.014 c
1-90575           Rev                   2002-02-12 09:16  2002.02.28  
Проблема с языковой раскладкой клавиатуры


1-90532           ДмитрийВ              2002-02-09 18:07  2002.02.28  
как обработать событие


1-90589           Alexandr              2002-02-12 13:27  2002.02.28  
Фреймы


4-90702           Строр                 2001-12-28 12:44  2002.02.28  
Как отследить нажатие клавиш когда прога сидит в трее?


7-90678           ISA                   2001-11-25 12:40  2002.02.28  
Работа с COM-портом