gpt4 book ai didi

delphi - GUI 应用程序中的空主窗体从 Delphi 转换为 Lazarus

转载 作者:行者123 更新时间:2023-12-02 18:59:20 34 4
gpt4 key购买 nike

我已将 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 文件存在一些问题。我必须手动:

  1. 将 Lazarus 单位添加到用途中:

    用途 {$IFDEF FPC} LCLIntf、L 资源、 {$ENDIF}

  2. 条件编译Delphi形式{$R *.dfm}:

    {$IFNDEF FPC}{$R *.dfm}{$ENDIF}

  3. 在初始化代码中添加.lrs资源:

    初始化 {$IFDEF FPC} {$i myunit.lrs} {$ENDIF}

最佳答案

我怀疑主窗体单元(我假设它称为 utest)在其初始化部分中没有 {$I utest.lrs}。 .lrs 是 lazarus 资源文件,由 delphi 中的 lfm (dfm) 创建。

关于delphi - GUI 应用程序中的空主窗体从 Delphi 转换为 Lazarus,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1795854/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com