PDA

View Full Version : کار با آرایه پویا درون رکورد



samprp
دوشنبه 09 شهریور 1388, 17:34 عصر
سلام دوستان.
تو کد زیر کد به رنگ قرمز خطا می ده:


type
TInner= record
Text:string;
end;

TOuter= record
Caption:string;
Child: array of TInner;
end;

var
arrMyArray: array of TOuter;

procedure myprocedure();
var
InnerLen: Integer;
begin
setlength(arrMyArray, Length(arrMyArray)+1);
arrMyArray[Length(arrMyArray)].Caption:='Caption';

InnerLen:= Length(arrMyArray[Length(arrMyArray)].Child);
setlength(arrMyArray[Length(arrMyArray)].Child, InnerLen +1); //Access violation
end;

vcldeveloper
سه شنبه 10 شهریور 1388, 00:29 صبح
بخاطر اینکه آرایه پویا از صفر شروع میشه تا Length اون آرایه منفی 1. پس خانه arrMyArray[Length(arrMyArray)] وجود نداره.
البته اگر کدتان خطای دیگه ایی نداشته باشه.