ラベル Lazarus の投稿を表示しています。 すべての投稿を表示
ラベル Lazarus の投稿を表示しています。 すべての投稿を表示

2008年12月20日土曜日

Win32APIをLazarusでコンパイルできるか(1)

Lazarusが快適に動くようになったので、ちょっと実験。

Win32APIを直接コールしまくってるソースをLazarusでコンパイルできるだろうか。。

Delphiプログラマーには有名なここのサイトこのソースをLazarusでコンパイル。



まあ、コンパイルできない。

ここを見ながらUses句を書き換える。。


LazarusとDelphiの主要なユニットの違い

* Windows->Interfaces, LCLIntf, LCLType, LCLProc, VCLGlobals, ...)に置き換えます。

LCLはWindowsに限ったものではないので、DelphiのWin32APIに直接アクセスするためのWindowsユニットは、インターフェースに抽象化されてLCLIntfユニットからアクセスするようになります。覚えておいて頂きたいことは、Lazarusはwin32をエミュレートするのではないので、多くの関数が欠落していたり、Win32と同等な働きをしない関数があります。これらの関数はDelphiとの互換性だけのためにあり、とにかく移植するだけのためにあります。LCLは多くの型を利用し、 LCLTypeやVCLGlobalsを必要とします。LCLProcは、FreeThenNilのようなDelphi5以降で導入された便利ないくつかの関数や、コントロールのばめに余分なアンパーサンドを取り除くDeleteAmpersandsのようなものを含みます。 Interfacesユニットは、適切なwidgetsetを初期化するための.lprファイルをインクルードするために必要です。

* Messages->LMessagesに置き換えます。

Delphiでは、TControlメッセージ(Win32イベントコールバックでは、WM_CALLBACK形式になっています。)とそれらに関連するメッセージはMessageユニットにあります。 LCLでは、これらの型やメッセージ、構造体などの定義は、LMessagesユニットにあります。大抵の場合、WM_MOUSEENTER は LM_MOUSEENTER に、TWMMouse は TLMMouseに、といった具合に、WMをLMに変更されています。


うむ。上手くいかない。

問題は僕自身がWin32APIをあまり理解していないことだなあ。。
VCLばっかり使ってるからな。。
まあいい勉強になると思うので、しばらく格闘してみようと思います。

2008年12月19日金曜日

Lazarusやたら遅い

Lazarusが動くようになり、書き慣れたDelphiの感覚でちょろっとコーディングしてみたのだが、なんかやたら遅い。

Formの上のコンポーネントにフォーカスを合わせるだけで0.5秒くらいかかる。遅すぎるよ。

この原因は何だろう。PCのスペックではないはず。

…っというところでもしやとおもい、ウィンドウのグラフィック効果をOffにしてみた。(下図参照)



これだった。Offにしたらまったく問題ないレベルまでスピードが上がりました。やったね。

Lazarus動きました

結局、synapticを使ってfpcのソースをインストールするのが一番早かったみたい。
Subvirsionをインストールしたり、コマンド打ってソースをダウンロードする必要はなかった。。

しかし、synapticって便利だね。クリック1回で依存関係のあるパッケージを全部まとめてインストールしてくれる。

Eclipseの導入もしたんだけど、Winに導入する時よりずっと簡単だった。本当に1クリックだからね。

2008年12月18日木曜日

Lazarus上手くコンパイルできない

文字化けする問題は上手くいかないみたいなので、下記のような簡単なシェルスクリプトを書いて起動することにした。これで英語版で起動が出来るっぽい。
#!/bin/sh

env LANG=C startlazarus
ただ、コンパイルができない。
/tmp/project1.lpr(1,1) Fatal: Can't find unit URIParser used by XMLRead
っていうエラーが出る。

どうもFreePascalのソースをダウンロードできていないと出るらしいが、ちゃんとダウンロードしてるはずなんだがなあ。

ここを参考にしたのだが。
今日はもう遅いから、また明日やってみよう。

Lazarusを入れてみた


最近、自宅でメインにいじっているUbuntuマシンに、Lazarusを入れてみた。

僕は仕事ではDelphiをメインに開発しているので、PascalのRADツールということで使えそうなので入れてみたんだけど、メニューが化けてんジャン。
あれー。これどうすりゃいいの。