Вот собственно суть проблемы есть несколько типов: Code: //тип 1 type TTMyType1 = Record isLinked: SmallInt; ToT: string; ToC: Integer; end; //тип 2 type PMyType2 = ^TMyType2; TMyType2 = record CNa: string; CTy: SmallInt; isa: SmallInt; Sa: TTMyType1; end; //тип 3 type PMyType3 = ^TMyType3; TMyType3 = record ExName: string; ExParam: array [0..100] of PMyType2; end; Вот... далее создаём глобальную переменную типа массив PMyType3, и пытаемся поюзать... var qwerty: array [0..10] of PMyType3; //создали массив записей типа PMyType3 и далее где угодно в программе пытаемся поюзать qwerty.ExName:= 'текст_значения'; и так далее, но вот трабл, при таком обращении программка говорит Access violaton бла бла бла, в общем на сколько я понял, объект вроде как есть, но память под него не выделена, хотя он не динамичен, то есть размеры объявлены заранее... варианты решения проблемы? заранее спс...
Нужно выделять память с помощью процедуры New, и освобождать с помощью Dispose. То есть: Code: var test: PMyType3; begin New(test); test.ExName:= 'текст_значения'; ... Dispose(test); end; По моему так должно быть, хотя точно не уверен.
Chrome~ Неправильно подсказываешь! Память у него уже выделена. mr. ZetRikS проблема в том что ты создаешь массив из указателей на указатели. и пытаешься к нему обратится на прямую. вот так объяви массив Code: qwerty: array [0..10] of TMyType3; и будет все гуд ЗЫ Пользуйтесь отладчиками
Да нет же, maestro-ant, это ты не умеешь правильно работать с динамической памятью. Посмотри, как правильно должно быть реализовано в данном случае:
Так и есть, вопрос исчерпан... правд ещё косяк был, пришлось в типе 3 вместо PMyType2 использовать так же тип, а не указатель на него... Всегда так работал (за пять лет таких проблем не случалось), а тут подсказали мол лучше использовать указатели на тип... Для чего особо не понял, но вот собственно и парился пару дней, кстати с типом пробовал, но так как в типе 3 есть переменная ууказателя на тип, вот тут косяк и не увидел, только сейчас когда подсказали узрел... Спасибо что уделили время моей проблеме... поставил + обим...