Difference between revisions of "IDE tricks/ja"

From Lazarus wiki
m (2番目のXセッションを使う)
m (Fixed syntax highlighting)
 
(11 intermediate revisions by 3 users not shown)
Line 1: Line 1:
 
{{IDE tricks}}
 
{{IDE tricks}}
 +
 +
{{Japanese Menu}}
  
 
= Open file で新しいファイルを作る =
 
= Open file で新しいファイルを作る =
Line 6: Line 8:
  
 
ただ、open file (Ctrl+o)で、存在しないファイルを指定します。たとえば、unit1.pasを指定すると、IDEはそのファイルを作るかどうか、尋ねます。
 
ただ、open file (Ctrl+o)で、存在しないファイルを指定します。たとえば、unit1.pasを指定すると、IDEはそのファイルを作るかどうか、尋ねます。
 +
 +
= 新規のユニット、フォーム =
 +
 +
0.9.27以降の場合、'New unit' (New form)のスピードボタンを右クリックし、生成するファイルタイプを指定することができます。
 +
IDEIntfか、project templates パッケージで指定することで、別のファイルタイプを登録することもできます。
  
 
= IDE マクロ =
 
= IDE マクロ =
Line 44: Line 51:
 
= リナックスで、デバッグ中にアプリケーションがフリーズします。 =
 
= リナックスで、デバッグ中にアプリケーションがフリーズします。 =
  
X (your desktop) can freeze, when an application that grabbed the mouse is stopped by gdb (the debugger).
+
マウスを捕捉しているアプリケーションがgdb(デバッガ)によって停止させられると、X (デスクトップ) がフリーズすることがあります。
  
 
== 2番目のXセッションを使う ==
 
== 2番目のXセッションを使う ==
  
You can start a second X  by:
+
2番目のXを次のように開始することができます。
 +
 
 
   X :1 &
 
   X :1 &
with Ctrl-Alt-F7 you switch to :0 and with Ctrl-Alt-F8 you switch to :1
+
 
after that you can start a second gnome session by:
+
Ctrl-Alt-F7 で、:0 へ切り替えることができます。同様に、 Ctrl-Alt-F8 で :1 へ切り替えることができます。
 +
 
 +
この後で、2番目のgnomeセッションを次のように開始します。
 +
 
 
   gnome-session --display=:1 &
 
   gnome-session --display=:1 &
  
 
== VNCを使う ==
 
== VNCを使う ==
  
You can use vncserver/client by installing
+
tightvncserver/realvncserverによる
tightvncserver/realvncserver
+
VNCサーバ/クライアントをインストールすることで使うことも出来ます。
Start the server with:
+
 
 +
サーバを開始するには、
 
   vncserver :1
 
   vncserver :1
  
AFAIK, a session is also started. You can connect to the vncserver with vncviewer.
+
セッションも同時に開始されます。vncviewerを通してvncserverに接続します。
  
 
== アプリケーションをセカンドサーバでデバッグする ==
 
== アプリケーションをセカンドサーバでデバッグする ==
In lazarus, in the run parameters for your project, check "use display" and enter
 
  :1
 
  
Now your application will run on the second server, so when it is
+
Lazarusではプロジェクトのrun parameterで、"use display"にチェックを入れて  :1を入力してください。
being debugged, only the second server will freeze (but that won't
+
 
affect you since you are debugging on the first).
+
これでアプリケーションは2番目のXサーバで実行されます。アプリケーションがデバッグされて停止することがあっても、2番目のXサーバがフリーズするだけで、最初のXサーバーには影響することがないでしょう。
  
 
= IDEのコンパイルを速くする =
 
= IDEのコンパイルを速くする =
  
Working on Lazarus itself needs rebuilding the IDE many times. If you use the following tricks and have enough memory and a recent cpu, you should be able to recompile the IDE in a few seconds.
+
Lazarus自身を開発する作業をしていると、IDEを何度もリビルドすることがあります。
* Put the Lazarus sources on a fast harddisk. Not on a slow network filesystem.
+
もし、次のような裏技をつかうと、沢山のメモリと最新のCPUがあれば、あっという間にIDEをコンパイルすることができます。
* Install only needed packages.
+
 
* Set USESVN2REVISIONINC=0 to skip the update of the revision.inc.
+
* Lazarusのソースは高速なハードディスクにおいてください。ネットワーク上におくと遅くなります。
* Compile only parts. If the packager registration is recompiled, then all installed packages are recompiled too. If the IDEIntf is recompiled, then all installed design-time packages are recompiled.
+
* 必要なパッケージのみインストールしてください。
* Under windows: use the internal linker
+
* USESVN2REVISIONINC=0 にして、revision.incのアップデートをスキップしてください。
 +
* 部分だけをコンパイルしてください。パッケージ登録が再コンパイルされると、全てのインストールされているパッケージも再コンパイルされます。IDEIntfが再コンパイルされると、すべての設計時パッケージが再コンパイルされます。
  
 
= IDEウインドウのソースファイルを探す  =
 
= IDEウインドウのソースファイルを探す  =
  
* Open the IDE window.
+
* IDE ウインドウを開きます.
* Press Ctrl+Shift+F1 to open the help editor.
+
* Ctrl+Shift+F1を押してヘルプエディタを開きます。
* Remember the window classname. Close the window.
+
* ウインドウのクラス名を覚えて、閉じます。
* Use 'Find In Files' to find the source file of the class.
+
* 'Find In Files'を使って、そのクラスのソースファイルを探します。
 +
 
 +
= オブジェクトインスペクタ: Events: Frames: 継承されたイベントにジャンプする =
 +
 
 +
オブジェクトインスペクタは、''ClassName.MethodName''として継承されたイベントを表示します。
 +
ダブルクリックすることで、新規のイベントを生成します。
 +
コンボボックス上で、Ctrlとマウスクリックをすると、新規のイベントを生成せずに、継承されたメソッド本体にジャンプします。
 +
 
 +
= オブジェクトインスペクタ上のイベント(メソッドプロパティ) =
 +
 
 +
イベント(メソッドプロパティ)は、特別なプロパティで、アドレスポインタを必要とします。
 +
これらは、設計時には存在しません。
 +
LazarusはDelphi IDEと同じ方法を使っています。
 +
すべてのメソッドの値は、TMethodでキャストできます。
 +
TMethodは、''Data''(オブジェクトかクラスポインタ)と、''Code''(アドレスポインタ)から成っています。
 +
通常、両方ともnilではありません。IDEは''Data''に特別なキー値を設定し、Codeにはnilをセットしています。
 +
これは、次のことを意味しています。
 +
 
 +
* 実行時は、プログラムが.lfmファイルをロードして、本当のメソッド(Data+Code)が使われます。
 +
* 設計時は、本当のメソッドか、仮のメソッド(Data<>nilでCode=nil)のどちらかになっています。
 +
* コンパイラはDelphiとの互換性を保つ形で、メソッド値を比較する機能をもっています。
 +
 
 +
次のようにしてはいけません:
 +
<syntaxhighlight lang=pascal>
 +
if OnMyEvent<>nil then OnMyEvent(...); // wrong, because it checks Data too
 +
</syntaxhighlight>
 +
 
 +
これは、DataとCodeの両方をチェックして、仮のメソッドを実行するかもしれません。結果的にnilにジャンプすることがあります。この場合、例外を生成しますので、たいした害はないかもしれませんが、IDEはユーザーにエラーダイアログを表示します。
 +
 
 +
次のように、Assigned関数を使ってください。
 +
<syntaxhighlight lang=pascal>
 +
if Assigned(OnMyEvent) then OnMyEvent(...); // Codeだけを比較するので正しい
 +
</syntaxhighlight>
 +
 
 +
また、次のようにしてもいけません。
 +
<syntaxhighlight lang=pascal>
 +
if OnMyEvent=NewValue then exit; // Codeだけを比較するので正しくない
 +
</syntaxhighlight>
 +
 
 +
なぜなら、Codeだけを比較するからです。次のようにしてください。
 +
<syntaxhighlight lang=pascal>
 +
if CompareMem(@FOnMyEvent,@NewValue,SizeOf(TMethod)) then exit; // DataとCodeの両方をチェックするので正しい。
 +
</syntaxhighlight>

Latest revision as of 08:58, 17 February 2020

Deutsch (de) English (en) français (fr) magyar (hu) 日本語 (ja) 한국어 (ko) русский (ru) slovenčina (sk)

日本語版メニュー
メインページ - Lazarus Documentation日本語版 - 翻訳ノート - 日本語障害情報

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を次のように開始することができます。

  X :1 &

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

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

  gnome-session --display=:1 &

VNCを使う

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

サーバを開始するには、

  vncserver :1

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

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

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

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

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

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

  • Lazarusのソースは高速なハードディスクにおいてください。ネットワーク上におくと遅くなります。
  • 必要なパッケージのみインストールしてください。
  • USESVN2REVISIONINC=0 にして、revision.incのアップデートをスキップしてください。
  • 部分だけをコンパイルしてください。パッケージ登録が再コンパイルされると、全てのインストールされているパッケージも再コンパイルされます。IDEIntfが再コンパイルされると、すべての設計時パッケージが再コンパイルされます。

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

  • IDE ウインドウを開きます.
  • Ctrl+Shift+F1を押してヘルプエディタを開きます。
  • ウインドウのクラス名を覚えて、閉じます。
  • 'Find In Files'を使って、そのクラスのソースファイルを探します。

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

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

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

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

  • 実行時は、プログラムが.lfmファイルをロードして、本当のメソッド(Data+Code)が使われます。
  • 設計時は、本当のメソッドか、仮のメソッド(Data<>nilでCode=nil)のどちらかになっています。
  • コンパイラはDelphiとの互換性を保つ形で、メソッド値を比較する機能をもっています。

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

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

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

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

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

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

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

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

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