0

このサンプルは vb.net にあります。Delphi で同じ出力が必要です。基本的には、各ポインターがバイト配列 (画像) を指すポインターのリストです。

        Dim pPointerArray As IntPtr() = New IntPtr(count) {}
        Dim i = 0
        For Each r In ImageList
            pPointerArray(i) = Marshal.AllocHGlobal(r.Images.Length)
            Marshal.Copy(r.Images, 0, pPointerArray(i), r.Images.Length - 1)
            i += 1
        Next

私はそれを変換するためにさまざまな方法を試しましたが、どれもうまくいかないようです。

4

1 に答える 1

1

私は何ImageListがわからない。その名前の WinForms コントロールではないようです。その部分を行う方法を知っていると仮定すると、次のMarshal.Copyようなものが必要になります。

var
  PointerArray: array of Pointer;
.....
SetLength(PointerArray, ImageList.Count);
for i := 0 to ImageList.Count-1 do
begin
  PointerArray[i] := GetMem(ImageList[i].Size);
  // copy contents of i-th image to PointerArray[i]
end;
于 2012-04-29T17:24:20.867 に答える