(09/12/01~)

09/12/05

Delphi の Tips
 こっそり(?)増えてます。

 既存の Tips の補足的な Tips が多いかもしれません。

Google 日本語入力 beta
 面白い。再変換機能が実装されていない等の細かい事は抜きにしても、MS-IME (特に Office IME 2007) よりは使える場面が多いような気がする。

 個人的な好みはある程度 [ツール | プロパティ] で設定できる。例えば以下の様な設定が可能。

 ...ただ、サジェストは正しい用語や用法を知っているヒトにはいいかもしれないが、ネットスラングも往々にして含まれるため、ビジネス用途でサジェストを多用するべきではないと思う。

第15回 エンバカデロ・デベロッパーキャンプ
 【G2】セッションのビデオ を観た。うーん。うーん!? 一言で片付けるとするなら、"Web 言語としての Delphi が欲しい" って事なのかな?


09/12/07

DocWiki
 雑談をお休みしていた間に、結構な数のドキュメントがインポートされました

 ...ただ、インポートされたのは "殆どが" 英語版にあって日本語版になかったトピックであり、"やっとこさ英語版ファーストリリースの内容に追いついた" という感じです (CGRC.EXE 等は未だに欠損中)。大量インポートされたのが "Help Update の後" というのはタイミング的によろしくなかったと思います。

 QC#78315 は流石に直りましたが (初心者向けチュートリアルのソースコードが読めない状態でした。詳しくはお手持ちのヘルプファイルで確認下さい)、QC#78374は、QC 入れて2ヶ月経った今も修正されていません。1文字分のミスを直すのがそんなに難しいのかな?そもそも DocWiki 化したのは "何か不具合があった時に早急に修正する事が可能" ってのが建前じゃなかったんだっけか?

 ともあれ、DocWiki を参照する場合には、"英語版 を先に検索し、その後、同等の 日本語版 があるかを確認した方がいい" という状況はしばらく続くようです。


09/12/08

Delphi / C++Builder / RAD Studio 2010へバージョンアップする絶好のチャンス!
 ...いや、別に宣伝ではないのですが、Delphi 1~2005、C++Builder 1~6ユーザ はこのバージョンアップを逃すと、次回から定価で製品を購入するハメになります。有効期限は 2009年12月31日 と、今月末までになっていますのでお早めに。

 現時点ではこの3つがあれば Web 上にあるソースコードをフル活用できます。おさらいの意味で、各バージョンを持っていると便利な理由を書いてみます。

Delphi 7
 Win9x 上にインストールできる最後の Delphi。Delphi 2 ~ Delphi 6 迄のソースコードをほぼ改変なしでコンパイルできる。

 過去の資産が使えないのは、FastNet(NetManage) のみ。但し、FastNet(NetManage) の会社は現存せず (買収・統合された)、サポートも行われていない。

Delphi 2007
 最後の ANSI 対応版 Delphi。Delphi 7 用のソースコードをほぼ改変なしでコンパイル可能。

 ANSI コンパイラではあるが、WinNT系の API がふんだんに使われているため、生成された EXE が Win9x で完全に動作するという保証はない。IDE は Win9x にインストール不可。

Delphi 2010
 最新の Unicode 対応版 Delphi。

 詳細は割愛。

細かいこと
 Delphi 7 は過去に作ったアプリケーションのメンテ用に。VistaAltFix を使わないと、Vista 以降の Windows で動作させた場合に、問題が発生する事があります。

 Delphi 2007 は、過去に作ったアプリケーションのマイグレーション用、または連携するアプリケーションが ANSI にしか対応していない場合に。Delphi 2007 以前で作成したアプリケーションでは、"隠されたアプリケーションウィンドウ" の影響で、Vista の最小化されたアプリケーションのタスクバーでの挙動が違ったり、Windows 7 の "エアロシェイク" が動作しなかったりします。

 Delphi 2010 は、Unicode アプリケーション作成用です。Windows 9x で動作するアプリケーションは基本的に作れません。Windows 2000 にインストールする事も基本的にできません (Delphi 2009 なら Windows 2000 にインストールできます)。

Delphi 7 Delphi 2007 Delphi 2010
Win9x へのインストール × ×
Win9x での動作 (EXE) ×
文字コード ANSI ANSI UNICODE
XP 対応
Vista 対応 ×
Windows 7 対応 × ×

 このように、Delphi 7 / 2007 / 2010 の 3 つがあれば、古い Windows から最新の Windows までまんべんなくカバーできます。Win9x を考慮しなくていいのなら、過去のアプリケーションのメンテ用として Delphi 2007 があればいいですね。今ならまだ Delphi 2007 は入手可能ですし、Delphi 2010 以降のアップデート版購入も可能になりますので、Delphi 2007 を 今のうちに押さえておくのも選択肢の一つかもしれません。


09/12/12

新常用漢字表が迫るUnicode移行、「シフトJIS」では対応不可能 (ITPro)
 ほほう。新しい常用漢字が S-JIS では対応できないってか。つーか、ツッコミ所はそこじゃなく、"新しい常用漢字の一部はサロゲートペア領域に存在する" ってトコじゃなかろうか?適当に WideString で "1文字=1Word (16bit)" で処理してると "アイタタタ" てな事になるって事か。ま、たった1文字だけが BMP 領域外にあるってのもおかしな話ではあるけれど、実用上はそんなに問題になる事はないと思う。

 言葉足らずだったので追記。"実用上はそんなに問題になる事はない" の意味だけれど、S-JIS のシステムをたった数文字のために Unicode ベースに変更するのは多くの場合ナンセンスだし、 Unicode 対応といいながら実際には UCS-2 (BMP) にしか対応していないシステムだったとしても、たった数文字のためにシステムを改修するなんて事はまずやらないだろう、と。 BMP 以外のすべての Unicode 文字を扱えるシステムは緩やかにしか増えていかないだろうから、"実用上はそんなに問題になる事はない" と思っている。だって、"常用漢字かそうでないかを意識して漢字を使う" のって、ごくごく限られたケースじゃないの?

 ...いかんな。何を書いても誤解されそうな気がする。"Unicode で BMP 範囲外の文字(UTF-8 での 4バイト文字、UTF-16 でのサロゲートペア) に対応しなくてもいい" と言っているのではなく、むしろ逆なのだけれども、 "UTF-8 使ってるから UTF-16 のサロゲートペアなんて関係ない" とか言っちゃうヒトがいる限り "BMP 以外のすべての Unicode 文字を扱えるシステムは緩やかにしか増えていかない" と予測している、って事。

Delphi の Tips

 追加してみました。

MECSUtils ver1.38
 "JIS2004 問題 (新常用漢字問題)" に絡んで MecsMappingFix_JISX0213ToJISX0208() を追加。また、

 これらの内部で、MecsMappingFix_JISX0213ToJISX0208() が呼び出されるようになっています。


09/12/16

原チャリ
 ギア付(カブとかじゃなくて)の原チャリにメチャ久しぶりに乗ったが、全然体が覚えていない。ギアチェンジのタイミングは耳で覚えてるけど、原付スクーターの癖が染み付いてしまっていて、どうしても手でブレーキをかけてしまう。 ちゃんと練習しないと、そのうち前方一回転するハメになるな...コリャ。

freeml
 前身が Delphi-ML だって事で惰性で参加しているけど、"書き込みしにくい"。メーラーで読む分にはいいけれど、Web だと

 正直な話、技術系には向いていないと思う。ソースコードを書く必要があるのなら エンバカデロのディスカッションフォーラム を使うのがベストだと思う。ソースコードを強調構文で表示できるしね。

Dephi Q&A 掲示板 Delphi-Users (freeml) ディスカッションフォーラム
ユーザ登録 不要 必要 必要
ソースコード記述 ×
匿名 ×
RSS/NNTP ×
速度 軽い 普通 重い
文字エンコーディング S-JIS EUC-JP UTF-8

 freeml はユーザ登録が必要だけれども、ディスカッションフォーラム なら、そもそも製品登録している時点でアカウントは存在するし、ハンドル/匿名が使いたければ、Dephi Q&A 掲示板 があるし (ディスカッションフォーラム で匿名が実現できない訳ではない)。

 freeml の仕様は (技術系の ML に使うには) 中途半端に感じる。質問する側はどのコミュニティでも構わないかもしれないけれど、ソースコードを例示して回答する側からすれば、ディスカッションフォーラム が圧倒的に便利だ。インデントされたソースコードをそのままコピペできるので、質問者にも有益だと思うのだがなぁ...。

ディスカッションフォーラム で、ソースコードを強調構文表示するには?
 普通にソースコードを貼りつけると、半角SPは纏められてしまっちゃうので、

{code: delphi}
procedure TForm1.Edit_Change(Sender: TObject);
var
  MaxLen: Integer;
begin
  MaxLen := SendMessage((Sender as TCustomEdit).Handle, EM_GETLIMITTEXT, 0, 0);
  if MaxLen <= 0 then
    Exit;
  with (Sender as TCustomEdit) do
    begin
      if Length(Text) <= MaxLen then
        Exit;
      if ByteType(Text, MaxLen) = mbLeadByte then
        Dec(MaxLen);
      Text := Copy(Text, 1, MaxLen);
      SelLength := 0;
      SelStart  := MaxLen;
    end;
end;
{code}

 このように "{code: 言語}~{code}" で括るといい。"言語" の所は正直なんでもいい。面倒なら "{code}~{code}" でもいいのだけれど、閉じタグが "{/code}" でないので判りにくいという事もあってメモ代わりに "言語" が記述される事が多いみたいだ (言語別の強調構文表示が未実装なだけかもしれないけれど...)。

Baidu Type -文字入力システム- Beta版
 なんかデジャヴだな。しかし、XP でしか動作しないってのは致命的かも。


09/12/21

いやいや、そうじゃないだろう?
 ここで語られているドキュメントの話。

 QC#78374...2ヶ月放置されていた QC ですが、これが修正された日付は 12/07 なのですよ。解ります?12/07 なんですよ。

 それから...例えば、Delphi 2009 で採用されたリソースコンパイラ CGRC.EXE の日本語版解説はありません。Delphi 2009 の時のものですよ、これ。加えて言えば、

リソース コンパイラの選択: 現在、リソース コンパイラには 2 つの選択肢があります。 リソース コンパイラを選択するには、[プロジェクト|オプション...|リソース コンパイラ] に移動し、RC または BRCC32 を選択します。 RC を使用することを選択するときは、使用するリソース コンパイラのファイル名は CGRC.exe ですが、ヘルプでは誤った名前 ERC.exe が示されています。

 Delphi 2009 の readme.htm にこう書かれていますね、"ERC.EXE は誤った名前" だと。それがどうして Delphi 2010 の readme.htm にも引き継がれているのでしょうかね?一年経っても修正できなかったと?DocWiki でも未だに 英語版以外は直っていない というのはどういう事なんだ、と?

 "Delphi 2009 の ドキュメントの品質を改善しないまま DocWiki に移行したので、DocWiki 移行自体に手間が掛かってしまい品質が Delphi 2009 同等かそれ以下になった" ってのがホントの所じゃないですか。 "何か不具合があった時に早急に修正する事が可能という DocWiki 化の建前" すら崩れてしまってるのなら、"僕から罵倒されても文句は言えない" 事は当然理解してらっしゃいますよねぇ?

 "こちらで最新のドキュメント..." と紹介のある docs.embarcadero.com にある Delphi 2010 の CHM ファイルは日本語版のみ RTL/VCL が存在せず、存在するものも TOC から文字化けしていてマトモに使えたもんじゃないです...2007 のも 2009 のも (自前で CHM ヘルプを作る方法はこちら)。ちなみに、私はマトモに使える Delphi 2007 / 2009 の CHM ヘルプを持っていますが、2010 のはありません。元になる HTML-Help2 のヘルプがひどいので作る気になれないからです。

 "いいライター" 以前に、欠損してるコンテンツの補充が必要だと思います。欠損するくらいなら、未翻訳の英語版コンテンツが含まれていた方が遥かにマシだと思います。ただでさえ、中身のないコンテンツ(説明になってないコンテンツ)が未だに相当量存在するのですから。


09/12/22

C# でクロス開発
 RZ-H220 の開発のために久々に C# をいじる。すっかり忘れてやんの。

 しかし、C#...つーか、VS は IDE が重くてイライラするなぁ。"Delphi / C++ Builder の IDE が重い" とか言っちゃうヒトは VisualStudio 触った事があるのだろうかと思ってしまう。クロス開発はエミュレータでデバッグできる範囲であればいいけど、実機でしかテストできない場合には面倒な事この上ない。

"Project X"
 "コンパイラをフロントエンドとバックエンドに分ける" といっていたアレ。言語層をフロントエンドで処理し、プラットフォームをバックエンドで処理するって事だと認識しているのだけれど、僕の考えが間違っていなければ、中間言語へのトランスレートが必要な気が (内部的にであっても)。ただ、この方法だと "言語" の追加や "バイナリが動作するプラットフォーム" の追加は容易になるわね。

 ...そうなると Prism の統合が頭をよぎるけど、"PreRequires な .NET コンポーネントが BDS 2006 並になる" & "またもや .NET の縛りを受ける" 事になるけど。流石にそれはやらない...よね?

"Project Chromium"
 品質向上プロジェクト。多分、軽量な O/R マッパとかの小物も幾つか追加される。予定されていたソースコードフォーマッタは Delphi 2010 に搭載されちゃったし。

"Project Commodore"
 64bit コンパイラ。

勝手な予想
 "フロントエンド/バックエンド式の新しいコンパイラ (Project X の一部)" + "Project X (クロスコンパイラ・バックエンド/ライブラリ)" または "Project Chromium" または "Project Commodore" が "次期 Delphi / C++ Builder" になるのでは?

 一番手っ取り早いのは "フロントエンド/バックエンド式の新しいコンパイラ" + "Project Chromium"。これなら Delphi 2010 の延長線上で開発できる...ユーザが食いつくかどうかは別として (「サービスパックとして提供しろ」と主張するヒトも居そうだし)。

 以前のような "タイムラインに乗ったロードマップ" が出てこないので、どの方向で進めるのかを決めあぐねている印象がある。進捗率が高いのは多分 "Project X"。"Project Chromium" はいきなり出てきた感があるので、"Project X" の "Win32 以外のクロスコンパイラ(バックエンド)" が 間に合わなかった時のための保険 に見える。

 64bit コンパイラを先に作ったって、再度 "フロントエンド/バックエンド式" に作り替えなければならないのならリソースの無駄になるって事だから、最低でも "Project X" の "フロントエンド/バックエンド式コンパイラ" は最優先で開発されるハズだとみている。いい意味で予想が裏切られるといいなぁ。


 BACK   古いのを読む   新しいのを読む