我已将我的 2 个 GUI 应用程序从 Delphi 转换为 Lazarus。这两个应用程序都针对 Win32 平台、i386 和 GUI 进行编译。主窗体是使用 Lazarus 工具转换的,可以从 IDE 进行编辑。但是当我运行这样的应用程序时,主窗体并没有出现,只有空白窗体,没有任何控件。
我试图调试这个。它运行初始化部分中的所有代码,并运行来自 .lpr 项目的代码,但是在 CreateForm() 中发生了一些错误,因为它没有在主窗体 OnCreate 事件中运行代码。在事件日志中,我可以看到我写给它的所有文本,'<App.Run'
在我关闭这个空表单后出现。
.lpr 项目中的代码:
Application.Initialize;
AddToEventLogInfo('App.CreateForm');
Application.CreateForm(TfrmTst, frmTst);
AddToEventLogInfo('App.Run>');
Application.Run;
AddToEventLogInfo('<App.Run');
我检查了我是否能够从 Lazarus 创建简单的 GUI 应用程序,但是两个转换后的 GUI 应用程序都不能按预期工作。有什么问题?我错过了什么吗?也许拉撒路写的许多警告和提示之一很重要?
当我运行我的应用程序时,Lazarus 写道:
windres: warning: 14: "MAINICON": 1045: duplicate value
windres: warning: 16: 1: 1045: duplicate value
Project "Tst_fpc" successfully built. :)
编辑:
Lazarus 转换工具转换了 .dfm -> .lfm,但 .pas 文件存在一些问题。我不得不手动:
将 Lazarus 单位添加到用途:
使用 {$IFDEF FPC} LCLIntf,LResources,{$ENDIF}
条件编译 Delphi 形式 {$R *.dfm}:
{$IFNDEF FPC} {$R *.dfm} {$ENDIF}
在初始化代码中添加 .lrs 资源:
初始化 {$IFDEF FPC} {$i myunit.lrs} {$ENDIF}