1

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 ファイルに問題があります。私は手動でしなければなりませんでした:

  1. Lazarus ユニットを use に追加:

    {$IFDEF FPC} を使用 LCLIntf、LResources、{$ENDIF}

  2. 条件付きコンパイル Delphi フォーム {$R *.dfm}:

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

  3. 初期化コードに .lrs リソースを追加します。

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

4

3 に答える 3

2

メインフォーム ユニット (utest と呼ばれていると思います) の初期化セクションに {$I utest.lrs} が含まれていないのではないかと思います。.lrs は、delphi の lfm (dfm) から作成された lazarus リソース ファイルです。

于 2009-11-25T22:26:50.660 に答える
1

空のフォームは、現在のプロジェクトがアクティブであることを意味するツールからの変換 Delphi プロジェクトを使用したため、現在のプロジェクトのフォームです。
これを試して:

  • プロジェクト オプションで、現在のプロジェクトを閉じます。
  • プロジェクト ウィザードという名前の小さなメイン ウィンドウで、Delphi プロジェクトの変換オプションを使用します。
于 2015-01-11T14:05:40.447 に答える
0

申し訳ありませんが、正直な回答はできません。私が理解していることから、リソースファイルに問題があります。* .resであるデルファイでは、ラザロでどのように見えるかわかりません。resedit(http://www.resedit.net/ )などのプログラムを使用して、リソースファイルを開きます。試してみたところ、メインアイコンの投稿がある「フォルダ」アイコンが見つかりました。2つあると思います。その場合は、そのうちの1つを削除してください。

于 2009-11-25T10:56:33.460 に答える