先说赋值:


//赋值方法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的更多相关文章

  1. 【剑指offer】删除字符也出现在一个字符串

    转载请注明出处:http://blog.csdn.net/ns_code/article/details/27110873 剑指offer上的字符串相关题目. 题目:输入两个字符串,从第一字符串中删除 ...

  2. java字符数组char[]和字符串String之间的转换

    java字符数组char[]和字符串String之间的转换 觉得有用的话,欢迎一起讨论相互学习~Follow Me 使用String.valueOf()将字符数组转换成字符串 void (){ cha ...

  3. Java 将指定字符串连接到此字符串的结尾 concat()

    Java 手册 concat public String concat(String str) 将指定字符串连接到此字符串的结尾. 如果参数字符串的长度为 0,则返回此 String 对象.否则,创建 ...

  4. 最多有k个不同字符的最长子字符串 · Longest Substring with at Most k Distinct Characters(没提交)

    [抄题]: 给定一个字符串,找到最多有k个不同字符的最长子字符串.eg:eceba, k = 3, return eceb [暴力解法]: 时间分析: 空间分析: [思维问题]: 怎么想到两根指针的: ...

  5. C语言:将s所指字符串中下标为偶数同时ASCII值为奇数的字符删去,-将a所指字符串中的字符和b所指字符串中的字符的顺序交叉,-将形参s所指字符串中的所有数字字符顺序前移,

    //函数fun功能:将s所指字符串中下标为偶数同时ASCII值为奇数的字符删去,s所指串中剩余的字符形成的新串放在t所指的数组中. #include <stdio.h> #include ...

  6. c#.net常用字符串函数 字符串常用方法

    RegionsStr = RegionsStr.Remove(RegionsStr.LastIndexOf(","), 1);   //去掉最后一个逗号 Compare 比较字符串 ...

  7. 第一百二十七节,JavaScript,JSON数据类型转换,数据转换成字符串,字符串转换成数据

    第一百二十七节,JavaScript,JSON数据类型转换,数据转换成字符串,字符串转换成数据 学习要点: 1.JSON语法 2.解析和序列化 前两章我们探讨了XML的结构化数据,但开发人员还是觉得这 ...

  8. c风格字符串,字符串字面值,c++字符串

    C风格字符串:本质上就是以空字符null为结束符的数组 可以简单的理解为:有'\0'的是c风格字符串,无'\0'的是普通字符数组 字符串字面值:是一串常量字符,字符串字面值常量用双引号括起来的零个或多 ...

  9. go golang 判断base64数据 获取随机字符串 截取字符串

    go golang 判断base64数据 获取随机字符串 截取字符串 先少写点,占个坑,以后接着加. 1,获取指定长度随机字符串 func RandomDigits(length int) strin ...

  10. C语言 > 字符串和字符串函数

    输入 gets() 函数 : 1.gets() 从标准输入设备读取字符串,以回车结束读取,使用'\0'结尾,回车符'\n'被舍弃没有遗留在缓冲区. 2.可以用来输入带空格的字符串. 3.可以无限读取, ...

随机推荐

  1. 2016-07-07: 重新编译时vc90.pdb不是创建此预编译头时使用的pdb文件

    使用VS2008在一个解决方案中包含多个项目时,当设置多个项目的中间目录为同一个目录时,在增量编译时出现"重新编译时vc90.pdb不是创建此预编译头时使用的pdb文件,请重新创建预编译头问 ...

  2. Libevent 定时器

    先摘一点网上的介绍 libevent是一个事件触发的网络库,适用于windows.linux.bsd等多种平台,内部使用select.epoll.kqueue等系统调用管理事件机制.著名分布式缓存软件 ...

  3. 在启动dubbo框架时报错。Unable to connect to zookeeper server within timeout: 5000

    这是因为zookeeper服务没有启动,所以会报错超时.只要启动zookeeper就行了. zookerper的启动很简单的,网上随便搜搜都有.

  4. android开发 如何调用SO

    java package com.example.callsodemo; import android.R.integer; import android.R.string; import andro ...

  5. afx , afxMessageBox , MessageBox

    afx开头的是全局函数,可以在任何地方使用 MessageBox是CWnd的子函数,只能在CWnd窗口类对象里面用, AfxMessageBox的函数原型 int AfxMessageBox( LPC ...

  6. WCF学习第一天

    WCF 设计目标 : 1:生产效率 : 统一了现有的各种分布式技术                          基于属性(Attribute)的开发                       ...

  7. 在C#中创建和读取XML文件

    1.创建简单的XML文件 为了便于测试,我们首先创建控制台应用程序,项目命名为CreateXml,Program.cs代码如下: 这样会在C盘根目录下创建data2.xml文件,文件内容为 using ...

  8. 先进先出集合queue

    先进先出集合queue Enqueue添加到集合最后 Dequeue移除集合第一个对象并返回

  9. Linux编程下EAGAIN和EINTR宏的含义及处理

    Linux中的EAGAIN含义   在Linux环境下开发经常会碰到很多错误(设置errno),其中EAGAIN是其中比较常见的一个错误(比如用在非阻塞操作中). linux下使用write\send ...

  10. PTA List Components

    For a given undirected graph with N vertices and E edges, please list all the connected components b ...