德尔福。为什么在Windows 7 64位上以发布模式编译程序。但文本框不显示文字?

时间:2014-10-31 09:05:57

标签: delphi debugging textbox release

我在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%。

为什么以及如何解决问题?

感谢

enter image description here

1 个答案:

答案 0 :(得分:1)

文本框,即TEdit控件,已知效果很好。这是一个基本的控制。如果他们没有工作,那么有人会注意到。

如果您的文本框为空,那是因为您没有将任何文本放入其中。似乎AConnection[index]包含一些空字符串。

考虑这行代码:

tb1_database.Caption := 'DataBase Name   : '+  AConnection[index].Database;

您的屏幕截图显示标签显示'DataBase Name : ',然后不再显示。控件如何显示Caption的一部分而不是全部?毫无疑问,AConnection[index].Database是空的。好吧,它可能包含非打印字符,如空格,但你明白我的意思。

我们无法弄清楚为什么会这样。您需要进行一些调试。开始的地方是考虑为什么调试版本可能与发布版本不同。明显的区别是输出文件夹不同。您的程序是否从其可执行文件目录中读取配置信息?

如果你不能从那里解决它,那么尝试一些调试。使用跟踪调试(OutputDebugString或类似)或使用交互式调试器。您需要在发布配置中启用调试才能执行后者。记得在完成调试后还原该更改。