Delphi 7 动态数组长度

时间:2021-04-15 16:26:11

标签: delphi-7 dynamic-arrays

我使用动态数组来存储密钥、像素和加密像素。程序在第一次加密时运行流畅,但在更改图片时,程序崩溃“Project2.exe 模块中地址 00401BF1 处的访问冲突”。写入地址 00000001'。

我认为这是因为我将 setLength 过程放在加载图片按钮中。这是我加载图片后使用的代码。注意:还有真彩色图片的代码,我需要将长度设置为 setLength(image1.picture.height * image1.picture.width * 3) 的 3 倍。但这是加载图片按钮中灰度图片的简单一种

SetLength(ppixels, image1.picture.height * image1.picture.width);
k := 0;
for i := 0 to Image1.picture.height-1 do
begin
  PC := Image1.Picture.Bitmap.ScanLine[i];
  for j := 0 to Image1.picture.width-1 do
  begin
    ppixels[k] := PC[j];
    k := k + 1;
  end;
end;

我试图用

操纵它
if(Length(ppixels)<0) then setLength(ppixels, image1.picture.height * image1.picture.width);

这仅适用于像素较少的图片,这不是我正在寻找的解决方案。还尝试将长度设置为非常大,例如 setLength(ppixels,100000000);,但它给了我错误“内存不足”。也尝试过 setLength(ppixels,0)ppixels := nilFinalize(ppixels),但这并没有解决问题并且仍然给出错误。

帮我解决这个问题,大师。非常感谢~

1 个答案:

答案 0 :(得分:1)

我不知道如何动态设置长度,我目前最好的解决方案是让它有很大的静态尺寸,即 75 百万。所以程序只能加密小于 75m 像素的图片(彩色图片为 5000 x 5000 像素)。请添加任何建议或解决方案的答案,谢谢!

相关问题