Delphi 的字符及字符串[5] - 字符串与 Windows API
先说赋值:
//赋值方法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[..] of Char;
begin
arr := '新标题';
SetWindowText(Handle, arr);
end;
再说取值:
//取值方法1: 用字符数组(经常被称作"缓冲区")
var
arr: array[..] of Char;
begin
GetWindowText(Handle, arr, );
ShowMessage(arr); {Form1}
end;
//取值方法2: 使用 GetMem 给 PChar 分配内存
var
p: PChar;
begin
GetMem(p, ); {分配内存}
GetWindowText(Handle, p, );
ShowMessage(p); {Form1}
FreeMem(p); {释放内存}
end;
//取值方法3: 用 GlobalAlloc 分配全局内存(比 GetMem 慢)
var
p: HGLOBAL;
begin
p := GlobalAlloc(, ); {参数一给 0 或 GMEM_FIXED 表示分配的是固定内存}
GetWindowText(Handle, PChar(p), );
ShowMessage(PChar(p)); {Form1}
GlobalFree(p); {释放内存}
end;
//取值方法4: 直接使用 string; 需要先 SetLength, 然后再去除空白:
var
str: string;
begin
SetLength(str, ); {先设定 str 的长度}
GetWindowText(Handle, PChar(str), ); {但此时 str 的长度是 255 啊!} str := PChar(str); {这样可以得到实际长度的字符串}
ShowMessage(str); {Form1}
end;
定长字符串不是 #0 结束的, 和 API 不好兼容, 一般不用于 API 中.
Delphi 的字符及字符串[5] - 字符串与 Windows API的更多相关文章
- 【剑指offer】删除字符也出现在一个字符串
转载请注明出处:http://blog.csdn.net/ns_code/article/details/27110873 剑指offer上的字符串相关题目. 题目:输入两个字符串,从第一字符串中删除 ...
- java字符数组char[]和字符串String之间的转换
java字符数组char[]和字符串String之间的转换 觉得有用的话,欢迎一起讨论相互学习~Follow Me 使用String.valueOf()将字符数组转换成字符串 void (){ cha ...
- Java 将指定字符串连接到此字符串的结尾 concat()
Java 手册 concat public String concat(String str) 将指定字符串连接到此字符串的结尾. 如果参数字符串的长度为 0,则返回此 String 对象.否则,创建 ...
- 最多有k个不同字符的最长子字符串 · Longest Substring with at Most k Distinct Characters(没提交)
[抄题]: 给定一个字符串,找到最多有k个不同字符的最长子字符串.eg:eceba, k = 3, return eceb [暴力解法]: 时间分析: 空间分析: [思维问题]: 怎么想到两根指针的: ...
- C语言:将s所指字符串中下标为偶数同时ASCII值为奇数的字符删去,-将a所指字符串中的字符和b所指字符串中的字符的顺序交叉,-将形参s所指字符串中的所有数字字符顺序前移,
//函数fun功能:将s所指字符串中下标为偶数同时ASCII值为奇数的字符删去,s所指串中剩余的字符形成的新串放在t所指的数组中. #include <stdio.h> #include ...
- c#.net常用字符串函数 字符串常用方法
RegionsStr = RegionsStr.Remove(RegionsStr.LastIndexOf(","), 1); //去掉最后一个逗号 Compare 比较字符串 ...
- 第一百二十七节,JavaScript,JSON数据类型转换,数据转换成字符串,字符串转换成数据
第一百二十七节,JavaScript,JSON数据类型转换,数据转换成字符串,字符串转换成数据 学习要点: 1.JSON语法 2.解析和序列化 前两章我们探讨了XML的结构化数据,但开发人员还是觉得这 ...
- c风格字符串,字符串字面值,c++字符串
C风格字符串:本质上就是以空字符null为结束符的数组 可以简单的理解为:有'\0'的是c风格字符串,无'\0'的是普通字符数组 字符串字面值:是一串常量字符,字符串字面值常量用双引号括起来的零个或多 ...
- go golang 判断base64数据 获取随机字符串 截取字符串
go golang 判断base64数据 获取随机字符串 截取字符串 先少写点,占个坑,以后接着加. 1,获取指定长度随机字符串 func RandomDigits(length int) strin ...
- C语言 > 字符串和字符串函数
输入 gets() 函数 : 1.gets() 从标准输入设备读取字符串,以回车结束读取,使用'\0'结尾,回车符'\n'被舍弃没有遗留在缓冲区. 2.可以用来输入带空格的字符串. 3.可以无限读取, ...
随机推荐
- 2016-07-07: 重新编译时vc90.pdb不是创建此预编译头时使用的pdb文件
使用VS2008在一个解决方案中包含多个项目时,当设置多个项目的中间目录为同一个目录时,在增量编译时出现"重新编译时vc90.pdb不是创建此预编译头时使用的pdb文件,请重新创建预编译头问 ...
- Libevent 定时器
先摘一点网上的介绍 libevent是一个事件触发的网络库,适用于windows.linux.bsd等多种平台,内部使用select.epoll.kqueue等系统调用管理事件机制.著名分布式缓存软件 ...
- 在启动dubbo框架时报错。Unable to connect to zookeeper server within timeout: 5000
这是因为zookeeper服务没有启动,所以会报错超时.只要启动zookeeper就行了. zookerper的启动很简单的,网上随便搜搜都有.
- android开发 如何调用SO
java package com.example.callsodemo; import android.R.integer; import android.R.string; import andro ...
- afx , afxMessageBox , MessageBox
afx开头的是全局函数,可以在任何地方使用 MessageBox是CWnd的子函数,只能在CWnd窗口类对象里面用, AfxMessageBox的函数原型 int AfxMessageBox( LPC ...
- WCF学习第一天
WCF 设计目标 : 1:生产效率 : 统一了现有的各种分布式技术 基于属性(Attribute)的开发 ...
- 在C#中创建和读取XML文件
1.创建简单的XML文件 为了便于测试,我们首先创建控制台应用程序,项目命名为CreateXml,Program.cs代码如下: 这样会在C盘根目录下创建data2.xml文件,文件内容为 using ...
- 先进先出集合queue
先进先出集合queue Enqueue添加到集合最后 Dequeue移除集合第一个对象并返回
- Linux编程下EAGAIN和EINTR宏的含义及处理
Linux中的EAGAIN含义 在Linux环境下开发经常会碰到很多错误(设置errno),其中EAGAIN是其中比较常见的一个错误(比如用在非阻塞操作中). linux下使用write\send ...
- PTA List Components
For a given undirected graph with N vertices and E edges, please list all the connected components b ...