gpt4 book ai didi

delphi - 是否可以在 Synchronize 内部使用简单的循环?

转载 作者:行者123 更新时间:2023-12-03 15:09:13 27 4
gpt4 key购买 nike

procedure TGridThread.Execute;
var
i: integer;
iIEBitmap: TIEBitmap;
iWidth: integer;
iHeight: integer;
iImageCount: integer;
iArrayOfBitmaps: array of TBitmap;
begin
inherited;
{ Free the thread onTerminate }
FreeOnTerminate := True;
if not Terminated then
begin
if not Terminated then
begin
Synchronize(
procedure
begin
iIEBitmap := TIEBitmap.Create(Form1.ImageEnView1.IEBitmap);
iWidth := Form1.ImageEnMView1.ImageOriginalWidth[0];
iHeight := (Form1.ImageEnMView1.ImageOriginalHeight[0] + iSpaceBetweenImages) *
Form1.ImageEnMView1.ImageCount;
iImageCount := Form1.ImageEnMView1.ImageCount;
end);

SetLength(iArrayOfBitmaps, iImageCount);

Synchronize(
procedure
begin
for i := 0 to iImageCount - 1 do // [DCC Error] Unit1.pas(334): E1019 For loop control variable must be simple local variable
begin
iArrayOfBitmaps[i] := Form1.ImageEnMView1.GetBitmap(i);
{ Free the bitmap }
Form1.ImageEnMView1.ReleaseBitmap(0);
end;
end);

最佳答案

您只需为循环计数器声明一个局部变量:

Synchronize(
procedure
var
i: Integer;
begin
for i := 0 to iImageCount - 1 do
begin
iArrayOfBitmaps[i] := Form1.ImageEnMView1.GetBitmap(i);
Form1.ImageEnMView1.ReleaseBitmap(0);
end;
end
);

循环变量必须是循环出现的过程的局部变量。在您的代码中,您已在不同的过程中将该变量声明为本地变量。因此会出现编译错误。

关于delphi - 是否可以在 Synchronize 内部使用简单的循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17622203/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com