Страница 1 из 1

А что делать, если баг среды?

СообщениеДобавлено: 07.01.2014 23:25:15
Sharfik
Что делать, если выяснилось, что программа работает по разному в двух вариантах компиляции.
Если есть/нету строки var n:integer; в обоих процедурах, то компилируется правильно, если только в одном, то неправильно.

Код: Выделить всё
procedure TForm1.Button2Click(Sender: TObject);
var
  n:integer;
begin
  Alist.DelNotifyChange(Form1,edit1.OnClick);
end;

procedure TForm1.Button3Click(Sender: TObject);
var
  n:integer;
begin
  Alist.AddNotifyChange(Form1,edit1.OnClick);
  Alist.AddNotifyChange(Form1,edit2.OnClick);
  Alist.AddNotifyChange(Form1,edit3.OnClick);
end;

Re: А что делать, если баг среды?

СообщениеДобавлено: 08.01.2014 00:26:52
Padre_Mortius
Sharfik, писать в багтреккер проекта. Только это не ошибка среды, а ошибка/поведение компилятора.

Re: А что делать, если баг среды?

СообщениеДобавлено: 08.01.2014 01:23:56
Sharfik
Это не ошибка компилятора, это мой косяк+компилятор. Просто совпало, что кое где неправильно брал адрес данных, а за счет этих var объявлений для двух функций совпадали адреса формы. Не знаю даже, как это описать это разработчику fpc, чтобы исключить такую случайность. Адреса выравнивались за счет них как то. :?

Re: А что делать, если баг среды?

СообщениеДобавлено: 08.01.2014 02:42:14
Максим
Это никак не исключить, если идёт некорректная работа с указателями.

В любом случае, без небольшого полного компилируемого тестового проекта разговор бессмысленен.