指针强制转Tobject 后的报错,请教下

tomorrow619810 2011-08-04 03:02:15
请看源码:
var
myObject: TObject;
_PChar: PAnsiChar;
begin
New(_PChar);
try
myObject := TObject(_PChar);

if myObject <>nil then
if myObject is TLabel then//这句话直接报异常了,不知道怎么回事
begin
ShowMessage('111');
end
else
begin
ShowMessage('222');
end;
...全文
126 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
山东蓝鸟贵薪 2011-08-07
  • 打赏
  • 举报
回复
测试一下,将代码传上来看看
taoran12 2011-08-06
  • 打赏
  • 举报
回复
什么异常?
火龙岛主 2011-08-05
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 brightness_li 的回复:]

procedure TForm1.Button_1Click(Sender: TObject);
var
myObject : TObject;
_PWord : PWord;
LWord : Word;

begin
New(_PWord);
LWord := 3;
_PWord := @……
[/Quote]
不是支持不支持的问题,是能不能转得问题。
因为delphi的对象本身就是一个指针,所以是支持对象转指针的。
你的问题点在于你指针所指向的位置是不是对象的问题。
rainychan2009 2011-08-05
  • 打赏
  • 举报
回复
看LZ这么折腾,蛋疼。
tomorrow619810 2011-08-05
  • 打赏
  • 举报
回复
procedure TForm1.Button_1Click(Sender: TObject);
var
myObject : TObject;
_PWord : PWord;
LWord : Word;

begin
New(_PWord);
LWord := 3;
_PWord := @LWord;
myObject := TObject(_PChar^);

if myObject <> nil then
if myObject is TObject then
begin
ShowMessage('111');
end
else
begin
ShowMessage('222');
end;

end;

我将 指针赋值后,还是报错啊 ,怎么回事?
delphi 就不支持 指针强制转 对象?
jayqiang 2011-08-04
  • 打赏
  • 举报
回复

procedure TForm1.Button_1Click(Sender: TObject);
var
myObject: TObject;
_PChar: PAnsiChar;
begin
New(_PChar);
myObject := TObject(_PChar^);
if myObject <>nil then
if myObject is TObject then
begin
ShowMessage('111');
end
else
begin
ShowMessage('222');
end;
end;
山东蓝鸟贵薪 2011-08-04
  • 打赏
  • 举报
回复
占位置学习学习
董董 2011-08-04
  • 打赏
  • 举报
回复
New(_PChar); //在堆中分配了长度为0的一个buffer

myObject := TObject(_PChar); //把_PChar指向的堆地址,传给myObject变量。

myObject现在指向的堆地址的内容是完全随机的,对myObject的任何操作,都会产生不可预知的结果。

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧