Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.038 c
1-1099047852
Pentium133
2004-10-29 15:04
2004.11.14
TStringList и IniFile


14-1098736588
Soft
2004-10-26 00:36
2004.11.14
Американцы вкладывают деньги, а пашут другие.


1-1099386098
Некто
2004-11-02 12:01
2004.11.14
За пределы формы


14-1098746751
Василий
2004-10-26 03:25
2004.11.14
Составление алгоритмов


14-1098442543
pavel_guzhanov
2004-10-22 14:55
2004.11.14
как вывести комп из сонного состояния?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский