Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.12.23;
Скачать: CL | DM;

Вниз

Как создать указатель на обьект внутри метода этого обьекта? Замы   Найти похожие ветки 

 
a-leksey ©   (2002-12-14 15:25) [0]

Суть вопроса такова... Некоторые обьекты при создании и инициализации должны регестрировать себя в некотором

списке, оставляе там указатель сакми на себя. Так как в нутри метода обьект доступен как Self, я использую @Self,

чтобы создать указатель на обьект, но логично думать, что Self уже, не что иное, как указатель...Вот тут я и запутался.
Как внутри метода создать указатель на обьект и передать его??? Приведение типом не спасло варианты типа

Pointer(Self) или pmy(Self) не помогли..Одним словом указатель на обьект либо не создается, либо теряется...
Если снять ремарки //s2.b:=@s1;, то все работает (а куда оно денется?), но мне нужно создать указатель внутри

метода...как? На примере все упрощено вместо списка переменная и один обьект. Может, кто даст дельный совет?

unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

pmy = ^my;

my1 = record
b:pmy;
end;

my = class
a:string;
constructor create(lmy1:my1);
destructor destroy;
end;

var
Form1: TForm1;
s1:my;
s2:my1;
implementation

{$R *.DFM}

constructor my.create(lmy1:my1);
begin
inherited create;
lmy1.b:=@self;
end;


 
Сергей Бушин ©   (2002-12-14 17:42) [1]


pmy = ^my - ?
...
lmy1.b:=@self - ?

Класс в Delphi по сути явдяется указателем, в отличии от паскаля.

Сделать надо так:


unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

my = class;

my1 = record
b:my;
end;

my = class
a:string;
constructor create(lmy1:my1);
destructor destroy;
end;

var
Form1: TForm1;
s1:my;
s2:my1;
implementation

{$R *.DFM}

constructor my.create(lmy1:my1);
begin
inherited create;
lmy1.b:=self;
end;



Страницы: 1 вся ветка

Текущий архив: 2002.12.23;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.016 c
1-74684
Che
2002-12-13 01:11
2002.12.23
Авторизация!!


6-74865
MK
2002-10-20 19:02
2002.12.23
IP в доменное имя


14-74959
AK-74
2002-12-01 22:54
2002.12.23
Опрос:


1-74665
OlegL
2002-12-04 11:23
2002.12.23
Классы и обьекты


14-74953
NeyroSpace
2002-12-02 10:56
2002.12.23
Скрипт Паскаль? Существует ли он или прийдется писать самому?