Текущий архив: 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.45 MB
Время: 0.024 c