简单的指针问题(100分)

  • 主题发起人 主题发起人 Fpack
  • 开始时间 开始时间
F

Fpack

Unregistered / Unconfirmed
GUEST, unregistred user!
声明
 Test:TFrame2; (以创建)
function GetFram:pointer;
procedure ShowInfo(Sender:Pointer);
执行

function TFram1.GetFram:Pointer;
Begin
Result := @Test;
end;

procedure TFram1.ShowInfo(Sender:Pointer);
Begin
if Sender <> nil then
with Sender^ do
For I := 0 to Componentcount -1 do
if Components.Tag = 10 then showmessage('asdfasdf');
end; 

procedure TForm1.Button1Click(Sender: TObject);
begin
ShowInfo(GetFram);
end;

报错
Record,object or class tyer required;
是不是须要转换,如是如何做。不是又如何做。
 
procedure TFram1.ShowInfo(Sender:Pointer);
var
AFrame:TFrame;
Begin
if Sender <> nil then
begin
AFrame := TFrame(Sender^);
with AFrame do
For I := 0 to Componentcount -1 do
if Components.Tag = 10 then showmessage('asdfasdf');
end;
end; 
 
我用指针就是为了减小内存开销,加快速度。
是否有别的方法。
 
这里procedure ShowInfo(Sender:Pointer);用sender为参数是不是有问题?
改用别的为参数一下,看看
 
有管类的变量本身就是一个指针....

procedure TForm1.Button1Click(Sender: TObject);
var
FM : TForm;
begin
FW := Form1;
FW.Caption:='Ye... I See IT !!!!';
end;

运行时你会发现,对FW, 和Form1的操作是一样的...
 
OopsWare 你是说:
如果一个函数或过程在传递中的参数类型是TObject时就是指针。
有相关资料吗?

对于它的类型转换
如:TFrame(TObject)
有何种关系呢?
它是否就是指针转换,还是其他....。
我在一本Delphi书中说类型转换非常化时间。
 
我踢它一脚,给我滚上去。
----
那个好心人帮帮我
 
接受答案了.
 

Similar threads

A
回复
0
查看
996
Andreas Hausladen
A
A
回复
0
查看
977
Andreas Hausladen
A
S
回复
0
查看
911
SUNSTONE的Delphi笔记
S
S
回复
0
查看
888
SUNSTONE的Delphi笔记
S
后退
顶部