用delphi作数字图像处理,由于图像大小未知所以要动态分配
在c++中可以用
int* pImage;
...
X=..;
Y=..;
size=X*Y;
...
pImage=new int[size];
delphi中如何实现该功能?用动态数组吗?该方法是否会影响效率?
在c++中可以用
int* pImage;
...
X=..;
Y=..;
size=X*Y;
...
pImage=new int[size];
delphi中如何实现该功能?用动态数组吗?该方法是否会影响效率?
begin
getmem(pImage,sizeof(integer)*size);
pImage:Array of integer;SetLength(pImage,size);
另问
var
a:PByteArray;
begin
a:=AllocMem(2);
那么到底分配了多少内存?是2还是32767?
在delphi中PByteArray定义如下:
PByteArray = ^TByteArray;
TByteArray = array[0..32767] of Byte;
PInteger(integer(pImage)+i)^
那移动一个整型数应该是integer(pImage)+i*4啊?有点糊涂了请指教
delphi中好像不能向c++那样直接对指针进行加减来访问内存,Inc是改变指针变量自身的值来实现内存访问,所以首先还要保存首地址,否则首地址就丢失了。
如c++代码
int* p1;
int i,j;
p1=new int[100];
for(i=0;i<10;i++)
for(j=0;j<10;j++)
*(p1+i*10+j)=255;在delphi中用Inc要
var
p1,p2:PInteger;
i,j:integer;
begin
p1:=AllocMem(sizeof(integer)*100);
p2:=p1;
for i:=0 to 9 do
for j:=0 to 9 do
begin
Inc(p1,i*10+j);
p1^:=255;
p1:=p2;
end;
end.
小弟初学,各位大哥指点一下啊,是不是这样理解的?有更简便的方法实现上面的C++代码的功能吗?
a:PByteArray;
begin
a:=AllocMem(2);
那么到底分配了多少内存?是2还是32767?
在delphi中PByteArray定义如下:
PByteArray = ^TByteArray;
TByteArray = array[0..32767] of Byte;
这个问题有人知道么?到底怎么分配的啊?