2012-04-29 78 views
0

我在vb.net中有这个示例我需要在德尔福相同的输出。它基本上是一个指针列表,每个指针应该指向一个字节数组(一个图像)。德尔福的指针字节列表

 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 

我尝试了许多不同的方法来转换它,没有这似乎工作。

回答

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; 
+0

PointerArray [I]:= GetMem函数(ImageList中[I] .Size); 给我'无效类型' – Ezi

+0

@Ezi好吧,我猜ImageList [i]是什么。我完全不知道。你没有告诉我们。你问了如何创建一个指针数组。如果你想提供更多的细节,那么我可以帮助更多。这是非常基本的东西,但你真的需要学习如何自己理解编译器错误。我想象'Size'是图像的像素尺寸。无论如何,查看上面的代码作为大纲。填写细节真的很重要。 –

+0

对不起,我没有说。 ImageList是一个包含记录列表的TStream,每个记录都有一个'字节数组' – Ezi