2 つの GUI アプリを Delphi から Lazarus に変換しました。どちらのアプリも、Win32 プラットフォーム、i386、および GUI でコンパイルされます。メイン フォームは Lazarus ツールを使用して変換され、IDE から編集できます。しかし、そのようなアプリケーションを実行すると、メインフォームは表示されず、コントロールのない空白のフォームのみが表示されます。
これをデバッグしようとしました。すべてのコードを初期化セクションで実行し、.lpr プロジェクトからコードを実行しますが、メイン フォームの OnCreate イベントでコードを実行しないため、CreateForm() で問題が発生します。'<App.Run'
イベント ログでは、この空のフォームを閉じた後に表示されるすべてのテキストを確認できます。
.lpr プロジェクトのコード:
Application.Initialize;
AddToEventLogInfo('App.CreateForm');
Application.CreateForm(TfrmTst, frmTst);
AddToEventLogInfo('App.Run>');
Application.Run;
AddToEventLogInfo('<App.Run');
Lazarus から単純な GUI アプリを作成できることを確認しましたが、変換された GUI アプリは両方とも期待どおりに動作しません。何が間違っている可能性がありますか?私は何かを逃しましたか?ラザロが書いた多くの警告やヒントの 1 つが重要なのではないでしょうか?
アプリを実行すると、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 ユニットを use に追加:
{$IFDEF FPC} を使用 LCLIntf、LResources、{$ENDIF}
条件付きコンパイル Delphi フォーム {$R *.dfm}:
{$IFNDEF FPC} {$R *.dfm} {$ENDIF}
初期化コードに .lrs リソースを追加します。
初期化 {$IFDEF FPC} {$i myunit.lrs} {$ENDIF}