Delphi 获取指针的成员
我有一个名为Delphi 获取指针的成员,delphi,delphi-xe2,Delphi,Delphi Xe2,我有一个名为Target2的TObject,它是一个表示TLabel的指针,希望从该指针获取属性Name。所以我有这个 Procedure TGetName() var Item : TLabel; Begin if Target2 is TLabel then begin Item := Target2; if Item.Name := 'SomeName' then begin .... dosomething();
Target2
的TObject
,它是一个表示TLabel
的指针,希望从该指针获取属性Name
。所以我有这个
Procedure TGetName()
var
Item : TLabel;
Begin
if Target2 is TLabel then
begin
Item := Target2;
if Item.Name := 'SomeName' then
begin
....
dosomething();
end;
end;
end;
但现在让项
成为指向指针的指针似乎毫无意义,但当我这样做时:
Procedure TGetName()
Begin
if Target2 is TLabel then
begin
if Target2.Name := 'SomeName' then
begin
....
dosomething();
end;
end;
end;
我发现错误,该名称不是
Target2
的成员。因此,在不创建指向指针Target2的另一个指针的情况下,如何访问它?您只需要强制转换。如果您准备断言Target2
是TLabel
,则使用选中的强制转换:
var
Lbl: TLabel;
....
Lbl := Target2 as TLabel;
否则,使用is
进行检查,然后不检查强制转换即可:
if Target2 is TLabel then
begin
Lbl := TLabel(Target2);
....
您不需要销毁
Lbl
,因为它只是对其他人拥有的对象的引用 你只需要施展一下。如果您准备断言Target2
是TLabel
,则使用选中的强制转换:
var
Lbl: TLabel;
....
Lbl := Target2 as TLabel;
否则,使用is
进行检查,然后不检查强制转换即可:
if Target2 is TLabel then
begin
Lbl := TLabel(Target2);
....
您不需要销毁
Lbl
,因为它只是对其他人拥有的对象的引用 你只需要施展一下。如果您准备断言Target2
是TLabel
,则使用选中的强制转换:
var
Lbl: TLabel;
....
Lbl := Target2 as TLabel;
否则,使用is
进行检查,然后不检查强制转换即可:
if Target2 is TLabel then
begin
Lbl := TLabel(Target2);
....
您不需要销毁
Lbl
,因为它只是对其他人拥有的对象的引用 你只需要施展一下。如果您准备断言Target2
是TLabel
,则使用选中的强制转换:
var
Lbl: TLabel;
....
Lbl := Target2 as TLabel;
否则,使用is
进行检查,然后不检查强制转换即可:
if Target2 is TLabel then
begin
Lbl := TLabel(Target2);
....
您不需要销毁
Lbl
,因为它只是对其他人拥有的对象的引用 试试这个(Target2作为TLabel)。Name:=“SomeName”
你在说什么指针??谢谢lqbal,这很有效,@MBo我在问题中提到了两个指针,但只想要1Target2
(我想要)Item
(我不想要)我可以将这些东西称为指针。这就是他们。它们不是C++中的引用。@ DavidHeffer-Noto-Otoh我会通过引用它们来解释它们,它们是最终指针;在Delphi中,术语“指针”指的是一种独特的类型,它包含自己的特殊语法(即@和^符号,在类型指针的情况下,指针数学),不适用于引用类型。因此,在Delphi上下文中,最好在更严格的意义上使用术语“指针”,尽管如果提问者不这样做也没什么大不了。试试这个(Target2作为TLabel)。Name:=“SomeName”
你在说什么指针??谢谢lqbal,这很有效,@MBo我在问题中谈到了两个指针,但只想要1个Target2
(我想要)Item
(我不想要)我可以将这些东西称为指针。这就是他们。它们不是C++中的引用。@ DavidHeffer-Noto-Otoh我会通过引用它们来解释它们,它们是最终指针;在Delphi中,术语“指针”指的是一种独特的类型,它包含自己的特殊语法(即@和^符号,在类型指针的情况下,指针数学),不适用于引用类型。因此,在Delphi上下文中,最好在更严格的意义上使用术语“指针”,尽管如果提问者不这样做也没什么大不了。试试这个(Target2作为TLabel)。Name:=“SomeName”
你在说什么指针??谢谢lqbal,这很有效,@MBo我在问题中谈到了两个指针,但只想要1个Target2
(我想要)Item
(我不想要)我可以将这些东西称为指针。这就是他们。它们不是C++中的引用。@ DavidHeffer-Noto-Otoh我会通过引用它们来解释它们,它们是最终指针;在Delphi中,术语“指针”指的是一种独特的类型,它包含自己的特殊语法(即@和^符号,在类型指针的情况下,指针数学),不适用于引用类型。因此,在Delphi上下文中,最好在更严格的意义上使用术语“指针”,尽管如果提问者不这样做也没什么大不了。试试这个(Target2作为TLabel)。Name:=“SomeName”
你在说什么指针??谢谢lqbal,这很有效,@MBo我在问题中谈到了两个指针,但只想要1个Target2
(我想要)Item
(我不想要)我可以将这些东西称为指针。这就是他们。它们不是C++中的引用。@ DavidHeffer-Noto-Otoh我会通过引用它们来解释它们,它们是最终指针;在Delphi中,术语“指针”指的是一种独特的类型,它包含自己的特殊语法(即@和^符号,在类型指针的情况下,指针数学),不适用于引用类型。因此,在Delphi上下文中,最好在更严格的意义上使用术语“指针”,尽管如果提问者不这样做,这没什么大不了的。