上記のトピックが示すように、データを順次処理するときに関数 parms で渡されたポインターを処理するためのクリーンで効率的な方法の良い例があるかどうか疑問に思っています。私が持っているのは次のようなものです:
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 ミリ秒遅くなります。
この方法でポインタの処理を効率的に処理する別の方法はありますか、それともクリーンで時間効率の悪い方法ではない方法がありますか?