德尔福。为啥要在 Windows 7 64 位上以发布模式编译程序。但是文本框不显示文本?
Posted
技术标签:
【中文标题】德尔福。为啥要在 Windows 7 64 位上以发布模式编译程序。但是文本框不显示文本?【英文标题】:Delphi. Why compile program in release mode on windows 7 64 bit. But textbox not show text?德尔福。为什么要在 Windows 7 64 位上以发布模式编译程序。但是文本框不显示文本? 【发布时间】:2014-10-31 09:05:56 【问题描述】:我在 windows 7 64bit 上使用 delphi xe7 和测试程序,并在调试模式下编译。我的程序可以运行。当我将调试模式更改为发布模式时。它有关于文本框不显示消息的问题。
TConnectionInfo = Record
NameConnection : String;
Server : String;
Database : String;
UserName : String;
Password : String;
Port : String;
ConvertZero : String;
End;
procedure TXMLFrm.AssignToTb1(index:Integer);
begin
tb1_position.Caption := 'SEQ # ' + IntToStr(index+1) + ' / = ' + IntToStr( Length( AConnection));
tb1_connection.Caption := 'Connection Name : '+ AConnection[index].NameConnection;
tb1_database.Caption := 'DataBase Name : '+ AConnection[index].Database;
tb1ed_Server.Text := AConnection[index].Server;
tb1ed_User.Text := AConnection[index].UserName;
tb1ed_Password.Text := AConnection[index].Password;
end;
我可以确保我的列表数组的值是 100%。
为什么以及如何解决问题?
谢谢
【问题讨论】:
什么信息没有显示?消息是如何设置到文本框的?请给我们一个MCVE
来复制问题
请查看我的代码。而且我没有在字体文本框中设置白色。
文本框工作正常。大概您没有在其中添加任何文本。有没有调试过?
在发布模式下构建您的程序,而不是编译。
debug 和 release 之间的明显区别是不同的 exe-path 和不同的配置文件(相同的名称,但也相同的内容?)。只需将配置文件从调试复制到发布路径并重新运行
【参考方案1】:
众所周知,文本框,即TEdit
控件可以很好地工作。这是一个基本的控制。如果他们不工作,那么有人会注意到。
如果您的文本框是空的,那是因为您没有在其中输入任何文本。 AConnection[index]
似乎包含一些空字符串。
考虑这行代码:
tb1_database.Caption := 'DataBase Name : '+ AConnection[index].Database;
您的屏幕截图显示标签显示'DataBase Name : '
,然后不再显示。控件怎么会显示Caption
的一部分而不是全部?毫无疑问,AConnection[index].Database
是空的。好吧,它可以包含非打印字符,如空格,但你明白我的意思。
我们无法弄清楚为什么会这样。您将需要进行一些调试。开始的地方是考虑为什么调试版本可能与发布版本不同。明显的区别是输出文件夹不同。您的程序是否从其可执行目录中读取配置信息?
如果您无法从那里解决问题,请尝试进行一些调试。使用跟踪调试(OutputDebugString
或类似的)或使用交互式调试器。您需要在发布配置中启用调试才能执行后者。请记住在完成调试后恢复该更改。
【讨论】:
请在我的帖子中查看我的图片,我可以确保 AConnection[index] 变量具有价值。请参阅标签 #1/2 你是如何确定的?截图表明你的信念是错误的。如果您将文本放入编辑控件中,它将显示出来。你为什么怀疑证据? David Hefferman 请参见图片中的标签 #1/2。它是显示数组的数量。 "“select” 没有损坏 - 在操作系统或编译器,甚至第三方产品或库中发现 bug 的情况很少见。该 bug 最有可能在应用程序中。 " (务实的程序员) 这不是真的。非托管类型的局部变量永远不会初始化。恕我直言,我上面的回答是正确的。以上是关于德尔福。为啥要在 Windows 7 64 位上以发布模式编译程序。但是文本框不显示文本?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Windows 7 64 位上安装 PyOpenSSL?
Windows 7 64 位上的 MercurialEclipse:不安装“Mercurial 的 Windows 二进制文件”
如何在 Windows 7 64 位上设置 MinGw? [关闭]
无法在 Windows 7 64 位上安装 WebdriverIO Cucumber JS 框架