Форум: "Основная";
Текущий архив: 2002.12.23;
Скачать: [xml.tar.bz2];
ВнизКак создать указатель на обьект внутри метода этого обьекта? Замы Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.012 c