![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Ошибка при закрытиии динамического массива [D7, WinXP]
sergg © (2004-10-13 16:27:00)При закрытии динамического массива как при выходе из программы, так и при пирсвоении его имени nil выдается
Access violation at adress 00401D4E in module 'employees.exe'. Write of adress 00000063.
В чем тут может быть дело?
sergg (2004-10-13 17:24:00) [1]Спасибо
sergg (2004-10-13 17:01:00) [2]Блин, я ведь длину числа массива определяю не так как надо!!!!! :(((
sergg (2004-10-13 17:01:00) [3]Блин, я ведь длину числа массива определяю не так как надо!!!!! :(((
Семен Сорокин (2004-10-13 16:56:00) [4]собака здесь скорее всего:
TVPostNameEmployeeArray[ Fields.Fields[0].AsInteger].Numbe
Range Check Error - галочкеу в опциях проекта постаь
Суслик (2004-10-13 16:56:00) [5]может быт что угодно.
один из вариантов:
1) у тебя в project options отключен флаг range check error
2) при обращении выходишь за границу массива. Где гарантия, что Fields.Fields[2].AsInteger имеет значение <= high(твоего массива)?
sergg (2004-10-13 16:38:00) [6]Массив состоит из структур такого типа:
TreeViewRecord = record
Node: TTreeNode;
Number: integer;
Field: string;
end;
sergg (2004-10-13 16:36:00) [7]try
with DataModule2.ADOQueryTreeView do
begin
//Âûáîðêà ñîòðóäíèêîâ
Close;
SQL.Clear;
SQL.Add('SELECT Employees.Number, Employees.SurName +" "+ Employees.Name +" "+ Employees.Patronymic, ');
SQL.Add('Employees.SubDivision FROM Employees');
SQL.Add('');
SQL.Add('');
Open;
//Îïðåäåëåíèå äëèíà ìàññèâà TVSubDivisionsArray
SetLength(TVPostNameEmployeeArray, RecordCount+1);
if RecNo >0 then
begin
//Çàíåñåíèå ïîä÷èíåííûõ âåòâåé ñîòðóäíèêîâ
First;
for i:=1 to RecordCount do
begin
TVPostNameEmployeeArray[Fields.Fields[0].AsInteger].Number:= Fields.Fields[0].AsInteger;
:(( TVPostNameEmployeeArray[Fields.Fields[0].AsInteger].Node:= Form7.TreeView1.Items.AddChild(TVSubDivisionsArray[Fields.Fields[2].AsInteger].Node, Fields.Fields[1].AsString + Fields.Fields[0].AsString);
Next;
end;
end;
end;
Ошибка пропадает при комментировании строки помеченной :((
Суслик (2004-10-13 16:29:00) [8]
> В чем тут может быть дело?
в том, что ты:
1) у тебя массив записей, в которых есть длинные строки, с которыми ты работал через move и writebuff или прочими ф-ями с нетипизированными параметрами.
2) ты работал указанными выше функциями с самим массивом.
приводи код, как ты используешь массив