Форум: "Основная";
Поиск по всему сайту: 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.024 c
14-90656          NetBreaker666         2002-01-13 20:05  2002.02.28  
Зацените мою новую фишку ;)


7-90691           Fredericco            2001-11-24 00:38  2002.02.28  
При печати получаю exeption :-(((


3-90460           VladimirL             2002-02-01 17:24  2002.02.28  
Фильтрация по частичному совпадению


7-90687           Andry                 2001-11-17 21:12  2002.02.28  
Результат работы DOS программы.


3-90489           Алехано               2002-01-22 09:57  2002.02.28  
Запрос к запросу с параметром