C#里有這樣一段:
string strResult;
IntPtr ptrRet = LanBase.TakeCommandData();
strResult = Marshal.PtrToStringAnsi(ptrRet); 我想用DELPHI該怎麼表示呢

解决方案 »

  1.   

    不知道你的这些方法是做什么用的,大概翻译了一下:
    var
      strResult: string;
      ptrRet: IntPtr;
    begin
      ptrRet := LanBase.TakeCommandData;
      strResult := Marshal.PtrToStringAnsi(ptrRet); 
    end;
      

  2.   

    IntPtr DELPHI里沒有吧?
    另外就是這個轉換Marshal.PtrToStringAnsi
    TakeCommandData是調用客戶提供給我們的DLL,這個不用管。
    客戶提供的是C#,我們要改為DELPHI
      

  3.   

    IntPtr要看你在C#里面是怎么定义的
      

  4.   

    用于表示指针或句柄的平台特定类型。 命名空间:System
    程序集:mscorlib(在 mscorlib.dll 中)语法
    Visual Basic(声明) 
    <SerializableAttribute> _
    <ComVisibleAttribute(True)> _
    Public Structure IntPtr
    Implements ISerializable
     
    Visual Basic(用法) 
    Dim instance As IntPtr 
    C# 
    [SerializableAttribute] 
    [ComVisibleAttribute(true)] 
    public struct IntPtr : ISerializable
     
    C++ 
    [SerializableAttribute] 
    [ComVisibleAttribute(true)] 
    public value class IntPtr : ISerializable
     
    J# 
    /** @attribute SerializableAttribute() */ 
    /** @attribute ComVisibleAttribute(true) */ 
    public final class IntPtr extends ValueType implements ISerializable
     
    JScript 
    JScript 支持使用结构,但不支持进行新的声明。
     备注
    IntPtr 类型被设计成整数,其大小适用于特定平台。即是说,此类型的实例在 32 位硬件和操作系统中将是 32 位,在 64 位硬件和操作系统上将是 64 位。IntPtr 类型可以由支持指针的语言使用,并可作为在支持与不支持指针的语言间引用数据的一种通用方式。IntPtr 对象也可用于保持句柄。例如,IntPtr 的实例广泛地用在 System.IO.FileStream 类中来保持文件句柄。IntPtr 类型符合 CLS,而 UIntPtr 类型却不符合。只有 IntPtr 类型可用在公共语言运行库中。UIntPtr 类型大多数是提供来维护与 IntPtr 类型之间的体系结构上的对称性。此类型实现 ISerializable 接口。线程安全
    该类型对于多线程操作是安全的。平台
    Windows 98、Windows 2000 SP4、Windows CE、Windows Millennium Edition、Windows Mobile for Pocket PC、Windows Mobile for Smartphone、Windows Server 2003、Windows XP Media Center Edition、Windows XP Professional x64 Edition、Windows XP SP2、Windows XP Starter Edition.NET Framework 并不是对每个平台的所有版本都提供支持。有关受支持版本的列表,请参见系统要求。版本信息
    .NET Framework
    受以下版本支持:2.0、1.1、1.0.NET Compact Framework
    受以下版本支持:2.0、1.0请参见
    参考
    IntPtr 成员
    System 命名空间
    UIntPtr
      

  5.   

    Marshal.PtrToStringAnsi
    这个估计是个转换类型的,好象在delphi里面没有,
    IntPtr 类型delphi里面也没有,你要看下是否可以转成delphi有的类型
    1楼已经给出方法,你的问题就是类型问题
      

  6.   

    按照上面的说明,哪IntPtr就是Integer类型了。
      

  7.   

    IntPtr 在这里应该是Pchar
    var
      strResult: string;
      ptrRet: pchar;
    begin
      ptrRet := pchar(LanBase.TakeCommandData);
      strResult := string(ptrRet); 
    end;
      

  8.   

    var
      strResult: string;
      ptrRet: pchar;
    begin
      ptrRet := pchar(LanBase.TakeCommandData);
      strResult := string(ptrRet); 
    end;