[РЕШЕНО] FPCUnit - куда пропал Access Violation?

Вопросы использования сторонних (не входящих в состав FPC и Lazarus) утилит и библиотек.

Модератор: Модераторы

[РЕШЕНО] FPCUnit - куда пропал Access Violation?

Сообщение Brainenjii » 27.09.2011 14:40:47

Долго искал ошибку - внезапно обнаружил, что код вида:
Код: Выделить всё
Procedure TTestCase1.TestHookUp;
Var
  aManager: BAttributesManagerClass;
Begin
  aManager.AddAttribute(nil, 'Test Group1', akGroup);
End;

прекрасно выполняется. Как такое может быть? Проект прилагаю.

P.S. вне FPCUnit Access Violation замечательно поднимается
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось Brainenjii 12.04.2012 18:06:44, всего редактировалось 1 раз.
Аватара пользователя
Brainenjii
энтузиаст
 
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Re: FPCUnit - куда пропал Access Violation?

Сообщение Brainenjii » 12.04.2012 12:50:42

Всё даже ещё интересней:
Код: Выделить всё
Unit TestCase1;

Interface

Uses
  Classes, fpcunit, testutils, testregistry;

Type

  TTestCase1= Class(TTestCase)
  Published
    Procedure TestHookUp;
  End;

Implementation

Procedure TTestCase1.TestHookUp;
Var
  aStringList: TStringList;
Begin
  aStringList.Add(''); //<- Тут потерялся Exception
End;

Initialization
  RegisterTest(TTestCase1);
End.

Выполняется на 5 с плюсом, что в FPCUnit, что в Lazarus'e.
Как вернуть Exception? ^_^
Аватара пользователя
Brainenjii
энтузиаст
 
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Re: FPCUnit - куда пропал Access Violation?

Сообщение kosteek » 12.04.2012 13:04:51

Я не верно понял вопрос. А как удалить свое сообщение не знаю.
kosteek
постоялец
 
Сообщения: 203
Зарегистрирован: 24.07.2008 14:57:09
Откуда: Украина, г.Славянск

Re: FPCUnit - куда пропал Access Violation?

Сообщение Mr.Smart » 12.04.2012 13:27:56

А если явно?
Код: Выделить всё
Var
  aStringList: TStringList = nil;
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: FPCUnit - куда пропал Access Violation?

Сообщение Brainenjii » 12.04.2012 13:31:10

если явно - exception возвращается... Из-за чего такое может быть? В багтрекере говорят что не могут воспроизвести
Аватара пользователя
Brainenjii
энтузиаст
 
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Re: FPCUnit - куда пропал Access Violation?

Сообщение Sergei I. Gorelkin » 12.04.2012 17:17:56

Из-за того, что на месте неинициализированной переменной в стеке оказался другой TStringList или другой объект, обращение к которому не приводит к AV. Воспроизвести не могут, видимо, из-за разных опций компиляции (причем компиляции всего начиная с RTL), т.к. они влияют на раскладку стека.
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1395
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Re: FPCUnit - куда пропал Access Violation?

Сообщение Brainenjii » 12.04.2012 17:37:26

Какой-то способ, кроме явной инициализации в nil существует?
Аватара пользователя
Brainenjii
энтузиаст
 
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Re: FPCUnit - куда пропал Access Violation?

Сообщение Sergei I. Gorelkin » 12.04.2012 17:50:57

Ключи компиляции -gt, -gtt, -gttt будут инициализировать мусором, но не все (например, открытые массивы недоделаны).
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1395
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Re: FPCUnit - куда пропал Access Violation?

Сообщение Brainenjii » 12.04.2012 18:06:27

Спасибо!
Аватара пользователя
Brainenjii
энтузиаст
 
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Re: [РЕШЕНО] FPCUnit - куда пропал Access Violation?

Сообщение Brainenjii » 16.04.2012 08:22:13

C -gt вылез слабообъяснимый глюк с generic'ами
Код: Выделить всё
  ..
  WriteLn(bNewReqPatterns.UnitName); // <- Здесь всё хорошо
  aStored.Compare(aReqPatterns, bNewReqPatterns, bOldReqPatterns);
  ..
Procedure Compare(Const aTarget: BList; Out aLack, aOver: BList);
Begin
  WriteLn(aLack.UnitName); // <- Здесь Access Violation
  ..
End;
..

без него всё отрабатывает как нужно
Аватара пользователя
Brainenjii
энтузиаст
 
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Re: [РЕШЕНО] FPCUnit - куда пропал Access Violation?

Сообщение Sergei I. Gorelkin » 16.04.2012 14:48:27

Очень даже объясним. Out-параметр используется до присвоения ему значения.
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1395
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Re: [РЕШЕНО] FPCUnit - куда пропал Access Violation?

Сообщение Brainenjii » 23.04.2012 07:15:17

И точно. Ещё раз спасибо
Аватара пользователя
Brainenjii
энтузиаст
 
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46


Вернуться в Сторонние средства

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6

Рейтинг@Mail.ru