0

以下のコードでは、pcp_Out はシステム日付を ANSI 形式で返すことになっています。

  • システム日付が返されますが、前にジャンク文字がありますか?

  • AllocHGlobal は IntPtr を初期化する正しい方法ですか?

       [DllImport("Open32env.dll", CharSet = CharSet.Ansi, ExactSpelling = false, EntryPoint = "CallOPLFunction", CallingConvention = CallingConvention.StdCall)]
        static extern int CallOPLFunction(long pl_Instr, IntPtr pcp_In, out IntPtr pcp_Out, out IntPtr pcp_ErrorMessage);
    
    
        static void Main(string[] args)
        {     
            IntPtr OutPtr = Marshal.AllocHGlobal(0);
            IntPtr ErrorPtr = Marshal.AllocHGlobal(0);
            IntPtr inPtr = Marshal.StringToHGlobalAnsi("");
    
            long invalue = 0;
    
            int ret = CallOPLFunction(invalue, inPtr, out OutPtr, out ErrorPtr);
    
            string Outstring = Marshal.PtrToStringAnsi(OutPtr,30);
    
            Marshal.FreeHGlobal(OutPtr);
            Marshal.FreeHGlobal(ErrorPtr);
            Marshal.FreeHGlobal(inPtr);
        }
    

出力

Outstring = "h\0Qr\0\0\0\0Ä<g\a?\004/22/13 10:25"
4

1 に答える 1