先看实例:
PTSeasDeviceData = ^TSeasDeviceData;
TSeasDeviceData = record
  ID: string;
  Name: string;
  State: string;
  Data: Pointer;
end;procedure TSeasDeviceList.Delete(ANode: TTreeNode);
var
  pp_Data: PTSeasDeviceData;
begin
  pp_Data := PTSeasDeviceData(ANode.Data);
  ANode.Data := pp_Data^.Data;
  Dispose(pp_Data);  inherited;
end;PTSeasDeviceData(ANode.Data);这里强制进行类型转换,Data是Pointer类型的指针,而PTSeasDeviceData自定义的指针怎么可以进行转换呢?要是能这样转换那么PTSeasDeviceData里头的如Name等数据又是用什么数据来附值呢?

解决方案 »

  1.   

    PTSeasDeviceData(ANode.Data)^.Name;
    PTSeasDeviceData(ANode.Data)^.IDPTSeasDeviceData自定义的指针怎么可以进行转换呢?
    其实只是告诉编译器,这个指针指向什么类型的数据而已。
      

  2.   

    你干吗不这样设计?这样根本就不用转化。 
    PTSeasDeviceData = ^TSeasDeviceData;
    TSeasDeviceData = record
      ID: string;
      Name: string;
      State: string;
      
      //改Data的类型。 
      Data: PTSeasDeviceData;
    end;