Delphi 的 InputBox 是模态的吗?即它应该等待输入吗?
Is Delphi's InputBox modal? ie should it wait for input?
这是 Windows 10 中的错误还是只是卡住的键?
在我的 Delphi 2009 应用程序中的某个时刻,我通过放置在 while 循环中的简单输入框询问用户姓名,这样他们就不能将其留空。如果他们在不输入姓名的情况下取消或单击“确定”,则会显示一条验证消息,然后循环进行并再次询问。
我的一个用户(使用 windows 10,但我不知道是哪个版本)到了这个地步,应用程序挂在了这个循环中。他们将屏幕描述为 'shimmering' 并且屏幕截图显示输入框和验证消息都在屏幕上但几乎是透明的,表明它们都显示得非常快。我的应用程序保留的日志还显示它到达了循环之前的点,但没有进一步。这可由该用户在不同的日子重现。
为了以防万一,我检查了这些 SO 帖子 and here 但是我的这段代码太初级了,我看不出可能发生了什么。
有问题的代码是
function TFrmProcessIPaddressRemoteAccess_JHM.CheckAndProcessUserIPaddress( TheIPaddress: string): boolean;
const
EMPTY_STRING = '';
var
comment : string;
begin
<stuff to do with checking if IP address is already on server>
comment := EMPTY_STRING;
while comment = EMPTY_STRING do
begin
comment := inputbox('Adding IP address',
'Your IP address is not in the list of those allowed access. ' + slinebreak
+'MAMbase is about to add it.' + slinebreak + slinebreak
+'Please enter your name so that the IP address can be identified', EMPTY_STRING);
if comment = EMPTY_STRING then
showmessage('Please enter your name');
end;
<stuff to do with adding the IP address and the comment to the server>
end;
Is Delphi's InputBox
modal?
是的。
这是 Windows 10 中的错误还是只是卡住的键?
在我的 Delphi 2009 应用程序中的某个时刻,我通过放置在 while 循环中的简单输入框询问用户姓名,这样他们就不能将其留空。如果他们在不输入姓名的情况下取消或单击“确定”,则会显示一条验证消息,然后循环进行并再次询问。
我的一个用户(使用 windows 10,但我不知道是哪个版本)到了这个地步,应用程序挂在了这个循环中。他们将屏幕描述为 'shimmering' 并且屏幕截图显示输入框和验证消息都在屏幕上但几乎是透明的,表明它们都显示得非常快。我的应用程序保留的日志还显示它到达了循环之前的点,但没有进一步。这可由该用户在不同的日子重现。
为了以防万一,我检查了这些 SO 帖子
有问题的代码是
function TFrmProcessIPaddressRemoteAccess_JHM.CheckAndProcessUserIPaddress( TheIPaddress: string): boolean;
const
EMPTY_STRING = '';
var
comment : string;
begin
<stuff to do with checking if IP address is already on server>
comment := EMPTY_STRING;
while comment = EMPTY_STRING do
begin
comment := inputbox('Adding IP address',
'Your IP address is not in the list of those allowed access. ' + slinebreak
+'MAMbase is about to add it.' + slinebreak + slinebreak
+'Please enter your name so that the IP address can be identified', EMPTY_STRING);
if comment = EMPTY_STRING then
showmessage('Please enter your name');
end;
<stuff to do with adding the IP address and the comment to the server>
end;
Is Delphi's
InputBox
modal?
是的。