Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.04.2012, 16:26   #1
vasilii95
Новичок
Джуниор
 
Регистрация: 02.04.2012
Сообщений: 2
По умолчанию Delphi 2010 access violation

Написал модуль для работы с датами. Хотел сделать, чтобы при вводе неправильной даты автоматически происходила её корректировка, но при изменении значений в полях 'число' и 'месяц' вылетает ошибка Access Violation.
Насколько я понял, это как-то связано со строчками
Код:
if form1.edit1.Focused=false then exit;
и
Код:
if form1.edit2.Focused=false then exit;
Если их убрать, программа ошибок не выдаёт, но работает неправильно. Подскажите, пожалуйста, почему появляется эта ошибка и как её исправить.
Программа написана на Delphi 2010.
Вложения
Тип файла: zip d.zip (409.1 Кб, 13 просмотров)
vasilii95 вне форума Ответить с цитированием
Старый 02.04.2012, 17:22   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,317
По умолчанию

В чем выражается неверность работы программы при убирании этих строк?
Вроде поправляет дату без этих строк (ошибка вылезает только когда поле пустое, просто проверять нужно перед преобразованием, что строчка не пуста).
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 02.04.2012, 17:42   #3
vasilii95
Новичок
Джуниор
 
Регистрация: 02.04.2012
Сообщений: 2
По умолчанию

Если убрать эти строчки, то перестают правильно работать кнопки + и -(увеличение и убавление числа). То есть, например, месяц = 1, а число =31; при нажатии кнопки + число становится равным 1, а значение месяца не изменяется, хотя, по идее должно измениться на 2.
vasilii95 вне форума Ответить с цитированием
Старый 02.04.2012, 18:48   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,317
По умолчанию

Думал-думал, из-за чего возникает ошибка, придумал только костыль
Уберите эти строчки с проверкой активности и добавьте по 2 события к едитам (или в событии баттона напишите это):
Код:
procedure TForm1.Edit1Enter(Sender: TObject);
begin
 edit1.OnChange:=Edit1Change;
end;

procedure TForm1.Edit1Exit(Sender: TObject);
begin
edit1.OnChange:=nil;
end;
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 02.04.2012, 21:57   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
// вывод
result.Dayy:=Day;
result.Monthh:=Month;
result.Yearr:=year;
Ога, супер. А создавать экземпляр класса TData для Result кто будет?

P.S. Ох как мне твоя стратегия не нравится... Код чреват граблями, как по мне.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
access violation ho_N Компьютерное железо 2 30.11.2011 08:36
delphi... access violation error barm Общие вопросы Delphi 5 14.11.2011 06:01
Delphi - непонятный access violation KingOfNothing Помощь студентам 7 03.11.2009 00:46
Access Violation SunKnight Общие вопросы Delphi 2 05.06.2008 16:46
Access Violation Carbon Общие вопросы Delphi 12 18.09.2007 19:55