C#调用delphi记录结构体问题

问题描述

delphi代码:1、定义的结构体TestRecord=recordA:array[0..5]ofchar;B:array[0..6]ofchar;C:array[0..7]ofchar;end;2、delphi调用函数functiontest(trecord:TestRecord):integer;stdcall;c#代码:1、c#针对delphi定义的结构体[System.Runtime.InteropServices.StructLayout(System.Runtime.InteropServices.LayoutKind.Sequential)]publicstructTestRecord{[MarshalAs(UnmanagedType.ByValTStr,SizeConst=6)]publicstringA;[MarshalAs(UnmanagedType.ByValTStr,SizeConst=7)]publicstringB;[MarshalAs(UnmanagedType.ByValTStr,SizeConst=8)]publicstringC;}2、声明调用的接口[DllImport("Jx104.dll")]publicstaticexterninttest(TestRecordt);3、c#调用初始化代码TestRecordt=newTestRecord();t.A="abcdef";//+((char)0).ToString();t.B="1234567";//+((char)0).ToString();t.C="98765432";//+((char)0).ToString();JX104NET_API.test(t);现在问题直接调用后在delphi是监控中显示结果是:(('a','b','c','d','e',#0),('1','2','3','4','5','6',#0),('9','8','7','6','5','4','3',#0))发现每个结构中少最后一个字符,这是什么原因造成的,该如何解决,谢谢。

解决方案

解决方案二:
把string换成byte[]
解决方案三:
用byte[]也不行

时间: 2024-10-31 04:58:53

C#调用delphi记录结构体问题的相关文章

C# 调用DELPHI 结构体指针数组出现的乱码

问题描述 delphi:TAirc=recordID:array[0..64]ofChar;MC:array[0..128]ofChar;LMAC:Single;XMAC:Single;WTNOL:Single;WTMAX:Single;WTMIN:Single;stdFWD:Single;stdAFT:Single;stdLFT:Single;stdRIT:Single;end;PAirc=^TArrAirc;functionGetAirc(varS:PAirc;aPath:PChar):In

.net Winform程序调用delphi编写的dll出错,求救!!

问题描述 winform调用delphi的dll,delphi里面的代码是连接远程服务器,发送过来数据,并在dll里处理接收.我在.net用委托调用delphi的接口方法,获取到了delphi传过来的实时数据,但是在获取到6分钟的时候就不获取了,连接都正常,也不报错,找不到原因,求高手解决!!Winform代码:.net声明调用dll:处理回来数据的方法,目前什么都不做:delphi接口代码:入口:触发事件调用的方法:处理数据方法:声明的委托:现在已经将delphi的代码封装成dll,但是.ne

使用OLE DB和ADO调用返回记录集的Oracle存储过程

摘要 OLE DB是建立在ODBC成功基础上的一种开放规范,它为访问和操纵不同类型数据提供开放的标准.ADO是OLD DB的一个消费者,它提供了对OLE DB数据源应用级的访问功能.在应用程序中使用OLE DB和ADO,可以高效地调用返回记录集的Oracle存储过程. 关键字 OLE DB ADO 存储过程 记录集 1 前言 在基于Oracle数据库的ADO应用程序的开发过程中,为了提高执行速度和降低网络流量,往往要在应用程序中调用Oracle数据库服务器端的存储过程.有的存储过程需要返回多行的

在VC 6.0下如何调用Delphi开发的进程内COM

源代码包中共有两个zip文件,其中DelphiCallVCCOM.zip为Delphi调用VC的COM组件,VCCallDelphiCOM.zip为VC调用Delphi的COM组件 因为本人的语言水平很差,考大学时150的总分,我考了个60分.外语也是,初中及格过一次,会考及格过一次.其它的时间好像从没有及格过.所以我不写文章,因我一百字的文章给我写,至少要出八九个错别字.哈哈-.真是个马大哈.你别说我还真的姓马.所以下面的文章中有错误之处,请你老人家多多理解.谁叫你看我的文章了的.下面就谈正事

malloc-c语言结构体问题 关于内存分配问题

问题描述 c语言结构体问题 关于内存分配问题 #include<stdio.h> #include<windows.h> #include<stdlib.h> #include<math.h> #include<string.h> #define MAX 100 #define LEN sizeof(struct book) typedef struct book { char id[20]; char name[30]; float price

com-C++ 如何调用Delphi的dll文件中的COM方法

问题描述 C++ 如何调用Delphi的dll文件中的COM方法 请问 C++ 如何 调用 Delphi 的dll文件中的COM方法 解决方案 只要是COM就遵守COM的规范,Delphi写出来的COM和其他语言写出来的COM用法是一样的

c++ delphi 回调函数-关于C++调用delphi的问题,请大侠指教

问题描述 关于C++调用delphi的问题,请大侠指教 在使用VS2008,用C++写了一个类,这个类需要调用delphi中的一个函数,这个函数原型类似于 LONGINT f(lUserID:Longint;lChannel:LOngint; lpStartTime:LPTYL_DVR_TIME; lpStopTime:LPTYL_DVR_TIME; sSavedFileName:PChar; deCallback : TDVRDownLoadCallback; dwUser:DWORD),这里

struct-c结构体问题,无法识别?

问题描述 c结构体问题,无法识别? 我在a.h文件下面书写了结构体 struct wt{ int a; int b; }: struct wt stu; 在b.c文件下面 #include"a.h" wt stu; void nihao(){ stu.a=1; } 结构体是一个全局变量结构体为什么b.c文件会显示说 wt 无法识别,stu也是无法识别? 解决方案 struct wt{ int a; int b; }; //你写成全角了 struct wt stu; //wt stu;

c++-Visula Basic 6.0语言调用C++ struct结构体中的字符串问题

问题描述 Visula Basic 6.0语言调用C++ struct结构体中的字符串问题 VB6调用C++ DLL结构体struct中的字符串,内存预分配的写法是什么,内存回收怎么做?VB不能用指针的谢谢 解决方案 VB不支持指针,一般你可以定义成局部变量,这样函数退出会自动回收的. 解决方案二: c++公用体union.结构体struct内存分配问题