Вниз
Скачать: 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.041 c
1-1097735375
Руслана
2004-10-14 10:29
2004.10.31
Подскажите в чем ошибка...


4-1096300901
LicProd
2004-09-27 20:01
2004.10.31
Определить Хэндл приложения на ToolBarWindow32 ?


6-1093416257
BVV
2004-08-25 10:44
2004.10.31
idMappedPortTCP


1-1098103855
Mishenka
2004-10-18 16:50
2004.10.31
Доступ к динамически создаваемому компоненту???


1-1097739102
Chris
2004-10-14 11:31
2004.10.31
работа с MSWord через OLE




   Наверх