德尔福。为啥要在 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 框架

在Windows 7 64位上启动JBoss 7.1.1时出错

如何在 Windows XP 中写入 I/O 端口? (德尔福7)