gpt4 book ai didi

delphi - 如果它们只是用作表单控件的指针,我是否需要 'create'/初始化局部变量?

转载 作者:行者123 更新时间:2023-12-03 18:18:16 28 4
gpt4 key购买 nike

我有一个同步滚动框的简单示例,我在其中控制通过单选按钮同步哪一侧 - 同步左侧或右侧。编译时,我收到编译器消息:

[dcc32 Warning] Unit1.pas(51): W1036 Variable 'ScrlBox1' might not have been initialized

[dcc32 Warning] Unit1.pas(51): W1036 Variable 'ScrlBox2' might not have been initialized

这是一个简单的例子:

procedure TForm1.Button1Click(Sender: TObject);
var
ScrlBox1, ScrlBox2: TScrollBox;
begin

if radiobtn_SyncLeftSides.Checked then // Snyc Left side
begin
ScrlBox1 := ScrollBoxLeft1;
ScrlBox2 := ScrollBoxLeft2;
end
else if radiobtn_SyncrightSides.Checked then // Snyc Right side
begin
ScrlBox2 := ScrollBoxRight1;
ScrlBox1 := ScrollBoxRight2;
end;

// Sync scroll boxes
ScrlBox2.VertScrollBar.Position := ScrlBox1.VertScrollBar.Position;
ScrlBox2.HorzScrollBar.Position := ScrlBox1.HorzScrollBar.Position;

end;

这里有什么问题?

如果我在开头添加这个消息就消失了:

ScrlBox1:= TScrollBox.Create(nil);
ScrlBox2:= TScrollBox.Create(nil);

但我不认为创建滚动框变量是必要的,对吧?这些只是指向表单控件的变量指针。

最佳答案

如果 both radiobtn_SyncLeftSidesradiobtn_SyncrightSides 未选中,则您没有初始化 ScrlBox1ScrlBox2 变量,然后再使用它们。这就是编译器所提示的。

procedure TForm1.Button1Click(Sender: TObject);
var
ScrlBox1, ScrlBox2: TScrollBox;
begin
if radiobtn_SyncLeftSides.Checked then // Snyc Left side
begin
ScrlBox1 := ScrollBoxLeft1;
ScrlBox2 := ScrollBoxLeft2;
end
else if radiobtn_SyncrightSides.Checked then // Snyc Right side
begin
ScrlBox2 := ScrollBoxRight1;
ScrlBox1 := ScrollBoxRight2;
end else
begin
// NOT INITIALIZED HERE!!!!!
end;

// Sync scroll boxes
ScrlBox2.VertScrollBar.Position := ScrlBox1.VertScrollBar.Position;
ScrlBox2.HorzScrollBar.Position := ScrlBox1.HorzScrollBar.Position;
end;

如果你不想同步滚动,你应该退出程序:

procedure TForm1.Button1Click(Sender: TObject);
var
ScrlBox1, ScrlBox2: TScrollBox;
begin
if radiobtn_SyncLeftSides.Checked then // Snyc Left side
begin
ScrlBox1 := ScrollBoxLeft1;
ScrlBox2 := ScrollBoxLeft2;
end
else if radiobtn_SyncrightSides.Checked then // Snyc Right side
begin
ScrlBox2 := ScrollBoxRight1;
ScrlBox1 := ScrollBoxRight2;
end else
begin
Exit; // <-- HERE
end;

// Sync scroll boxes
ScrlBox2.VertScrollBar.Position := ScrlBox1.VertScrollBar.Position;
ScrlBox2.HorzScrollBar.Position := ScrlBox1.HorzScrollBar.Position;
end;

关于delphi - 如果它们只是用作表单控件的指针,我是否需要 'create'/初始化局部变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35639322/

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