TO:Tiga(风中人..)
我的记忆中PASCAL是语法最严谨的啊。
我的记忆中PASCAL是语法最严谨的啊。
解决方案 »
- indy 10 UDP 发消息 中文乱码 求救
- 按僵哥的话说,成为猩猩了,散分
- 由于工作与delphi没有关系,出售一些原来买的delphi书
- dll问题,调用dll中的窗体
- [求助]矢量图形的局部放大
- 关于在Service Application中无法通过VFW或directshow调用并启用摄像头的问题,做了一星期了,提供意见即给分
- 获得DBGRID当前行的数据
- 在工程文件中如何退出程序?
- 大于窗体的image图片,要怎样利用滚动条等才能浏览到正常大小的图片?
- 关于‘Statement expected, but procedure found’错误
- 招聘程序员(熟练Delphi 和 Asp 编程)
- 请教关于TComWebResponse的问题(急)
pchar是一个连续的指针,而string的不是一个连续的指针。即:
s: string;
s[i]的值不是s[0]的地址加上i*sizeof(char)的地址内所存储的值而pchar是相等的这取决于String的类型,所以不能直接赋值,必须做出转换
s:=string(p);
而将s赋值给p则必须一个一个字符的复制
p := @s[1];在这个时候如果我要通过指针P得得结果就必须使用P^.或者用强制类型转换,是不是DELPHI有时在处理指针时有些混淆?
var
p : pchar;
s : string;
begin
p := '1234567';
s := p;//这里是充许的
caption := s;
p := s;//这里却是不行的。
end;
p := @s[1];
caption := p;
这样处理也可以得到正确的结果,真是有点不好理解。
p := @s[1];
caption := p^;
在这个例子中CAPTION 却只能得到一个字符'a',困惑。
p := @s[1];
caption := p^;
在这个例子中p^相当于一个p[0];
而 caption:=p;是delphi在内部处理了,对p进行了强制转换。因为caption相当于string;