var address:DWORD; obj:TObject; begin address:=DWORD(addr(Button1)); obj:=TObject(pointer(Address)); end;编译通过。不过好像这样没有什么意义,因为obj是一个对象,并不是指针
可以的,不过不是直接把INT的地址转换为TOBJECT的地址,而是根据INT的值创建一个包含该值的TOBJECT.我经常写这样的代码:procedure TdmPub.getLikeSite(site:tComboBox); begin getData('select id,name from siteInfo where name like ''%'+site.Text+'%'''); site.Items.Clear; with qryPub do while not eof do begin site.items.AddObject(fields[1].asString,tObject(fields[0].asInteger));//此处把INT转换为OBJECT next; end; if site.Items.Count > 0 then site.ItemIndex := 0 else if application.messageBox(pchar('数据库中没有"'+site.Text+'"站,是否现在增加?'),'请确认',mb_yesNo) = idYes then begin if execSql('insert into siteInfo(name) values('''+site.text+''')') then getLikeSite(site); end; end;
地址为INTEGER的指针所指向的对象转换成TObject类型就OK
如果我没记错是tobject(ptr())
.Net 的 box, unboxdelphi7??? 一時沒什麼思路
TObject(PInteger(i))
address:DWORD;
obj:TObject;
begin
address:=DWORD(addr(Button1));
obj:=TObject(pointer(Address));
end;编译通过。不过好像这样没有什么意义,因为obj是一个对象,并不是指针
begin
getData('select id,name from siteInfo where name like ''%'+site.Text+'%''');
site.Items.Clear;
with qryPub do
while not eof do
begin
site.items.AddObject(fields[1].asString,tObject(fields[0].asInteger));//此处把INT转换为OBJECT
next;
end;
if site.Items.Count > 0 then
site.ItemIndex := 0
else
if application.messageBox(pchar('数据库中没有"'+site.Text+'"站,是否现在增加?'),'请确认',mb_yesNo) = idYes then
begin
if execSql('insert into siteInfo(name) values('''+site.text+''')') then
getLikeSite(site);
end;
end;
integer(cbxSys.items.objects[i])
哈哈真想不明白竟然也有人回答出来了!
我服了YOU,所以每人给5分