在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
参考:http://my.oschina.net/kavensu/blog/193719 以下的各种方法都是我在Delphi 6的环境下测试成功的,可能根据你的开发环境、不同的上下文语境……有一些可能会出现问题,以自己在使用的时候进行具体的测试为准
Char数组和String的相互转换的另一种方法和注意事项请看下一篇博客 同时建议结合以下的博客一起理解: 《Delphi字符串的基本操作》和《Delphi中的各种字符串、String、PChar、Char数组》
0.前提条件 var s: String; p: PChar; a: Array[0..20] of char;
1.字符串 ---> PChar P:= PChar(S);
2.PChar ---> 字符串 s:= p; 或者 s:= string(p); 上面的两种方式的效果一样,都是将p 指向的内存中的字符串拷贝到s 里面,s 和 p 各自有自己的内存空间,并不是将s 和 p指向同一个内存,所以对s 的修改不会影响p ,对p 的修改也不会影响s
3.PChar --->字符数组 StrCopy(@a, p); StrCopy的原型如下 function StrCopy(Dest: PChar; const Source: PChar): PChar; StrCopy的说明如下(通过查看Delphi的API参考文档获得这些信息)
4.字符数组 ---> PChar PChar(@a);
5.字符串 ---> 字符数组 StrCopy(@a, PChar(s)); 这种方法是通过 PChar作为中转的
6.字符数组 ---> 字符串 s:= PChar(@a); 这种方法是通过 PChar作为中转 或者 s:= string(a); 这种方式类似于 将PChar转换为string 第二种方法是将数组a 指向的内存中的字符拷贝到s 里面,s 和 a 各自有自己的内存空间,并不是将s 和 a指向同一个内存,所以对s 的修改不会影响a ,对a 的修改也不会影响s
或者还可以使用下面的方法 s:= a; 但是第二、三种方法中涉及到的字符数组中是不是有 #0、初始化等问题,还需要继续探究,参考 下一篇博客 |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论