問題タブ [fpc]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
winapi - Win32 ミューテックスが待機していません
プロセス間通信を実装するアプリケーションを作成しています。この目的のために、私は共有バッファを設定しました。これは正常に機能しているようです。ここで、データ生成アプリケーション (c++ で記述) がデータ受信アプリケーション (freepascal/lazarus で記述) にいつデータを読み取る必要があるかを伝える方法が必要です。
この目的のためにミューテックスを使用しようとしていました。Windows API プログラミングの経験はあまりありません。
したがって、私の問題は、以下の FreePascal コードでは、ミューテックスが待機しないことです。TMutex.Wait() 関数を呼び出すことができます。エラーなどは返されませんが、単に待機しません。
コンストラクタ TMutex.Create(sName: AnsiString);
sNameを開始し
ます:= 'Local\Mutex'+sName;
hMutex := CreateMutexA(
nil, // デフォルト アクセス
True, // 最初は所有されていない
PChar(sName)); // 名前付きミューテックス
hMutex = 0 の場合は、例外の発生を
開始します。Create
('mutex の作成に失敗しました');
終わり;
終わり;
デストラクタ TMutex.Destroy; CloseHandle(hMutex)
を開始します。 終わり; 手順 TMutex.Wait; begin if (WaitForSingleObject(hMutex, INFINITE) <> 0) then ShowMessage('debug: 何かが返されるのを待つ'); 終わり;
手順 TMutex.Post; ReleaseMutex(hMutex)
を開始します。 終わり;
delphi - Delphi から Lazarus に変換された GUI アプリの空のメイン フォーム
2 つの GUI アプリを Delphi から Lazarus に変換しました。どちらのアプリも、Win32 プラットフォーム、i386、および GUI でコンパイルされます。メイン フォームは Lazarus ツールを使用して変換され、IDE から編集できます。しかし、そのようなアプリケーションを実行すると、メインフォームは表示されず、コントロールのない空白のフォームのみが表示されます。
これをデバッグしようとしました。すべてのコードを初期化セクションで実行し、.lpr プロジェクトからコードを実行しますが、メイン フォームの OnCreate イベントでコードを実行しないため、CreateForm() で問題が発生します。'<App.Run'
イベント ログでは、この空のフォームを閉じた後に表示されるすべてのテキストを確認できます。
.lpr プロジェクトのコード:
Lazarus から単純な GUI アプリを作成できることを確認しましたが、変換された GUI アプリは両方とも期待どおりに動作しません。何が間違っている可能性がありますか?私は何かを逃しましたか?ラザロが書いた多くの警告やヒントの 1 つが重要なのではないでしょうか?
アプリを実行すると、Lazarus は次のように書いています。
編集:
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}
user-interface - FPCを使用したGUIのみ
Lazarus をインストールした FPC (Pascal) だけを使用して、Delphi 言語 (Object Pascsl) を使用せずに GUI アプリケーション (32 ビット) を開発する方法を知りたいです。ありがとう。
flash - DelphiまたはFreePascalのAMFライブラリを誰かに教えてもらえますか?
通常の容疑者(Google Code、Source Forge、SO)で簡単な検索を行いましたが、AMFまたはFlash/Flexリモート処理のプロジェクトのヒントは見つかりませんでした。
この種のプロジェクトに出くわした人はいますか?
freepascal - fpmake.pp は何を使用し、現在も使用されていますか?
私はそれを一度使用しましたが、いくつかの適切な例/ドキュメントを入手するのが難しいことがわかったため、あまりうまくいきませんでしたが、環境を完成させるための良い方法でした.
それはまだ標準ですか、それとも放棄されたままですか?
初心者向けのハウツーと上級者向けのハウツーはどこにありますか?
ありがとう。
makefile - fpcmake と Makefile.fpc のトレーニングはどこで受けられますか?
私はこれらのどれも使用したことがありませんが、Free Pascal のメイン サイトにリストされているので、実際に使用したいと思います。
- 初心者向けガイド
- 私が成長するのを助けるための高度なガイド
これはすべて、まだ使用/標準の場合に備えています。
ありがとう
delphi - Lazarus アプリのスプラッシュ スクリーンの問題
Delphi アプリケーションを FPC/Lazarus に移植していますが、このアプリケーションはスプラッシュ スクリーンに情報を表示します。ユニットに初期化セクションがある場合、この初期化セクションは次のようなものを呼び出します。
これは Delphi で動作しますが、FPC/Lazarus を使用してこれをコンパイルすると、スプラッシュ スクリーンでフォームを作成すると例外が発生しました。
Application.Initialize;
が呼び出された後にフォームを作成できることがわかったので、私の回避策は、 ScreenInfo.Initialized=true
. 機能しますが、すべての情報が表示されるわけではありません。ユニット初期化セクションの前にスプラッシュ フォームを表示する方法はありますApplication.Initialize;
か?
delphi - Lazarus/FPC での WM_COMMAND の問題
MainMenu のフォームがあり、ユーザーがメニューからコマンド項目を選択したときにインターセプトしたい。これは Delphi で機能します。
MainMenu にいくつかの項目を追加し、メニューからそれらの項目を選択すると、Memo1 が次のように入力されます。
このアプリケーションを FPC/Lazarus に移植しましたが、WM_COMMAND ハンドラが呼び出されていないようです! Delphi でブレークポイントを設定するとTForm1.WMCommand
、メイン フォームが表示される前に Delphi が何度も停止しました。Lazarus は、このブレークポイントで停止することはありませんでした。Lazarus の WM_COMMAND で何かが壊れていると思いますが、何かわからないことがあります。何か案が?
WinXP で FPC 2.2.4 を搭載した Lazarus 0.9.28.2 ベータ版を使用しています。
編集:
Winspector を使用して、MainMenu が WM_COMMAND を生成することを確認しました。
Lazarus/FPC の WM_COMMAND メッセージ メソッドの処理にバグがあると思い、報告しました: http://bugs.freepascal.org/view.php?id=15521
optimization - WPO (プログラム全体の最適化) でプログラムのサイズが改善されないのはなぜですか? (FPC2.4.0)
私はWinXPにFPC 2.4.0を使用しています(公式ページのバイナリ)。これも同じバージョンで試しましたが、コンプのソースからコンパイルしました。私はこのようなものを置きます:
I:\pascal\fpc-2.4.0.source\fpc-2.4.0\compiler\ppc386 -FWserver-1.wpo -OWsymbolliveness -CX -XX -Xs- -al -Os -oServer1.o Server
I:\pascal\fpc-2.4.0.source\fpc-2.4.0\compiler\ppc386 -FWserver-2.wpo -OWsymbolliveness -Fwserver-1.wpo -Owsymbolliveness -CX -XX -Xs- -al -Os -oServer2.o Server
..(up to 100 times)
ただし、常に同じ .wpo ファイルと同じ .o サイズ (.s、アセンブリ ファイルは断続的に変更されます)
また、使用されていない変数がまだ生きていることも(コンパイラメッセージを通じて)わかりません。-OWall -owall も試してみました。何が間違っていますか?