2012/09/01

ついにLazarus1.0がリリースされたようだ

http://www.lazarus.freepascal.org/index.php/topic,18019.html

日本では話題にもなってない感じで寂しいね。

| | コメント (0) | トラックバック (0)

2010/01/08

Lazarusアプリケーション

 いつ頃からか、Lazarusで作成したフォーム付きWindowsアプリケーションを実行すると、フォームの背後にDOSプロンプトが表示されるようになっていました。
 原因は、【コンパイラオプション】の【リンク】の中にある、【Win32 GUI アプリケーション (-WG)】のチェックが外れていた為でした。 確か、writelnで出力した情報をみるためにチェックを外したような。
 いろいろとコンパイルオプションをいじってみて、ようやくわかったので、忘れる前にメモメモ。

| | コメント (0) | トラックバック (0)

2010/01/02

FreePascal 2.4.0

年末から新年に掛けて、FreePascalのVer.2.4.0が正式リリースされたようです。
開発者のみなさんはお正月休みはとかあるのでしょうか。(笑)
感謝しつつありがたく使わせて頂こうと思います。
http://sourceforge.net/projects/freepascal/files/

| | コメント (0) | トラックバック (0)

2009/12/19

LazarusでCGI

 

 LazarusでCGIを作成しようと思い、まずはHelloWorldを作成してみました。
 以下のコードを書いて、デバッガでテストをした後、Apache2の動いているサーバーへコピーし、ブラウザからアクセスすると、もちろんちゃんと表示されました。

program cgi1;

{$mode objfpc}{$H+}

uses
  Classes, sysutils;

begin
  try
    writeln('Content-Type: text/plain');
    writeln('');
    writeln('HelloWorld');
    flush(StdOut);
    Exit;
  except
    on E: Exception do
    begin
      writeln(e.Message);
    end;
  end;
end.

 いちいちサーバーにコピーするのが面倒になり、開発マシンにAnHttpdを入れてCGIを実行したところ、「ハンドルされていないWin32の例外が発生しました。」となってAnHttpdのプロセスが異常終了してしまいました。
 プログラムが悪いのか、環境が悪いのかわからず試行錯誤を繰り返し、約半日が過ぎ去ったとき、ふと、ファイル名を変えてみると、なんと動きました。

cgi.exe -> OK
cgi1.exe -> NG
cgi01.exe -> OK
cgi10.exe -> OK
cgi2.exe -> NG

test.exe -> NG
test1.exe -> OK
test01.exe -> OK
test10.exe -> OK
test2.exe -> OK

testcgi.exe -> OK
testcgi01.exe -> OK
tstcgi01.exe -> NG

 他にもいろいろファイル名を変えて試しましたが、規則性はよくわかりません。Delphiでも試そうかと思いましたが、疲れたのでこの辺でやめておます。(ちなみに、AnHttpdに同梱されていたtest.batも同様に異常終了するので...)

| | コメント (0) | トラックバック (0)

2009/12/06

PowerPDFとByteType

 

Lazarus-ccrからPowerPDFコンポーネントをチェックアウトし、Lazarusにインストールしてみたのですが、日本語が全く表示されませんでした。
 なんとなく、UTF8化されていないんだろうなあと思いつつ、デバッガでソースを追ってみました。
 すると、sysutilsユニット(sysstrh.inc)で定義されているByteType関数の戻り値が、mbSingleByteしか返さないことに気がつきました。
 まずは、UTF8に対応したByteType関数を作成する必要がありそうです。

| | コメント (0) | トラックバック (0)

2009/12/01

Lazarus メモリーリーク検出方法

 Delphiでメモリーを検出するには、FastMMやReportMemoryLeaksOnShutdownというものが使えますが、Lazarusではheaptrcユニットを使用するようです。

 わたしが試したところでは、使用方法は2通りあり、1つ目はDelphiでFastMMを使用するときと同様、プロジェクトファイル(.lpr)のuses節の最初にheaptrcを追加する方法です。

 もうひとつは、コンパイラオプションで-ghを指定する方法です。これはプロジェクトメニューからコンパイラオプション→リンクと開き、Heaptrcユニットを使用(-gh)にチェックを付けることと同じです。

Heaptrc2

 わざとリークさせてみたところ、アプリケーション終了時に、以下のダイアログが表示されました。表示されている line33 of Unit1.pas を調べてみると、 SL := TStringList.Create; としている箇所でした。

Heaptrc

 ただ、リークがない場合でもダイアログが表示されるので、リリース時にはheaptrcを外すよう、気を付けておく必要がありそうです。

| | コメント (0) | トラックバック (0)

2009/11/30

Lazarus

 一昨日あたりから、lazarus mailing listに Version1.0についてのメールが、もの凄い勢いで流れてきてます。つたない英語力で全てを読むのが大変で、ついて行けなくなったところです。(笑)

 Lazarusはまだベータ段階でV0.9.29なのですが、「次は0.9.30ではなくV1.0としませんか。」みたいなメールから始まり、いろんな議論がされています。

 もう長い間、新しいLazarusを試していませんでしたが、一連のメールを読んで、どの程度なのか試したくなりました。

 まずはダウンロードとインストール。

 Lazarus本体
 Lazarus Snapshots から Lazarus + fpc 2.2.4 Windows版とarm winceクロス版をダウンロードしてインストール。

 lnet
 SVN最新版をチェックアウトし、インストールはLazarusでlnetvisual.lpkを開いてコンパイル、インストール。

 ちょっと使用してみての感想ですが、

 まず、日本語についてですが、数年前に試したときには、IDEでの日本語入力に色々と難点がありましたが、今はもう問題ないレベルと感じます。UTF-8になったようで、これなら日本語混じりのソースをdebianに持って行ってコンパイルすることもできそうです。

 lnetについても、今ではSSLがサポートされていて問題なく使用できました。あとは、eucjpをutf-8に変換して表示するとか、文字コードの変換で細かい問題がありそうですが、それはlnetの問題ではなく、プログラミングの問題ですね。

 まだ、Windows版しか試していませんが、かなりいい感じです。もう、新しいDelphiは買えないと思うので、今後はちょっと本気でLazarusを使用してみたいと思いました。

 本家の開発チームのみなさんと、日本語化をされてきた皆さんに感謝感謝です。

| | コメント (0) | トラックバック (0)