Difference between revisions of "IDE tricks/ja"

From Lazarus wiki
Jump to navigationJump to search
m (Fixed syntax highlighting)
 
(19 intermediate revisions by 3 users not shown)
Line 1: Line 1:
 
{{IDE tricks}}
 
{{IDE tricks}}
 +
 +
{{Japanese Menu}}
  
 
= Open file で新しいファイルを作る =
 
= Open file で新しいファイルを作る =
Line 7: Line 9:
 
ただ、open file (Ctrl+o)で、存在しないファイルを指定します。たとえば、unit1.pasを指定すると、IDEはそのファイルを作るかどうか、尋ねます。
 
ただ、open file (Ctrl+o)で、存在しないファイルを指定します。たとえば、unit1.pasを指定すると、IDEはそのファイルを作るかどうか、尋ねます。
  
= IDE macros =
+
= 新規のユニット、フォーム =
  
[[IDE Macros in paths and filenames]]
+
0.9.27以降の場合、'New unit' (New form)のスピードボタンを右クリックし、生成するファイルタイプを指定することができます。
 +
IDEIntfか、project templates パッケージで指定することで、別のファイルタイプを登録することもできます。
  
= Getting the compiler command line parameters created by the IDE =
+
= IDE マクロ =
  
You can copy the parameters from Project -> Compiler Options -> Show Options. Here the paths are relative to the project directory. So in most cases you can copy them without adjusting.
+
[[IDE Macros in paths and filenames/ja]]
  
The parameters are also saved to the *.compiled file. For example if your project is called test1.lpi, then a test1.compiled is created. It is a simple text xml file, so you can just copy the options and adjust the paths to compile on another computer. The file is put into the same directory, where the executable is created.
+
= IDEが作成したコマンドラインパラメータをコンパイラで取得する方法 =
  
For packages this works the same.
+
Project -> Compiler Options -> Show Options でパラメータをコピーすることができます。ここに、プロジェクトディレクトリまでの相対パスがあります。多くの場合、調整することなく、これをコピーして使うことが出来ます。
  
This way, you can compile your (hopefully working and bugfree) code, outside of the lazarus IDE.
+
これらのパラメータは *.compiled ファイルにも保存されます。たとえば、test1.lpiというプロジェクトに対しては、test1.compiledというファイルが生成されます。これは、単純なテキストのxmlファイルになっていて、オプションやパスを簡単に他のコンピュータにコピーすることができます。
 +
このファイルは実行ファイルが作成されるのと同じディレクトリにおかれます。
  
= Closing all editor files except one =
+
パッケージも同じ仕組みになっています。
  
Under gtk (available for linux, macosx and freebsd) the source editor pages have a close button right to their page name. Press the Ctrl key while clicking on the button, closes all files except the clicked one.
+
このように、lazarus IDEがなくても、(願わくばバグがなく、動く)コードをコンパイルすることができます。
  
= Component palette =
+
= 1つを残して、他のエディタファイルをすべて閉じる方法 =
  
== Finding a component in the palette ==
+
gtk環境においては、ソースエディタページは、ページ名の右側に閉じるボタンがあります。Ctrlキーを押しながら、そのボタンを押すと、クリックしたもの以外の全ファイルが閉じます。
  
You know the component name, or part of it, but you don't know in which page it was? This tool finds it:
+
= コンポーネントパレット =
Right click on a component in the palette to open the popup menu. Choose 'Find component'. Type part of the name to filter the list.
 
  
== Open the package of a component in the palette ==
+
== パレットの中のコンポーネントを見つける ==
  
Right click on the component to open the popup menu, then choose open package.
+
どのページになるかしならくても、コンポーネントの名前を一部でも知っていれば、コンポーネントを見つけることができます。
 +
コンポーネントパレット上で右クリックをして、popupメニューを出します。'Find component'を選択します。
 +
名前の一部をタイプすると、リストがフィルタされます。
  
== Find the source declaration of a component in the palette ==
+
== パレットのコンポーネントのパッケージを開く ==
  
Right click on the component to open the popup menu, then choose open unit.
+
コンポーネントパレット上で右クリックをして、popupメニューを出します。'Open package'を選択します。
  
= My application freeze my linux desktop while debugging =
+
== パレットのコンポーネントの宣言を見つける ==
  
X (your desktop) can freeze, when an application that grabbed the mouse is stopped by gdb (the debugger).
+
コンポーネントパレット上で右クリックをして、popupメニューを出します。'Open unit'を選択します。
  
== Using a second X session ==
+
= リナックスで、デバッグ中にアプリケーションがフリーズします。 =
 +
 
 +
マウスを捕捉しているアプリケーションがgdb(デバッガ)によって停止させられると、X (デスクトップ) がフリーズすることがあります。
 +
 
 +
== 2番目のXセッションを使う ==
 +
 
 +
2番目のXを次のように開始することができます。
  
You can start a second X  by:
 
 
   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 &
  
== Using 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に接続します。
 +
 
 +
== アプリケーションをセカンドサーバでデバッグする ==
 +
 
 +
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をセットしています。
 +
これは、次のことを意味しています。
  
== Debug the application on the second server ==
+
* 実行時は、プログラムが.lfmファイルをロードして、本当のメソッド(Data+Code)が使われます。
In lazarus, in the run parameters for your project, check "use display" and enter
+
* 設計時は、本当のメソッドか、仮のメソッド(Data<>nilでCode=nil)のどちらかになっています。
  :1
+
* コンパイラはDelphiとの互換性を保つ形で、メソッド値を比較する機能をもっています。
  
Now your application will run on the second server, so when it is
+
次のようにしてはいけません:
being debugged, only the second server will freeze (but that won't
+
<syntaxhighlight lang=pascal>
affect you since you are debugging on the first).
+
if OnMyEvent<>nil then OnMyEvent(...); // wrong, because it checks Data too
 +
</syntaxhighlight>
  
= Compiling the IDE fast =
+
これは、DataとCodeの両方をチェックして、仮のメソッドを実行するかもしれません。結果的にnilにジャンプすることがあります。この場合、例外を生成しますので、たいした害はないかもしれませんが、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.
+
次のように、Assigned関数を使ってください。
* Put the Lazarus sources on a fast harddisk. Not on a slow network filesystem.
+
<syntaxhighlight lang=pascal>
* Install only needed packages.
+
if Assigned(OnMyEvent) then OnMyEvent(...); // Codeだけを比較するので正しい
* Set USESVN2REVISIONINC=0 to skip the update of the revision.inc.
+
</syntaxhighlight>
* 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
 
  
= Finding the source file of a IDE window =
+
また、次のようにしてもいけません。
 +
<syntaxhighlight lang=pascal>
 +
if OnMyEvent=NewValue then exit; // Codeだけを比較するので正しくない
 +
</syntaxhighlight>
  
* Open the IDE window.
+
なぜなら、Codeだけを比較するからです。次のようにしてください。
* Press Ctrl+Shift+F1 to open the help editor.
+
<syntaxhighlight lang=pascal>
* Remember the window classname. Close the window.
+
if CompareMem(@FOnMyEvent,@NewValue,SizeOf(TMethod)) then exit; // DataとCodeの両方をチェックするので正しい。
* Use 'Find In Files' to find the source file of the class.
+
</syntaxhighlight>

Latest revision as of 07:58, 17 February 2020

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

日本語版メニュー
メインページ - 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の両方をチェックするので正しい。