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?

是的。