![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как c этим бороться? [D7, 95/98]
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]А может ошибка все-же в другом месте? Здесь патологий вроде не выявлено...