月別アーカイブ: 2014年10月

Lazarus 1.2.4 までの厄介な問題。

Lazarus 1.2.4 まで、基本的なところで結構厄介な問題がありました。
同じプログラム(同じEXEファイル)にもかかわらず、実行するPCによって問題が発生する場合と発生しない場合があります。Windows 7、Windows 8の区別もありません。そういう意味では、まったくこの問題に遭遇していない方も多いかと思います。また、配布したら配布先から問題を指摘されたりというケースもあったかと思います。

この問題は Lazarus 1.2.6 で改善されました。(Issue #0019716)
完全に直ったかどうかは何とも言えませんが、私がいくつかのPCで確認したところ問題が発生していたPCで発生しなくなりました。問題が発生していなかったPCもそのまま問題ありません。

どういう問題かというと。

まず、次のようにフォーム上にEditコントロール、Memoコントロール、Buttonコントロールを1つずつ配置します。

laz12bug_8

フォームのCreateとボタンのClickイベントを以下のように作成します。

procedure TForm1.FormCreate(Sender: TObject);
begin
  Edit1.Text := '<漢字文字列です>';
  Memo1.Clear;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Memo1.Append(Edit1.Text);
end;

 

実行すると、Editコントロールの文字列が全選択となるはずですが、途中までしか選択されません。

laz12bug_1

ボタンをクリックするとMemoにEditの文字列が追加されます。

laz12bug_2

これは問題ありませんが、もう一度ボタンをクリックすると、Memoの2行目に表示されるはずが、1行目の途中に追加されてしまいます。

laz12bug_3

さらにボタンを3回クリックすると、以下のようになります。

laz12bug_4

 

Lazarus 1.2.6 で再コンパイルして実行すると以下のように正しく表示されるようになりました。

laz12bug_5

ボタンを5回クリックしてもMemoに正しく表示されます。

laz12bug_6

とりあえずよかった。

Lazarus 1.2.6 がリリースされました。

Lazarus 1.2.6 が出ました。
http://www.lazarus.freepascal.org
Free Pascal 2.6.4 ベースです。(Lazarus 1.2.0まではFree Pascal 2.6.2ベースです)

Win64ユーザは、Win32 + 64bitクロス環境を使用することが推奨されることは変りません。

Lazarus 1.2.6 の Win32版とx64クロスコンパイラは以下からダウンロードできます。
http://sourceforge.net/projects/lazarus/files/Lazarus%20Windows%2032%20bits/Lazarus%201.2.6/

インストール手順や使い方は Lazarus 1.2.0 と同じです。
インストール手順は、Pascal日和ホームページにあります。1.2.0を1.2.6に読み替えて下さい。