Главная страница
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.053 c
3-1085144384
levova
2004-05-21 16:59
2004.06.13
Выполнение запроса из програмы (FireBird)


3-1085040932
slava7
2004-05-20 12:15
2004.06.13
работа с БД в сети


14-1085382599
Gorlum
2004-05-24 11:09
2004.06.13
Где же моя анкета?


14-1085575633
AlexG
2004-05-26 16:47
2004.06.13
Давайте разберемся....


14-1085642308
Карелин Артем
2004-05-27 11:18
2004.06.13
... - тип БД: IB4.x; IB5.x; IB6.x; .......