正如上面的主题所示,我想知道在顺序处理数据时是否有一个干净有效的方法来处理函数参数中传递的指针的好例子。我所拥有的是这样的:
function myfunc(inptr: pointer; inptrsize: longint): boolean;
var
inproc: pointer;
i: integer;
begin
inproc := inptr;
for i := 1 to inptrsize do
begin
// do stuff against byte data here.
inc(longint(inproc), 1);
end;
end;
这个想法是,我希望它能够处理任何被推送的东西,而不是有限的数据,无论大小。
现在,在处理数据方面,我想出了几种成功的方法。
- 将 parm 指针分配给相同的临时指针,然后使用它们访问每条数据,递增它们以继续。这种方法是最快的,但看起来不是很干净,所有的指针增量都分布在整个代码中。(这就是我上面所说的)
- 将 parm 指针分配给表示大数组值的指针,然后使用标准表逻辑递增地处理它。干净得多,但比#1 慢了大约 500 毫秒。
是否有另一种方法可以以这种方式有效地处理指针,或者我是否缺少一些既干净又不会时间效率低的方法?