编译指令 PointerMath 默认 off; 打开后, 可以像数组一样地读写指针中的系列数据, 非常方便!
//测试整数指针procedure TForm1.Button1Click(Sender: TObject);var p: PInteger; i: Integer;begin{$POINTERMATH ON} //写入 p := GetMemory(SizeOf(Integer) * 4); p[0] := 11; p[1] := 22; p[2] := 33; p[3] := 44; //读取 ShowMessageFmt('%d, %d, %d, %d', [p[0], p[1], p[2], p[3]]);{$POINTERMATH OFF} //之前有时会这么麻烦 ShowMessageFmt('%d, %d, %d, %d', [p^, PInteger(Integer(p) + SizeOf(Integer) * 1)^, PInteger(I���͵�,ú����nteger(p) + SizeOf(Integer) * 2)^, PInteger(Integer(p) + SizeOf(Integer) * 3)^]); FreeMemory(p);end;//测试结构体指针procedure TForm1.Button2Click(Sender: TObject);type TMyRec = record Name: string[12]; Age: Word; end;var p: ^TMyRec;begin{$POINTERMATH ON} p := GetMemory(SizeOf(TMyRec) * 2); //写入 p[0].Name := '张三'; p[0].Age := 11; p[1].Name := '李四'; p[1].Age := 22; //读取 ShowMessageFmt('%s, %d', [p[0].Name, p[0].Age]); ShowMessageFmt('%s, %d', [p[1].Name, p[1].Age]); FreeMemory(p);{$POINTERMATH OFF}end;