Главная страница
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.022 c
6-1082878311
барбос
2004-04-25 11:31
2004.06.13
Как добавить ,библиотеку (MSHTML_TLB) как ActiveX, в секцию uses?


1-1085848740
anonimus
2004-05-29 20:39
2004.06.13
Узнать код по исходной и шифрованной строке


1-1086162955
Вованчик
2004-06-02 11:55
2004.06.13
ссылка на компонент


1-1085635870
marcel
2004-05-27 09:31
2004.06.13
Пропало меню Delphi


1-1085776793
Vist
2004-05-29 00:39
2004.06.13
Помогите с программой для сдачи зачёта