Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.02.2007, 10:34   #1
ClauZzz
Пользователь
 
Регистрация: 05.02.2007
Сообщений: 10
По умолчанию Потерялся адрес :)

Всем привет

Есть классы:
Tsimple = class(Tobject)
name : string;
end;


Tcontainer = class(Tsimple)
private
Fsimple_addr: ^Tsimple;
function get_simple: Tsimple;
procedure set_simple(Avalue:Tsimple);
public
constructor create; dynamic;
property simple: Tsimple read get_simple write set_simple;
end;


Далее код

var
Form1: TForm1;
Fsimple:Tsimple;
Fvalue:Tsimple;
Fcontainer:Tcontainer;

implementation

constructor Tcontainer.create;
begin
inherited create;
Fsimple_addr :=nil;

end;
function Tcontainer.get_simple:Tsimple;
begin
if assigned(Fsimple_addr) and assigned(Fsimple_addr^) then
result:=Fsimple_addr^
else
result:=nil;
end;

procedure Tcontainer.set_simple(Avalue: Tsimple);
begin
if assigned(Avalue) then
Fsimple_addr:=@Avalue
else
Fsimple_addr:=nil;
showmessage(simple.name);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Fsimple :=Tsimple.Create;
Fcontainer :=Tcontainer.create;
Fcontainer.simple :=Fsimple;
end;



Ну дык вот, при присваивании Fcontainer.simple :=Fsimple в поле записывается совсем не адрес Fsimple, возможно это адрес самой переменной Avalue исполльзующейся в set_simple. Как думаете, возможно ли при сохранинее структуры при присваивании получить в переменную Fsimple_addr: ^Tsimple адрес именно Fsimple?
ClauZzz вне форума Ответить с цитированием
Старый 05.02.2007, 16:35   #2
Romanus
Кодер
Форумчанин
 
Регистрация: 27.01.2007
Сообщений: 271
По умолчанию

Во первых ты забыл знак ^ во вторых зачем тебе объявлять новый класс с одной переменной и то не свойством
Romanus вне форума Ответить с цитированием
Старый 06.02.2007, 06:43   #3
ClauZzz
Пользователь
 
Регистрация: 05.02.2007
Сообщений: 10
По умолчанию

Цитата:
Сообщение от Romanus Посмотреть сообщение
Во первых ты забыл знак ^
Где?

Цитата:
Сообщение от Romanus Посмотреть сообщение
во вторых зачем тебе объявлять новый класс
Да просто для наглядности. Естественно, пример не из рабочего кода.

Цитата:
Сообщение от Romanus Посмотреть сообщение
с одной переменной и то не свойством
Как это не свойством? Именно property simple: Tsimple read get_simple write set_simple; и не хочет выдавать то, что мне нужно. Необходимо, что бы из поинтера(адреса) получалось свойство - объект Tsimple, а для этого необходимо, что бы в переменную Fsimple_addr записался адрес ИСКОМОГО объекта Fsimple, а записывается адрес переменной AValue. Так вот как получить, все таки, при текущей конструкции объекта нужный адрес, и является вопросом.
ClauZzz вне форума Ответить с цитированием
Старый 07.02.2007, 11:19   #4
Romanus
Кодер
Форумчанин
 
Регистрация: 27.01.2007
Сообщений: 271
По умолчанию

Друг все работает как ты хочешь низнаю чего тебе еще надо я загрузил твой код себе ну единственное добавил строчку
FSimple.name:='fsdfsd'; перед Fcontainer.simple :=Fsimple;
Адресация в таких случаях проходит на ура.
Romanus вне форума Ответить с цитированием
Старый 07.02.2007, 11:46   #5
ClauZzz
Пользователь
 
Регистрация: 05.02.2007
Сообщений: 10
По умолчанию

Если не поленился себе залить код то не поленись сравнить адреса у созданного Fsimple и у ссылочного Fcontainer.simple. Ссылка приняла адрес Avalue, который отличается от Fsimple. И получить адрес ИСКОМОГО объекта таким образом невозможно .

Я уже разобрался в проблематике, если кому интересно могу поделиться.
ClauZzz вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
IP адрес SERG1980 Работа с сетью в Delphi 2 25.07.2008 15:54
mac адрес AvG Компьютерное железо 5 23.07.2008 10:52
Ip адрес delphin100 Win Api 4 08.01.2008 21:55
IP адрес delphin100 Общие вопросы Delphi 8 12.12.2007 13:18
как узнать ip адрес зная mac адрес Roman Работа с сетью в Delphi 9 25.06.2007 12:39