gpt4 book ai didi

delphi - 在WinXP和Win7下执行delphi代码的差异。为什么?

转载 作者:行者123 更新时间:2023-12-03 19:35:08 24 4
gpt4 key购买 nike

以下在Windows 7下用DelphiXE编译的delphi代码在Windows XP系统上的运行方式有所不同。
在一个表单中,我们有一个处理用户对VK_Fxx键的响应的过程。

procedure TfrmGA010.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
inherited;
KillKey := False;

if bvMF1Panel.Enabled then
begin
case Key of
VK_F3 : begin
...........
key := 0;
KillKey := True;
exit;
end;
VK_F4 : begin
............
key := 0;
KillKey := True;
exit;
end;
VK_F5 : begin
...........
key := 0;
KillKey := True;
exit;
end;
VK_F7 : begin
.......
key := 0;
KillKey := True;
exit;
end;
VK_F8 : begin
........
key := 0;
KillKey := True;
exit;
end;
VK_F11 : begin
if YesNoMsg('Delete?') then
begin
..........
**F5.Click;**
end;
exit;
end;
end;
end;


行代码F5.Click在Windows XP下执行,但在Windows 7下不执行,跳过了该行,程序继续进行下一步。有什么帮助吗?

最佳答案

基本诊断将涉及将可疑代码放入异常处理程序中的带有基本ShowMessage的tryexcept块中。

try
if YesNoMsg('Delete?') then
begin
..........
**F5.Click;**
end;
except
on E: Exception do
ShowMessage(E.ClassName + #13#10 + E.Message);
end;


如果您不喜欢ShowMessage,可以在表单上始终有一个TMemo,可以将文本附加到

Memo1.Lines.Add('2 records deleted successfully, about to click F5 :-) ');


另外,防御性编程会建议您在继续下一条指令之前检查上一行代码的结果(尤其是如果它是一个删除几个记录的子例程)。您应该将其变成一个返回至少2种不同可能结果的子例程,以及它自己的异常处理程序(至少这样,您可以在需要时在其中放置一个断点),而不是简单地将其包含在返回True的函数中在末尾。

另外,我将把F5.Click行移动到名为DeleteSomething的过程中,然后调用它。

如果其他所有方法均失败,则将生活日光从中注销。当调试器无法提供帮助时,记录日志是下一件好事。

关于delphi - 在WinXP和Win7下执行delphi代码的差异。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6408450/

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