Помогите побороть inaccessible value

SSharapov
Дата: 26.04.2011 15:15:02
Доброго дня !
Имеется следующий код:

type TAuthor =record
    ln:string;
    sn:string;
    fn:string;
    id:integer;
 end;

var 
author:array of TAuthor;

procedure TMainForm.Button1Click(Sender: TObject);
begin
author[i].id:=0;

author[i].ln:=mainform.xmld.DocumentElement.ChildNodes[desc].ChildNodes[tinfo].ChildNodes[i].ChildNodes['last-name'].Text;      

author[i].sn:=mainform.xmld.DocumentElement.ChildNodes[desc].ChildNodes[tinfo].ChildNodes[i].ChildNodes['second-name'].Text;      

author[i].fn:=mainform.xmld.DocumentElement.ChildNodes[desc].ChildNodes[tinfo].ChildNodes[i].ChildNodes['first-name'].Text;
end;
При присвоении author[i]. возникает ошибка inaccessible value
если избавиться от массива то присвоение значений объекту author. проходит нормально.
DimaBr
Дата: 26.04.2011 15:25:53
А массив какой длины ? А переменная i чему равна ?
Evgen2010
Дата: 26.04.2011 15:26:06
SSharapov,

"i" проинициализирована? Или все летит не известно куда?
SSharapov
Дата: 26.04.2011 15:59:53
DimaBr
А массив какой длины ? А переменная i чему равна ?

Длина массива не изначально не известна. Но вряд ли будет больше 20 элементов.

Переменная "i":


procedure TMainForm.Button1Click(Sender: TObject);
var 
i:integer;
begin
for i:=0 to 20 do 
begin
if ... then  
  begin
    author[i].id:=0;
 author[i].ln:=mainform.xmld.DocumentElement.ChildNodes[desc].ChildNodes[tinfo].ChildNodes[i].ChildNodes['last-name'].Text;      

author[i].sn:=mainform.xmld.DocumentElement.ChildNodes[desc].ChildNodes[tinfo].ChildNodes[i].ChildNodes['second-name'].Text;      

author[i].fn:=mainform.xmld.DocumentElement.ChildNodes[desc].ChildNodes[tinfo].ChildNodes[i].ChildNodes['first-name'].Text;
end;
end;
end;

DimaBr
Дата: 26.04.2011 16:04:27
Так нужно ж эту длину зарезервировать
SetLength(author,21)
for i:=0 to 20 do
.....
Gwa
Дата: 26.04.2011 16:04:46
У Вас в цикле обрабатывается 21 элемент..
SSharapov
Дата: 26.04.2011 16:14:33
DimaBr
Так нужно ж эту длину зарезервировать
SetLength(author,21)
for i:=0 to 20 do
.....

Спасибо! резервирование длины проблему решило.
DimaBr
Дата: 26.04.2011 16:51:27
Я думаю что нет, проблему резервированием длины не решить, проблема не в массиве...
OracleX
Дата: 27.04.2011 00:42:05
with-фобия?
DimaBr
Дата: 27.04.2011 00:47:32
Хто здесь ?