Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.06.13;
Скачать: CL | DM;

Вниз

Получение приватного значения одного класса из другого   Найти похожие ветки 

 
Илья   (2004-05-29 18:30) [0]

Здравствуйте!
У меня в следующем коде, при получении приватного значения name класса TTopObject из класса TTopClass при помощи функции get_name всё виснет, а при завершении работы дельфи показывает на ошибку в строчке result:=name; , и не собирается компилить исходник до перезагрузки Дельфи.
В какой части кода ошибка?

interface

TTopObject = class;

 TTopClass = class(TObject)
 private
   objects:array of TMapObject;
 public
   procedure get_obj1_name;
 end;

 TTopObject = class(TObject)
 private
   name:string;
 public
   function get_name:string;
 end;
 
implementation

procedure TTopClass.get_obj1_name;
var
 nm:string;
begin
 nm:=objects[1].get_name;
end;

function TTopObject.get_name:string;
begin
 result:=name; //Выбрасывает здесь
end;


 
Gero ©   (2004-05-29 18:34) [1]

В приведенном коде ошибки нет.
Как выглядит TMapObject.get_name?


 
Илья   (2004-05-30 08:43) [2]

Сорри, это не TMapObject, а TTopObject.
Длина массива objects=1

Суть в том, что public функция класса TTopObject, обращаясь к private переменной того же класса(TTopObject) компилируется, но за тем виснет, а по завершению работы программы, Дельфи показывает на строчку, в которой происходит обращение к private переменной. Хотя это и есть тот самый класс.

Я пробовал заменить массив TTopObject на просто TTopObject, и всё работает в порядке. Метод Create я не забыл не в одном из случаев.


 
Agent_Smith ©   (2004-05-30 09:41) [3]

А ты попробуй выделить память для динамического массива вызовом функции:
SetLength(имя_массива,количество_элементов);

И причём первый элемент всегда начинается с 0, а не с одного.

Скорее всего у тебя ошибка с выходом за границы диапазона.



Страницы: 1 вся ветка

Текущий архив: 2004.06.13;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.02 c
1-1086001666
Sandman25+1
2004-05-31 15:07
2004.06.13
Инициализация AnsiString


1-1085691234
Gestapo
2004-05-28 00:53
2004.06.13
Не могу скопировать рисунок из буфера обмена


1-1085993631
Андрей
2004-05-31 12:53
2004.06.13
Переброс информации между программами


3-1084973106
Mike Kouzmine
2004-05-19 17:25
2004.06.13
Есть еще варианты?


14-1085316229
X9
2004-05-23 16:43
2004.06.13
FS для Linux. Срочно!