文档章节

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

涂孟超
 涂孟超
发布于 2014/09/26 15:37
字数 371
阅读 9
收藏 0
点赞 0
评论 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 中.

本文转载自:http://www.cnblogs.com/del/archive/2008/03/04/1089437.html

共有 人打赏支持
涂孟超
粉丝 12
博文 2011
码字总数 14107
作品 0
深圳
程序员
用好Delphi中的字符串

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

vga
2016/08/09
14
0
Delphi、PChar和Char数组的比较

Delphi、PChar和Char数组的比较   string和Char数组都是一块内存, 其中存放连续的字符. string保存具体字符的内存对用户是透明的, 由Delphi管理它的分配, 复制和释放, 用户不能干预(其实也...

技术小甜
2017/11/08
0
0
delphi pchar char byte string转换问题

delphi pchar char byte string转换问题 注:Delphi中的Char,PChar,PByte,Byte,String的相互转换,您是不是也遇到过,为此头疼过吗?你要是明白了他们的原理就会轻松了。 话题064840的标题是...

鹅倌
2017/01/06
0
0
Delphi字符串、PChar与字符数组之间的转换

Delphi字符串、PChar与字符数组之间的转换 Delphi字符串、PChar与字符数组之间的转换 设有以下三个变量: var s:string; p:pchar; a:array[1..20] of char; 那么三者之间的转换如下: 1、字符...

vga
2015/03/06
0
0
Windows中系统范围热键的实现方法

在Windows环境下运行的程序,大多数都支持热键,热键一般被人们称为快捷键,例如:大多数Windows程序都支持“复制”和“粘贴”操作,它们的快捷键一般是:“Ctrl+C”和“Ctrl+V”;在“记事本...

余二五
2017/11/09
0
0
Delphi中使用汇编(关于POS函数的问题)

在delphi中使用汇编异常的简单,只用使用关键字asm ....end来引导就行了。 得到一个字符在字符串中的位置有很多方法,最简单的就是使用delphi自己的Pos函数 另外一个方法就是使用 循环查找字...

技术小美
2017/11/06
0
0
字符串和数字之间的转换(Unicode)

1 Unicode编码的字符串转换为数字类型 CString str;str = _T("1234");int i = _ttoi(str);float f = tstof(str); 2 数字转换为wchart wchar_t c[10];int num = 100;itows(num,c,10,10进制);w......

zhangyujsj
2014/12/03
0
0
Windows环境下Unicode编程总结

UNICODE环境设置 在安装Visual Studio时,在选择VC++时需要加入unicode选项,保证相关的库文件可以拷贝到system32下。 UNICODE编译设置: C/C++, Preprocessor difinitions 去除MBCS,加UNI...

晨曦之光
2012/03/09
0
0
Windows环境下Unicode编程总结和将ANSI转换到Unicode 将Unicode转换到ANSI

Windows环境下Unicode编程总结 UNICODE环境设置 在安装Visual Studio时,在选择VC++时需要加入unicode选项,保证相关的库文件可以拷贝到system32下。 UNICODE编译设置: C/C++, Preprocesso...

长平狐
2013/01/06
1K
0
Delphi字符串、PChar与字符数组之间的转换

var s: string; p: pchar; a: array[1..20] of char; 1、字符串 ---> PChar p := PChar(s); 2、PChar ---> 字符串 s := p; 3、PChar ---> 字符数组 StrCopy(@a , p); 4、字符数组 ---> PChar......

KavenSu
2014/01/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

20位活跃在Github上的国内技术大牛 leij 何小鹏 亚信

本文列举了20位在Github上非常活跃的国内大牛,看看其中是不是很多熟悉的面孔? 1. lifesinger(玉伯) Github主页: https://github.com/lifesinger 微博:@ 玉伯也叫射雕 玉伯(王保平),...

海博1600
11分钟前
0
0
高性能服务器本质论

一 服务器分类 从软件性能角度,高性能服务器分:cpu密集型服务器/IO密集型服务器 (1)CPU密集型:该类服务器没有对io的访问/没有同步点,性能瓶颈在于对cpu的充分利用。 典型的如转发服务器/...

码代码的小司机
12分钟前
0
0
Mybatis收集配置

一、Mybatis取Clob数据 1、Mapper.xml配置 <resultMap type="com.test.User" id="user"> <result column="id" property="id"/> <result column="json_data" property="jsonData" ......

星痕2018
38分钟前
0
0
centos7设置以多用户模式启动

1、旧版本linux系统修改inittab文件,在新版本执行vi /etc/inittab 会有以下提示 # inittab is no longer used when using systemd. # # ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON......

haha360
今天
0
0
OSChina 周日乱弹 —— 局长:怕你不爱我

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @ andonny :分享周二珂的单曲《孤独她呀》 《孤独她呀》- 周二珂 手机党少年们想听歌,请使劲儿戳(这里) @孤星闵月 :没事干,看一遍红楼梦...

小小编辑
今天
192
9
Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式 Factory工厂模式 Singleton单例模式 Delegate委派模式 Strategy策略模式 Prototype原型模式 Template模板模式 Spring5 beans 接口实例化 代理Bean操作 ...

小致dad
今天
0
0
SpringBoot | 第十章:Swagger2的集成和使用

前言 前一章节介绍了mybatisPlus的集成和简单使用,本章节开始接着上一章节的用户表,进行Swagger2的集成。现在都奉行前后端分离开发和微服务大行其道,分微服务及前后端分离后,前后端开发的...

oKong
今天
11
0
Python 最小二乘法 拟合 二次曲线

Python 二次拟合 随机生成数据,并且加上噪声干扰 构造需要拟合的函数形式,使用最小二乘法进行拟合 输出拟合后的参数 将拟合后的函数与原始数据绘图后进行对比 import numpy as npimport...

阿豪boy
今天
17
0
云拿 无人便利店

附近(上海市-航南路)开了家无人便利店.特意进去体验了一下.下面把自己看到的跟大家分享下. 经得现场工作人员同意后拍了几张照片.从外面看是这样.店门口的指导里强调:不要一次扫码多个人进入....

周翔
昨天
1
0
Java设计模式学习之工厂模式

在Java(或者叫做面向对象语言)的世界中,工厂模式被广泛应用于项目中,也许你并没有听说过,不过也许你已经在使用了。 简单来说,工厂模式的出现源于增加程序序的可扩展性,降低耦合度。之...

路小磊
昨天
254
1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部