Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.11.21;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.008 c
1-69360
Nicko
2002-11-10 10:08
2002.11.21
Реестр


1-69294
Брат
2002-11-12 12:34
2002.11.21
Как сделать обратный отсчет времени?


14-69583
Anatoly Podgoretsky
2002-11-05 00:06
2002.11.21
Именинники 5 ноября


3-69106
jen_bond
2002-11-03 10:09
2002.11.21
Отчет в FreeReport


1-69427
Igorek
2002-11-11 10:22
2002.11.21
Как сделать класс с хендлом (что б принимал сообщения)?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский