Вниз
Скачать: CL | DM;

Ошибка при закрытиии динамического массива   Найти похожие ветки 

 
sergg   (2004-10-13 16:27) [0]

При закрытии динамического массива как при выходе из программы, так и при пирсвоении его имени nil выдается
Access violation at adress 00401D4E in module "employees.exe". Write of adress 00000063.
В чем тут может быть дело?


 
Суслик ©   (2004-10-13 16:29) [1]


> В чем тут может быть дело?

в том, что ты:
1) у тебя массив записей, в которых есть длинные строки, с которыми ты работал через move и writebuff или прочими ф-ями с нетипизированными параметрами.
2) ты работал указанными выше функциями  с самим массивом.

приводи код, как ты используешь массив


 
sergg   (2004-10-13 16:36) [2]

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;

Ошибка пропадает при комментировании строки помеченной :((


 
sergg   (2004-10-13 16:38) [3]

Массив состоит из структур такого типа:  

TreeViewRecord = record
 Node: TTreeNode;
 Number: integer;
 Field: string;
 end;


 
Семен Сорокин ©   (2004-10-13 16:56) [4]

собака здесь скорее всего:

TVPostNameEmployeeArray[Fields.Fields[0].AsInteger].Numbe

Range Check Error - галочкеу в опциях проекта постаь


 
Суслик ©   (2004-10-13 16:56) [5]

может быт что угодно.
один из вариантов:
1) у тебя в project options отключен флаг range check error
2) при обращении выходишь за границу массива. Где гарантия, что Fields.Fields[2].AsInteger имеет значение <= high(твоего массива)?


 
sergg   (2004-10-13 17:01) [6]

Блин, я ведь длину числа массива определяю не так как надо!!!!! :(((


 
sergg   (2004-10-13 17:01) [7]

Блин, я ведь длину числа массива определяю не так как надо!!!!! :(((


 
sergg   (2004-10-13 17:24) [8]

Спасибо



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.025 c
1-1097652591
diabolik_krsk
2004-10-13 11:29
2004.10.31
Извлечение названия файла без расширения


1-1098018449
denis24
2004-10-17 17:07
2004.10.31
множественный выбор из одного listbox в другой


1-1097678011
Максим
2004-10-13 18:33
2004.10.31
Plug In


14-1097569206
Григорьев Антон
2004-10-12 12:20
2004.10.31
Есть шанс заработать $200 - нужны связи в МГУ


14-1097747959
gid
2004-10-14 13:59
2004.10.31
ShareWare




   Наверх