Главная страница
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.062 c
3-1084960004
Alex_x
2004-05-19 13:46
2004.06.13
Изменение типа поля в базе.


4-1083660910
NetWorK
2004-05-04 12:55
2004.06.13
Отключение жестких дисков и ЦПУ


9-1076826250
DM_A
2004-02-15 09:24
2004.06.13
Как переместить объект(X,Y) Пажалуйста подробнее


1-1085846300
ALex1
2004-05-29 19:58
2004.06.13
поиск папок и файлов


3-1085126857
Виктор
2004-05-21 12:07
2004.06.13
Запрос с горизонтальным объединением таблиц