Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.023 c
14-1085777995
miwa
2004-05-29 00:59
2004.06.13
Robert Miles - Children


3-1084955594
GIL
2004-05-19 12:33
2004.06.13
Зараз пара запросов - не работают.


1-1086167834
Aleksandr.
2004-06-02 13:17
2004.06.13
В cm_MouseEnter вообще координаты курсора мыши передаются?


14-1085825965
Алхимик
2004-05-29 14:19
2004.06.13
Зачётная неделя


4-1083927471
Vadim S
2004-05-07 14:57
2004.06.13
Подскажите работающий Browse Folder для D5




   Наверх