文档章节

Delphi 的字符及字符串[5] - 字符串与 Windows API

涂孟超
 涂孟超
发布于 2014/09/26 15:37
字数 371
阅读 96
收藏 0

钉钉、微博极速扩容黑科技,点击观看阿里云弹性计算年度发布会!>>>

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 中.

涂孟超
粉丝 13
博文 2011
码字总数 14107
作品 0
深圳
程序员
私信 提问
加载中
请先登录后再评论。
博客总目录(2007.11.12 - 2010.4.25)

如果我的学习记录和历程能对你有所帮助, 我非常高兴; 但是 -- "万一" 不是高手、更不是大师, 只是利用工作之余学点东西, 并感觉学得挺吃力. 内容都是写时才会, 难免稚嫩, 所以 "仅供参考" 可...

涂孟超
2014/09/26
49
0
用好Delphi中的字符串

用好Delphi中的字符串日期:2005年10月18日 作者: 人气:17184 查看:[大字体 中字体 小字体]一:各种字符串  字符串是Object Pascal所有数据类型中最有用的类型。许多函数以字符串为传递参...

vga
2016/08/09
60
0
Delphi AnsiString 与 PAnsiChar

http://www.newsmth.net/nForum/#!article/Delphi/83 发信人: flier (小海 //爱喝可乐^_^), 信区: Delphi 标 题: 关于Delphi中string的一些理解 :) 发信站: BBS 水木清华站 (Wed Nov 8 16:13......

osc_yztbpii7
2018/05/21
7
0
delphi char数组、string和Pchar的相互转换

因为要调用windows的api或者给vc++写接口,很多地方都要用到pchar,现在将char数组、string和pchar之间的相互转换都列出来,都是网上找的资料,我总结一下,先直接上代码,再讲原理。 1.stri...

osc_yg19sz9i
2019/08/14
2
0
Delphi 版本信息获取函数 GetFileVersionInfo、GetFileVersionInfoSize、VerFindFile、VerInstallFile和VerQueryValue

一、版本信息获取函数简介和作用 获取文件版本信息的作用:   1. 避免在新版本的组件上安装旧版本的相同组件;   2. 在多语言系统环境中,操作系统根据文件版本信息里提供的语言信息在启...

osc_99vlkukb
2019/12/06
5
0

没有更多内容

加载失败,请刷新页面

加载更多

关于回归的线性模型的讨论

1. 回归线性模型综述 这篇文章我们来讨论回归问题。回归问题的目标是在给定D维输入(input) 变量x的情况下,预测一个或者多个连续目标(target)变量t的值。 典型的回归问题的例子是:多项式曲线...

osc_0qnrwmy3
26分钟前
4
0
阶段回顾

该图片由Heidelbergerin在Pixabay上发布 虽然标题是阶段性回顾,但是现阶段感觉自己也没做啥事,前段时间也是一直在准备研究生开学,近期写了几篇文章感觉还可以,虽然阅读量有点可怜,不过我...

Nicer_
2019/09/08
11
0
删除容器镜像中心的镜像

序言 很久没有思维抖动的时候,就在风吹的一瞬间。。。美滋滋。。。 容器镜像的删除 在使用容器的时候,我们都是自己搭建一个私有的容器镜像环境,一般使用的镜像也就是registry了,用来保存...

SRE运维实践
2018/09/11
9
0
java 填充 pdf 表单

maven <dependency> <groupId>com.itextpdf</groupId> <artifactId>forms</artifactId> <version>7.1.11</version></dependency> 示例代码: public class AwardGenera......

lemos
27分钟前
22
0
Mysql----左连接、右连接、内连接、全连接的区别

  最近,突然想起来数据库有好些时间没用到,所以,想把数据库有关的知识回顾一下,所以接下来这个月,基本上会以数据库的帖子来写为主,首先,很多同学都会有个错觉,觉得学习数据库会sql...

osc_kedi1mvz
27分钟前
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部