0

そのような宣言はどのようにデルファイに変換されるべきですか?

void method (void *pixels);

また、その変数を事前に割り当てる必要があるという情報もあります。

誰かが私にヒントを与えることができますか?

4

2 に答える 2

3

元の宣言形式に固執する必要がある場合(たとえば、C DLLヘッダーを変換する場合など)、変換は次のようになります。

procedure method(pixels: Pointer);

CヘッダーをDelphiに変換する方法の詳細については、こちらをご覧ください。

一方、メソッドまたはクラス全体を変換する場合は、よりDelphiに似たコードに適合させることをお勧めします。「ピクセル」が何であるかわからないので、どれが最良の選択肢であるかはほとんど推測できません。

大まかな推測では、各ピクセルに関する情報(位置、色、アルファチャネル?)を含むマトリックスであれば、オブジェクトリストを使用してそのような構造を簡単に処理したり、独自のクラスを作成して処理したりできます。

HTH

于 2012-07-02T08:52:37.057 に答える
2

ピクセルがピクセルの配列を指していると仮定すると、次のことができます。

procedure method(var pixels); cdecl;

ピクセルを型指定されていないパラメーターとして渡した場合、それは暗黙的にポインターとして渡されます。これはC宣言でも行われるため、変換は元のパラメーターと完全に一致します。型指定されていないポインターを使用すると、好きな場所にポインターをキャストしたり、そのアドレスを使用してポインターを取得したりできます。ピクセルの構造を知っている限り、それはより便利かもしれません:

ピクセルがバイトの固定サイズ配列であると仮定します。ここで、各ビットはピクセルです。

type
  TPixels = array[0..7] of Byte;

const
  Grey: TPixels = ($55, $AA, $55, $AA, $55, $AA, $55, $AA);

procedure method(var pixels); cdecl;
begin
  Move(Grey, pixels, Sizeof(Grey));
  // ...
  TPixels(pixels)[3] := $FF;
  // ... 
于 2012-07-02T11:41:10.193 に答える