Форум: "Основная";
Текущий архив: 2004.11.14;
Скачать: [xml.tar.bz2];
ВнизКонсультация по фрагменту кода Найти похожие ветки
← →
ssmaxx (2004-11-02 11:07) [0]Добрый день. Подскажите пожалуйста, в чем проблема:
Есть некий модуль, в нем следующие описания записей:
interface
Type
...
TPoint=Record
x,y,z:Real;
end;
TDXFPolyLine=Record
Radius,Points:Array of TPoint;
StartWidth,EndWidth:Array of real;
Thickness:Byte;
Extrusion:TPoint;
Color:Integer;
Layer:String;
LineTypeName:String;
LineTypeScale:Integer;
Closed:Boolean;
GlobalWidth:Real;
end;
...
implementation
...
Из программы пытаюсь присвоить значение элементам массивов:
...
Var
DXFPoly:TDXFPolyLine;
i,k,KolVertex,RndCh:Integer;
begin
...
For k:=0 to KolVertex do begin
if k=0 then begin
DXFPoly.Points[k].x:=Random(100);
DXFPoly.Points[k].y:=Random(100);
DXFPoly.Points[k].z:=0;
end else begin
DXFPoly.Points[k].x:=DXFPoly.Points[k-1].x+Random(1000)-500;
DXFPoly.Points[k].y:=DXFPoly.Points[k-1].y+Random(1000)-500;
DXFPoly.Points[k].z:=0;
end;
end;
...
При компиляции все нормально, но при первом же обращении к массиву DXFPoly.Points выдается ошибка: ... Access violation at address 00442EE4 in module "Test.exe". Write of address 00000000 ....
Подскажите пожалуйста, что не так ?
← →
Digitman © (2004-11-02 11:12) [1]ты не устанавливаешь (или неверно устанавливаешь) длину дин.массива Points перед обращением к k-му его элементу
см. SetLength()
← →
Symb (2004-11-02 11:12) [2]Массив сначала пустой. Если Пушкин ему размер не задаст, то придется тебе. Иначе при первом же обращении по несуществующему индексу 0 он выдаст тебе Access Violation.
В общем, SetLength(DXFPoly.Points, размер).
← →
ssmaxx (2004-11-02 11:37) [3]Спасибо большое!
У меня вопрос в догонку: если я задал размер массива, то его после использования не надо каким-либо образом очистить?
← →
DiamondShark © (2004-11-02 11:43) [4]
> У меня вопрос в догонку: если я задал размер массива, то
> его после использования не надо каким-либо образом очистить?
Не надо. Он очистится как только уйдёт за область видимости.
Если хочется очистить принудительно, то либо SetLength(.., 0), либо присвоить nil.
← →
ssmaxx (2004-11-02 12:05) [5]Еще раз СПАСИБО !!!
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.11.14;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.041 c