var format:pointer;
begin
 idc.Host:=lbledtip.Text;
 //format:=ACMDialog1.OpenDialog;这句话是通过打开一个“声音选定”对话
//框,我通过单步跟踪得到这个值是$D9F954,那我如果直接想把这个值赋给
//format,用如下语句为何为行呀??应该如何赋呀?
 format:=$D9F954;
 //format:='$D9F954';这样也不行的

解决方案 »

  1.   

    ACMDialog1.OpenDialog返回值是什么类型的?format:=$D9F954;直接赋值是不行的,可以做一下强制类型转换:format:=Pointer($D9F954);
      

  2.   

    Pointer 是指针类型,它代表的是一个内存地址。
    一般情况,使用指针类型是通过这个地址来操作它所指向的变量。
    当然如果非要用这个地址值作为你的变量数据,也是可以的,
    但是它有长度限制,一般是 16 位的。直接附指针值的方式就向楼上所说的,比如:
    Format := Pointer($D9F954); { 一般情况不会直接操作地址值 }使用地址操作变量的方式如下:
    假设你的 ACMDialog1.OpenDialog 返回值是整型。GetMem(Format, SizeOf(Integer));
    PInteger(Format)^ := ACMDialog1.OpenDialog; { 需要将无类型指针转换为整型指针 }
    { 使用 Format ... ... }
    FreeMem(Format);