ウィキのコピーミラー

これは pascal.chat のウィキのミラーです。編集、履歴、ログインはそちらで行います。

IDE tricks/ja

한국어 · Deutsch · English · Français · Magyar · Slovenčina · Русский · 中文(中国) · 日本語

Open file で新しいファイルを作る

新しいファイルをつくって、保存することができます。または、1回の操作で新しいファイルをファイル名とファイルタイプを指定して、作成することもできます。

ただ、open file (Ctrl+o)で、存在しないファイルを指定します。たとえば、unit1.pasを指定すると、IDEはそのファイルを作るかどうか、尋ねます。

新規のユニット、フォーム

0.9.27以降の場合、'New unit' (New form)のスピードボタンを右クリックし、生成するファイルタイプを指定することができます。 IDEIntfか、project templates パッケージで指定することで、別のファイルタイプを登録することもできます。

IDE マクロ

IDE Macros in paths and filenames/ja

IDEが作成したコマンドラインパラメータをコンパイラで取得する方法

Project -> Compiler Options -> Show Options でパラメータをコピーすることができます。ここに、プロジェクトディレクトリまでの相対パスがあります。多くの場合、調整することなく、これをコピーして使うことが出来ます。

これらのパラメータは *.compiled ファイルにも保存されます。たとえば、test1.lpiというプロジェクトに対しては、test1.compiledというファイルが生成されます。これは、単純なテキストのxmlファイルになっていて、オプションやパスを簡単に他のコンピュータにコピーすることができます。 このファイルは実行ファイルが作成されるのと同じディレクトリにおかれます。

パッケージも同じ仕組みになっています。

このように、lazarus IDEがなくても、(願わくばバグがなく、動く)コードをコンパイルすることができます。

1つを残して、他のエディタファイルをすべて閉じる方法

gtk環境においては、ソースエディタページは、ページ名の右側に閉じるボタンがあります。Ctrlキーを押しながら、そのボタンを押すと、クリックしたもの以外の全ファイルが閉じます。

コンポーネントパレット

パレットの中のコンポーネントを見つける

どのページになるかしならくても、コンポーネントの名前を一部でも知っていれば、コンポーネントを見つけることができます。 コンポーネントパレット上で右クリックをして、popupメニューを出します。'Find component'を選択します。 名前の一部をタイプすると、リストがフィルタされます。

パレットのコンポーネントのパッケージを開く

コンポーネントパレット上で右クリックをして、popupメニューを出します。'Open package'を選択します。

パレットのコンポーネントの宣言を見つける

コンポーネントパレット上で右クリックをして、popupメニューを出します。'Open unit'を選択します。

リナックスで、デバッグ中にアプリケーションがフリーズします。

マウスを捕捉しているアプリケーションがgdb(デバッガ)によって停止させられると、X (デスクトップ) がフリーズすることがあります。

2番目のXセッションを使う

2番目のXを次のように開始することができます。

text
  X :1 &

Ctrl-Alt-F7 で、:0 へ切り替えることができます。同様に、 Ctrl-Alt-F8 で :1 へ切り替えることができます。

この後で、2番目のgnomeセッションを次のように開始します。

text
  gnome-session --display=:1 &

VNCを使う

tightvncserver/realvncserverによる VNCサーバ/クライアントをインストールすることで使うことも出来ます。

サーバを開始するには、

text
  vncserver :1

セッションも同時に開始されます。vncviewerを通してvncserverに接続します。

アプリケーションをセカンドサーバでデバッグする

Lazarusではプロジェクトのrun parameterで、"use display"にチェックを入れて :1を入力してください。

これでアプリケーションは2番目のXサーバで実行されます。アプリケーションがデバッグされて停止することがあっても、2番目のXサーバがフリーズするだけで、最初のXサーバーには影響することがないでしょう。

IDEのコンパイルを速くする

Lazarus自身を開発する作業をしていると、IDEを何度もリビルドすることがあります。 もし、次のような裏技をつかうと、沢山のメモリと最新のCPUがあれば、あっという間にIDEをコンパイルすることができます。

IDEウインドウのソースファイルを探す

オブジェクトインスペクタ: Events: Frames: 継承されたイベントにジャンプする

オブジェクトインスペクタは、ClassName.MethodNameとして継承されたイベントを表示します。 ダブルクリックすることで、新規のイベントを生成します。 コンボボックス上で、Ctrlとマウスクリックをすると、新規のイベントを生成せずに、継承されたメソッド本体にジャンプします。

オブジェクトインスペクタ上のイベント(メソッドプロパティ)

イベント(メソッドプロパティ)は、特別なプロパティで、アドレスポインタを必要とします。 これらは、設計時には存在しません。 LazarusはDelphi IDEと同じ方法を使っています。 すべてのメソッドの値は、TMethodでキャストできます。 TMethodは、Data(オブジェクトかクラスポインタ)と、Code(アドレスポインタ)から成っています。 通常、両方ともnilではありません。IDEはDataに特別なキー値を設定し、Codeにはnilをセットしています。 これは、次のことを意味しています。

次のようにしてはいけません:

pascal
if OnMyEvent<>nil then OnMyEvent(...); // wrong, because it checks Data too

これは、DataとCodeの両方をチェックして、仮のメソッドを実行するかもしれません。結果的にnilにジャンプすることがあります。この場合、例外を生成しますので、たいした害はないかもしれませんが、IDEはユーザーにエラーダイアログを表示します。

次のように、Assigned関数を使ってください。

pascal
if Assigned(OnMyEvent) then OnMyEvent(...); // Codeだけを比較するので正しい

また、次のようにしてもいけません。

pascal
if OnMyEvent=NewValue then exit; // Codeだけを比較するので正しくない

なぜなら、Codeだけを比較するからです。次のようにしてください。

pascal
if CompareMem(@FOnMyEvent,@NewValue,SizeOf(TMethod)) then exit; // DataとCodeの両方をチェックするので正しい。

From the Free Pascal wiki, page "IDE tricks/ja", as it stood on 2020-02-17 after a change by Trev, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.

第2版、最終更新:WikiArchive 。