Delphi双指针使用
2020-02-14 01:21
387 查看
Delphi的指针功能实际上是很少有用到的,但是它对外封装了几个指针的类型还是可以用用,如
PChar (=^Char), PPChar (=^PChar, 传说中的双指针,在Delphi5与它的以下版本可能没有这个类型,但可以自己建立,如: type PPChar = ^PChar )等等。 我也是在偶然的机会下碰到这个技术话题的。在写一个DELPHI的系统中,调用一个厂家提供的DLL(VC)时,代码类似如下:DLL模块
PChar (=^Char), PPChar (=^PChar, 传说中的双指针,在Delphi5与它的以下版本可能没有这个类型,但可以自己建立,如: type PPChar = ^PChar )等等。 我也是在偶然的机会下碰到这个技术话题的。在写一个DELPHI的系统中,调用一个厂家提供的DLL(VC)时,代码类似如下:DLL模块
- int _stdcall getInfo(char* info)
- int _stdcall getTest(char* info)
- {
- char* str = "Test";
- // TODO: str业务处理
- strcpy(info, str);
- return 0;
- }
- function getInfo(info: PChar): string; stdcall; External '{ Dll 函数}';
- // 测试过程
- procedure Test;
- var
- pStr: array[0..100] of Char;
- begin
- getTest(pStr);
- ShowMessage(pStr);
- end;
- int _stdcall getTest(char* info)
- {
- char* str = "Test";
- // TODO: str业务处理
- info = (char*) malloc(sizeof(char) * strlen(str) + 1); // 分配内存空间
- strcpy(info, str);
- info[strlen(str)] = 0x00; // 标记结束符
- return 0;
- }
- procedure Test;
- var
- pStr: PChar;
- begin
- getTest(pStr);
- ShowMessage(pStr);
- end;
- int _stdcall getTest(char* *info)
- {
- char* str = "Test";
- // TODO: str业务处理
- *info = (char*) malloc(sizeof(char) * strlen(str) + 1); // 分配内存空间
- char* c = *info;
- strcpy(c, str);
- c[strlen(str)] = 0x00;
- return 0;
- }
- var
- pStr: PChar;
- begin
- getTest(@pStr);
- ShowMessage(pStr);
- end;
- function getTest(info: PPChar): Integer;
- var
- str: PChar;
- begin
- Result := -1; // 返回错误代码
- try
- str := 'Test';
- // TODO: str业务处理
- Info^ := strAlloc(Length(str) * SizeOf(Char) + 1); // 分配内存空间
- StrCopy(Info^, PChar(str));
- Result := 0;
- except
- end;
- end;
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- 一些Delphi 控件下载地址备份 2011.12.15
- Delphi 数据库查询(TADOQuery)
- Delphi 内存分配 StrAlloc New
- Delphi 的编译指令
- delphi资源文件制作及使用详解
- 使用DelphiXE10动态创建Firebird嵌入式数据库文件
- Delphi 7连接MySql
- 用delphi解决MySQL数据库中无图形界面的问题
- DELPHI HOOK随手笔记
- DELPHI 读取EXCEL 以及将EXCEL写入到ACCESS 数据库
- delphi TByteArray 装换成base64
- Python for delphi教程
- 检查IP地址是否有效(delphi)
- delphi AddObject 用法
- delphi 动态创建 复选框控件
- delphi 通过点击获取控件名称
- Delphi中@,^,#,$分别表示什么?
- Delphi 运行时错误信息表
- Delphi 编译错误信息表
- Delphi 的运算符列表