Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как c этим бороться? [D7, 95/98]


Страницы:   1 2

fog ©   (2006-08-23 20:07:00) 

Дано:

type
 TMyControl = class(TCustomControl)
 private
  FData: array of integer;
  procedure SetData(AD:integer);
 end;

procedure TMyControl.SetData(AD:integer);
begin
SetLength(FData, AD);
end;

function CreateMC(AOwner: TWinControl; AD: integer): TMyControl;
begin
Result := TMyControl.Create(AOwner);
...
with Result do
 begin
   Parent := AOwner;
   Align := alClient;
   {SetLength(Result.FData, 6000);}
   SetData(AD);
 end;
end;


При создании формы имеем:

procedure TForm1.FormCreate(Sender: TObject);
begin
FMC := CreateMC(Form1, 6000);
end;


Суть проблемы - при очередной отладке проги вдругперестала работать SetData - стал получать EAccessViolation на попытку SetLength. Коментный вариант в CreateMC работает. Что делать?


default   (2006-08-23 22:31:00) [21]

больше кода нужно для локализации ошибки...
единственное, что можно было подумать, что AD где-то меняется на отрицательное, но тогда исключение выход за диапазон, а не AV


Loginov Dmitry   (2006-08-23 22:02:00) [22]

> При создании формы имеем:
>
> procedure TForm1.FormCreate(Sender: TObject);
> begin
> FMC := CreateMC(Form1, 6000);
> end;


Какое значение тут имеет переменная Form1?
Что будет, если заменить ее на Self?


Loginov Dmitry   (2006-08-23 22:00:00) [23]

А может ошибка все-же в другом месте? Здесь патологий вроде не выявлено...


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо