读帮助文档发现Delphi2009的新特性,象C语言一样用数组方式使用指针.
来源:互联网 发布:批八字算命软件 编辑:程序博客网 时间:2024/06/05 10:31
传统的Pascal指针和数组不是等价概念.不能像数组一样使用下标指针(编译器特殊处理的PChar类型除外).
而C语言中数组就是数组第一个元素的地址.和指针在一定程度上等价.指针所指向的内容也可以象数组一样用下标来访问.
虽然问题不大但是写起代码来就麻烦,而且不直观.
如下代码以往的Delphi只能这样写.
const
rw = 10;
rh = 10;
procedure SetRects(lpRect: PRect; dwCount : Cardinal);
var
I : Integer;
begin
for I := 0 to dwCount - 1 do
begin
lpRect^ := Rect(I*rw, 0, I*rw+rw, rh);
Inc(lpRect);
end;
end;
或者非要用下标访问的话就要变通一下.
const
rw = 10;
rh = 10;
procedure SetRects(lpRect: PRect; dwCount : Cardinal);
type
TRects = array[0..0]of TRect;
pRects = ^TRects;
var
I : Integer;
lpRects : pRects;
begin
lpRects := pRects(lpRect);
for I := 0 to dwCount - 1 do
begin
lpRects[I] := Rect(I*rw, 0, I*rw+rw, rh);
end;
end;
但是Delphi2009新增了编译开关,允许象C语言一样用下标直接访问数组所指向的元素.
{$POINTERMATH ON}
const
rw = 10;
rh = 10;
procedure SetRects(lpRect: PRect; dwCount : Cardinal);
var
I : Integer;
begin
for I := 0 to dwCount - 1 do
begin
lpRect[I] := Rect(I*rw, 0, I*rw+rw, rh);
end;
end;
呵呵方便多了.
不过要注意默认是{$POINTERMATH OFF}的.
- 读帮助文档发现Delphi2009的新特性,象C语言一样用数组方式使用指针.
- Delphi2009/C++Builder2009新特性
- Delphi2009新特性的介绍
- Delphi2009新特性视频
- C语言中数组指针的使用
- C语言特性(指针与数组)
- C语言特性(指针数组和指向指针变量的指针)
- C语言二级指针与指针数组的结合使用.
- C语言中关于指针,二维数组等的问题,一个有趣的发现
- C语言计算数组的元素和(帮助理解指针)
- 象使用数组一样使用一个数据表变量
- C语言数组与指针的问题注意,学了那么久的C语言居然都没有发现!
- C语言特性(指针)
- 用C++二级指针实现像C#一样的动态交错数组
- Delphi2009(Tiburon)新特性-匿名方法示例
- Delphi2009(Tiburon)新特性-泛型示例
- C语言 const指针的一些特性
- C语言用指针 二次指针和数组的差别
- Queue-C++template1
- 删除表空间的操作
- SharePoint如何模拟用户
- SQL常用语句和函数(转)
- 软件测试
- 读帮助文档发现Delphi2009的新特性,象C语言一样用数组方式使用指针.
- mkswap的挽救方法
- 软件开发过程反思——从需求分析到最后开发出来的软件
- 收藏一个sqlfront的SN
- 在这个地方好好呆着,用文字记录我的成长...
- Embedded Linux 技术与概念解析
- flash wmode参数详解
- Queue-C++template
- Linux文件查找命令find,xargs详述(ZT)