社区
Delphi
帖子详情
关于C++和DELPHI的数据类型兼容的问题
DelphiBird2
2003-10-15 04:51:19
C++中的函数有一个
int GetReport(char * content,char * deleverresp,char * returncontent,
int * errcode);
这几个参数都要传递地址的;
其中content要求是传递进去的,然后处理后在其他三个变量里保存返回的东西;
请问声明成Delphi的类型应该是什么?
...全文
92
5
打赏
收藏
关于C++和DELPHI的数据类型兼容的问题
C++中的函数有一个 int GetReport(char * content,char * deleverresp,char * returncontent, int * errcode); 这几个参数都要传递地址的; 其中content要求是传递进去的,然后处理后在其他三个变量里保存返回的东西; 请问声明成Delphi的类型应该是什么?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
DelphiBird
2003-12-18
打赏
举报
回复
C++中的函数有一个
int GetReport(char * content,char * deleverresp,char * returncontent,
int * errcode);
用pchar就可以了,但是要记得为传入获得数据得字符串数组参数先分配内存;
整形变量用var显示声明传递地址
GetMem(deleverREsp,256);
getmem(returncontent,256);
DelphiBird2
2003-10-15
打赏
举报
回复
up
DelphiBird2
2003-10-15
打赏
举报
回复
up
WuLoveXue
2003-10-15
打赏
举报
回复
前三个是在DELPHI时是pchar类型,后面的是整型!传前三个参数时,只要用Pchar()函数转换下就行了,第4个直接传整型变量!
IMBIRDMAN
2003-10-15
打赏
举报
回复
这样试试
content array[1..20] of char 或者 content:string
返回参数可用字符数组,deleverresp array[1...20] of char
调用可用@deleverresp
Delphi
中制作DLL中回调函数的应用
Delphi
中制作DLL •一 Dll的制作一般分为以下几步: 1 在一个DLL工程里写一个过程或函数 2 写一个Exports关键字,在其下写过程的名称。不用写参数和调用后缀。 二参数传递 1 参数类型最好与window
C++
的参数类型一致。不要用
DELPHI
的
数据类型
。 2 最好有返回值[即使是一个过程],来报出调用成功或失败,或状态。成功或失败的返回值最好为1[成功]或0[失败].一句话,与windows
c++
兼容
。 3 用stdcall声明后缀。 4 最好大小写敏感。 5 无须用far调用后缀,那只是为了与windows 16位程序
兼容
。 三 DLL的初始化和退出清理[如果需要初始化和退出清理] 1 DLLProc[SysUtils单元的一个Pointer]是DLL的入口。在此你可用你的函数替换了它的入口。但你的函数必须符合以下要求[其实就是一个回调函数]。如下: procedure DllEnterPoint(dwReason: DWORD);far;stdcall; dwReason参数有四种类型: DLL_PROCESS_ATTACH:进程进入时 DLL_PROCESS_DETACH进程退出时 DLL_THREAD_ATTACH 线程进入时 DLL_THREAD_DETACH 线程退出时 在初始化部分写: DLLProc := @DLLEnterPoint; DllEnterPoint(DLL_PROCESS_ATTACH); 2 如Form上有TdcomConnection组件,就Uses Activex,在初始化时写一句CoInitialize (nil); 3 在退出时一定保证DcomConnection.Connected := False,并且数据集已关闭。否则报地址错。 四全局变量的使用 在widnows 32位程序中,两个应用程序的地址空间是相互没有联系的。虽然DLL在内存中是一份, 但变量是在各进程的地址空间中,因此你不能借助dll的全局变量来达到两个应用程序间的数据 传递,除非你用内存映像文件。 五、其他:调用方式按照标准的Windows调用方式. 六、关于参数传递 •
Delphi
程序之间调用DLL,如果要用String类型的话,要在引用的单元加上ShareMem 单元。 •如果
Delphi
写的DLL供其他开发工具使用的话,不要使用String类型,用PAnsiChar类型。 尽量使用标准DLL接口。指的是传递的参数类型及函数返回类型不能是
Delphi
特有的, 比如string(AnsiString),以及动态数组和含有这些类型成员的复合类型(如记录),也不 能是包含有这些类型成员数据成员的对象类型,以避免可能的错误。如果使用了string类型或 动态数组类型,且调用方不是
Delphi
程序,则基本上会报错。如果调用方是
Delphi
但调用方或 被调用方没有在工程文件的第一包含单元不是ShareMem,也可能会出错。 七、关于回调Funciton 你可以把Callback函数看作是一种特殊的消息响应函数,一般来说我们不会自己调用这种函数, 而是有某些系统函数调用,而且不需要向后传递消息。 只要象C/
C++
这样支持函数指针的语言都 有回调函数的概念,它实际上是向被调用函数传一个你的函数地址,然后被调用函数向通过你传 入的函数地址来调用你的函数 。 以上是结构化回调,到高级语言Object Pascal、
C++
中回调函数并没有退出,反而得到延伸与 扩展,在面向对像中的回调,其实是指面向对像中类对像的事件,事件就是原始的回调函数。面 向对像, 将回调函数定义成事件过程,在程序引用对像时,若指定了对像的过程事件后,那么在 要进行事件触发的地方检查事件过程是否分配,如果分中的就执行事,也就是执行了回调函数。
delphi
6串口通信
在工程实践中经常需要实现上下位机间的串口通信,为了编程的方便性我们通常采用字符方式进行数据传输,由于需要数据转换以及转换后的数据长度增加,数据传输速度不够理想,为了提高系统实时性在某些特殊场合更需要直接采用二进制进行数据传输。
Delphi
6.0是一种面向对象的可视化的快速应用开发(RAD)工具,它既具有
C++
语言的强大功能,同时又有VB的易用性,
Delphi
6.0的伸缩性强,既可用于开发小项目,也可用于开发大项目,尤其适用于快速应用的开发,其大量优点使它迅速成为一种非常流行的编程语言。
Delphi
6.0中串口通信的实现方法很多,可以使用嵌入式汇编语言、API函数以及VB的MSComm控件来实现。其中使用MSComm控件来实现串口通信最方便,但有关
Delphi
如何实现二进制通信的资料很少,大部分参考书都只介绍了VB中MSComm控件的字符通信方式。由于
Delphi
中数组跟Variant变量不
兼容
,即在
Delphi
中字节数组不能直接赋值给MSComm控件的output属性,这跟VB有中很大的不同(VB中可以直接赋值),本人通过摸索总结出两种实现
Delphi
二进制通信的方法,即动态数组法和可变数组(Variant Array)法,并给出了应用实例。在应用实例中我们使用
Delphi
的absolute关键字来定义两个同地址的动态数组,类型分别为字节型数组和短整型数组,使用字节动态数组接收数据后,可以直接使用短整型动态数组获得短整型数据,省却了数据转换的麻烦
青少儿编程NOIP信息学奥赛通关必备-
C++
语法专题-
数据类型
转换
1、本课程为零基础
C++
语法专题课,是青少儿参加信息学奥赛NOIP通关必备-语法专题课; 2、本课程每节课均配有练习题以及真题,以锻炼孩子的解题能力; 3、本课程是基于小学生的... 6、本课程介绍的是
数据类型
转换的知识
BarCodeWiz Barcode ActiveX控件
BarCodeWiz Barcode ActiveX控件 是一款条码打印控件,易于使用,
兼容
性好,打出的条码质量高,以图片方式打印条码。可用于Access,Word,Excel,VB,
Delphi
等。 BarCodeWiz Barcode ActiveX控件的关键特色: 可运用于MS Access, Word, Excel, FoxPro, Visual Basic, Visual
C++
, Borland
Delphi
和其他应用程序; 支持的条码有:Code 39, Code 39 Extended, Code 128 A, B, C, and Auto, UCC / EAN 128, Interleaved 2 of 5, Standard 2 of 5, Code 93(自动切换到扩展模式), Code 11, Codabar, UPC A, UPC E, EAN 13, EAN 8, PostNet, Royal Mail; 附在Word, Access, Excel, Visual Basic, Visual
C++
, VB.NET, C#,和
Delphi
里使用的示例; 允许数据绑定; 可以图片的方式拷贝到剪贴板; 保存格式有EMF, WMF, BMP,和GIF; 自动计算必须和可选的校验位数; 角度可调(0,90,180和270度); 条形宽度和高度可调; 背景和条码颜色可调; 可选不透明和透明背景; 支持任何字体的文字和注释; 文字水平位置可调整; 七种边界类型; 可把文字扩展到条码长度; 可以以DLL形式使用,在后台动态产生和打印条码; 不需要其他的DLL文件; 多种触发事件可选:单击,双击,鼠标移动,鼠标按下和鼠标弹起。
TRichView 15.1 FS
TRichView 是
Delphi
/
C++
Builder 控件,主要用于显示、编辑和打印超文本文档。新版本解决多个
兼容
性
问题
,更新了字符串标签、剪贴板、RTF和DB组件。
兼容
性
问题
Item tags是字符串,不再是整数型 OnRVFPictureNeeded参数改变 TRichView.LoadText, LoadTextFromStream, SaveText, SaveTextToStream, TRichViewEdit.InsertTextFromFile 有了新的参数。 TRVLongOperation的声明类型已经改变 以下全局变量从RVTable.pas中移除:RichViewTableGridStyle, RichViewTableGridStyle2, RichViewTableGridColor,被替换为TRVStyle属性。 风格模板 默认情况下,风格模板不能被使用,需激活风格模板,设置TRichView.UseStyleTemplates = True。 在TRichViewEdit中,你可以应用指定的模板样式到选定区域,使用这些方法:ApplyStyleTemplate, ApplyTextStyleTemplate, ApplyParaStyleTemplate. 样式模板可用ChangeStyleTemplates方法编辑。 RTF TRichView.RTFOptions中的新选项:rvrtfSavePngAsPng。如果默认有这个选项,PNG图像也会被保存为PNG格式。 打印 表格行的新属性: KeepTogether; 新的表格方法: SetRowPageBreakBefore, SetRowKeepTogether; table.PrintOptions新选项: rvtoContinue; 新属性:TCustomRVPrint.IgnorePageBreaks。 旋转 表格单元格可旋转 90°, 180°或 270。 一个新的方法返回项坐标: GetItemCoordsEx; 它考虑到了单元格的旋转。 字符串标签 新属性:cell tags; 从13.2版本开始,项目标签是字符串(Unicode for
Delphi
2009或更高,ANSI老版本的
Delphi
),从整数到PChar无需类型转换! 64-bit 32-bit 和 64-bit编译器均支持RAD Studio XE2+。 注意: TRVOfficeConverter 可以编译为64-bit应用程序,但列表的转换器将为空 (因为转换器是32-bit DLLs,不能再64-bit应用中使用)。 HTML存储 TRichView.SaveHTMLEx可保存扩展的背景图像; TRichView.SaveHTMLEx 能更好的保存列表标记 (无论是在常规或rvsoMarkersAsText 模式); TRichView.OnSaveImage2事件新增"hidden"参数。 DB组件 如果rvfoLoadBack在 RVFOptions中, TDBRichView会在加载数据前清空 BackgroundBitmap; 如果rvfoLoadBack在RVFOptions 和 FieldFormat=rvdbRVF中, TDBRichViewEdit会在加载数据前清空 BackgroundBitmap。 剪贴板 TRichViewEdit 可以粘贴URL,新增方法:PasteURL; 新属性:AcceptPasteFormats允许限制格式列表; 新属性:DefaultPictureVAlign定义一个对齐以粘贴和放置图像。
Delphi
5,379
社区成员
262,722
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章