• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Delphi的字符及字符串[5]-字符串与WindowsAPI

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
Windows API 中的字符串对应这 Delphi 的 PChar(PAnsiChar); 在 API 中使用 Delphi 的字符串还是比较灵活的.

先说赋值:
//赋值方法1: 给直接量
begin
  SetWindowText(Handle, '新标题');
end;

//赋值方法2: 定义它要的类型 var p: PChar; begin p := '新标题'; SetWindowText(Handle, p); end;
//赋值方法3: 转换成它要的类型 var str: string; begin str := '新标题'; SetWindowText(Handle, PChar(str)); end; //赋值方法4: 用字符数组 var arr: array[0..255] of Char; begin arr := '新标题'; SetWindowText(Handle, arr); end;
再说取值:
//取值方法1: 用字符数组(经常被称作"缓冲区")
var
  arr: array[0..254] of Char;
begin
  GetWindowText(Handle, arr, 255);
  ShowMessage(arr); {Form1}
end;

//取值方法2: 使用 GetMem 给 PChar 分配内存 var p: PChar; begin GetMem(p, 255); {分配内存} GetWindowText(Handle, p, 255); ShowMessage(p); {Form1} FreeMem(p); {释放内存} end;
//取值方法3: 用 GlobalAlloc 分配全局内存(比 GetMem 慢) var p: HGLOBAL; begin p := GlobalAlloc(0, 255); {参数一给 0 或 GMEM_FIXED 表示分配的是固定内存} GetWindowText(Handle, PChar(p), 255); ShowMessage(PChar(p)); {Form1} GlobalFree(p); {释放内存} end;
//取值方法4: 直接使用 string; 需要先 SetLength, 然后再去除空白: var str: string; begin SetLength(str, 255); {先设定 str 的长度} GetWindowText(Handle, PChar(str), 255); {但此时 str 的长度是 255 啊!} str := PChar(str); {这样可以得到实际长度的字符串} ShowMessage(str); {Form1} end;
定长字符串不是 #0 结束的, 和 API 不好兼容, 一般不用于 API 中.


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Delphi导出数据的多种方法发布时间:2022-07-18
下一篇:
Delphi2010新增功能之:IOUtils单元(3):TDirectory.GetFiles支持通配符发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap