Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.11.21;
Скачать: [xml.tar.bz2];

Вниз

Почему этот код не работает ?!!! Помогите!!!плиз   Найти похожие ветки 

 
Part   (2002-11-11 11:56) [0]

По идее этот код должен отлавливать неправильные числа, но когда туда записываешь стринг - возникает EDatabaseError который я не могу перехватить :( Помогите!!!

procedure TForm_R.DBEdit20Exit(Sender: TObject);
var
n : integer;
begin
try
n:= StrToInt(Form_R.DBEdit20.Text);


except
on EDatabaseError do
begin
ShowMessage("Incorrect format!!. Please enter number 1-31!");
DBEdit20.SetFocus;
end;
end;
if (n >31) or (n<1) then
begin
ShowMessage("Incorrect format!!. Please enter number 1-31!");
DBEdit20.SetFocus;
end;
end;


 
Alx2   (2002-11-11 12:00) [1]

>Part (11.11.02 11:56)
>n:= StrToInt(Form_R.DBEdit20.Text);
> on EDatabaseError do

Вряд ли StrToInt вернет EDatabaseError

Вот пример из хэлпа

const

CRLF = #13 + #10;
var
TempDate: TDateTime;
begin
try
TempDate := StrToDateTime("99/99/1998");
except
on E: EConvertError do
ShowMessage(E.ClassName + CRLF + E.Message);
end;



 
Alx2   (2002-11-11 12:03) [2]

>Part (11.11.02 11:56)
Вообще говоря, с помощью E.ClassName можно определить кто пришел.


 
KoluChi   (2002-11-11 12:05) [3]

во-первыx, лучше использовать
n := StrToIntDef(Form_R.DBEdit20.Text, 0);
а во-вторых согласен с Alx2
EDatabaseError - ошибка базы данных, а не преобразования





 
KoluChi   (2002-11-11 12:07) [4]

DBEdit20.Field.Value := StrToIntDef(Form_R.DBEdit20.Text, 0);


 
holy   (2002-11-11 12:09) [5]

Народ, не мучайте человека... Попробуй запустить прогу не из Делфей (ее обработчик сам все перехватывает и проге не достается)


 
Part   (2002-11-11 12:10) [6]

Я понимаю - но как отловить этот EDatabaseError? Когда переходишь с этого поля на другое возникает этот ерор :( У меня стоит обработчик на OnExit но ошибочка проходит мимо ???



 
Alx2   (2002-11-11 12:14) [7]

>holy (11.11.02 12:09)
>Попробуй запустить прогу не из Делфей ( ее обработчик сам все
>перехватывает
и проге не достается)

Снять
Tools->Debugger->Language Exceptions->Stop on Delphi Exceptions


 
KoluChi   (2002-11-11 12:20) [8]

DataSource.AutoEdit := true - поэтому при выходе из DBEdit изменения пытаются сохранить в базе данных. Отловить можно
по событиям DataSource.DataSet.OnBeforePost;


 
holy   (2002-11-11 12:25) [9]

Тогда, если такое дело сделай проще... Судя по всему у тебя на форме DBEdit (и видимо ОнЭксит происходит позже, чем попытка записи в базу) махни его на едит просто и из него в соответствующее поле заноси руками. или же не меняя дбедита сделай ему обработчик события от кнопок клавиатуры и проверяй
if not Key in ["0".."9",#9,#8] then key:=0;
Тогда символы не описанного здесь кода просто не введутся.


 
Part   (2002-11-11 12:43) [10]

to KoluChi

я посмотрел DataSource.AutoEdit := false и все равно сначала пытается сделать апдейт базе , а потом эксит :((

всем спасибо holy - попробую сделать как ты посоветовал - вносить то в Едит просто - а вот чтоб пользователь видел значения базы когда ничего не меняет ?


 
Holy   (2002-11-11 12:58) [11]

2Part
Вноси в едит значения из поля... Еще можно попробовать у Table событие вроде BeforeEdit,BeforePost,BeforeInsert oбрабатывать или After... Попробуй.


 
MsGuns   (2002-11-11 13:09) [12]

ИМХО, здесь делается попытка проверить корректность введенного ЧИСЛА даты. Я в таких случаях проверяю в защищенном блоке ВСЮ дату, т.е. ЧЧММГГГГ. Если все три составляющих в разных контролах, то не следует фокусировать именно ошибочный контрол, а просто давать одну мессагу. Контроль же делать не по OnExit каждого DBEDIT, а по кнопке "Записать". Да, ессно, вместо DBEdit использовать обычные TEdit на отдельной панельке рядом с гридом.
Что есть лучше хотя бы потому, что Датасет находится не в броузерном стате минимальное время (что, например, весьмо критично для формата Paradox)



Страницы: 1 вся ветка

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

Наверх





Память: 0.47 MB
Время: 0.008 c
7-69610
savva
2002-09-19 15:31
2002.11.21
Sleep и разная частота процессоров.


1-69357
SiaCD
2002-11-13 01:48
2002.11.21
Колличество строк в ListBox


1-69368
AndreyAG
2002-11-10 09:51
2002.11.21
Окна


14-69546
MFV
2002-11-01 22:30
2002.11.21
Проблемы с Виндой


14-69502
Феликс
2002-11-02 00:21
2002.11.21
Сила ума. (beta ver.) Зацените.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский