Главная страница
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.014 c
3-74606
Evladar
2002-12-05 10:38
2002.12.23
Circular DataLinks are not allowed


1-74736
Strumpf
2002-12-14 00:09
2002.12.23
Пропадает системное меню дочернего окна MDI-формы :((


3-74551
Bakch
2002-12-03 14:30
2002.12.23
Crystal Report


14-74931
Юрий Зотов
2002-11-29 19:42
2002.12.23
---|Ветка была без названия|---


4-75054
Lexa1900
2002-11-06 20:43
2002.12.23
Чем может помочь функция GetCapture?