(09/03/01~)

09/03/03

Advanced / W-ZERO3[es]
 els氏から "Advanced / W-ZERO3[es]" を白ROM状態で譲り受けたので、活用すべく情報収集中。

NeoLAB mBook
 Win機。複合機のメンテナとか、フィールドワークにはいいのでは?無線LANやBluetoothもあるし(多分)。

JoinTech J-PRO Mini Laptop (JL7100)
 WinCE機。クロックとメモリがどうにも...しかもチトデカい。無線LAN付きの "J-PRO Mini Laptop (JL7200)" ならなんとか...。


09/03/10

・Delphi 2009 対応 TEditor
 Mae氏が 今度は TEditor 2.52 ベースのパッチを作られたようだ(以前のものは 2.48 ベース)。最新版がベースになった事で、フィードバックも増えてくると思われる。僕も折を見てフィードバックをしたいと考えている。

Advanced / W-ZERO3[es]
 ハードも揃えたので、かなり充実してきた。いい感じ。情報から何から後追いなので、流石に失敗は少ないな。

・子供を轢きそうになった
 前方不注意とかじゃなくて。

 車が2台なんとかすれ違える(九州ではこれを "離合" と言います)道路で、子供を轢きそうになった。  子供と言っても "ハイハイしかできない乳幼児" だった。最初は我が目を疑いましたよ、車道にハイハイで出てくるんだもん。

 この日は小雨が降っていて、この子はハイハイでズブ濡れ。後続車も"誰も停まらない"、"誰もスピードを落とさない"。あの子供の高さは常識で考えると死角になる。"子供がハイハイして車道に出ている" という認識がないのだから、目で見えていても "物が落ちている" 程度にしか思わないのだ。 インフルな自分の子供を乗せていたが(病院の帰り)、急遽Uターンして路駐。走ってる車を避けながら、子供の身柄を確保。

 顔を上げると反対側の駐車場に、ヤンママ2組を発見。「この子、どこの子か知ってますか?」、「いえ、危ないと思って私たちも停まったんですよ」との事。流石に彼女らの子供ではないようだ。 そして、ヤンママ2組と、僕と嫁さんで親を探すことに。

 この子が出てきた路地には親が居る気配がない。そして、路地には玄関側が面するアパートはない。70m程路地を行くと、一戸建ての家があり、玄関には幼児用のと思われる20cm程度のボールが箱に入っていた。 「この家には子供が居る可能性が高い。そして、子供が居る家庭ならこの子の事を知っているかもしれない。」そう思っっていたら、嫁さんが突撃。ピンポーン。

 家のヒトが出てきたので「この子、どこの子か知りませんか?」と尋ねたら、「あ、ウチの子です。スミマセン」とアッサリ風味で言われた。よくよく考えたら、この家の玄関は最初から数10cm開いていたな。 つーか、子供が出て行ったのすら気付いてなかったんかい。説教したいのは山々だったが、インフルな自分の子供を車中に置き去りなので、すぐにその場を離れた。 ヤンママの協力に感謝を表して、家に帰る事にした。車をその先のコンビニで再度Uターンさせると、さっきのヤンママの車とすれ違った。"離合"する時にクラクションを軽く鳴らして会釈をした。

 帰り道の車中で嫁さんが、「子を持つ親としては見過ごせなかった?」と尋ねたので、「あのバカ親がどうなろうが知ったこっちゃないけど、あのままではいつか轢かれてたっしょ。轢いたヒトが気の毒すぎる。」と答えておいた。


09/03/26

DFMコンバータエキスパート
 以前作った奴のIDE拡張機能版。Delphi2009版はサロゲートペアにも対応しています。ソースコード付きです...ってか、バイナリでの配布の方法が分かりません(^^;A

 ガリレオIDEなDelphiで、フォームを "エディタで表示" するとこんな感じになりますよね?

object Form1: TForm1
  Left = 290
  Top = 96
  Caption = 'Form1'
  ClientHeight = 147
  ClientWidth = 218
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'Tahoma'
  Font.Style = []
  OldCreateOrder = False
  PixelsPerInch = 96
  TextHeight = 13
  object Label1: TLabel
    Left = 28
    Top = 56
    Width = 165
    Height = 21
    Caption = #12354#12354#12354#12356#12356#12356#12358#12358#12358
    Font.Charset = SHIFTJIS_CHARSET
    Font.Color = clWindowText
    Font.Height = -21
    Font.Name = #65325#65331' '#65328#12468#12471#12483#12463
    Font.Style = []
    ParentFont = False
  end
end

 Delphi5 から "テキスト形式DFM" がサポートされ、Delphi6 からは文字列が "Unicodeベースの10進コントロール文字列に変換される" ようになりました。それでも、Delphi7 迄の旧IDEではコードエディタで表示する際に "コントロール文字列->通常の文字列" に変換され、IDEからフォームのソースコードを日本語で自由に編集できたのですが、ガリレオIDEではこれができなくなってしまいました。

 ガリレオIDEでフォームを "エディタで表示" し、日本語等を含む文字列で書き換えても、"フォームとして表示" した際に文字化けを起こしてしまったり、エラーになったりします。

 DFMコンバータエキスパート をインストールした状態で、[編集 | コントロール文字列をデコード] または、Ctrl+Alt+D を押下すると、

<!> Decoded DFM <!>
object Form1: TForm1
  Left = 290
  Top = 96
  Caption = 'Form1'
  ClientHeight = 147
  ClientWidth = 218
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'Tahoma'
  Font.Style = []
  OldCreateOrder = False
  PixelsPerInch = 96
  TextHeight = 13
  object Label1: TLabel
    Left = 28
    Top = 56
    Width = 165
    Height = 21
    Caption = 'あああいいいううう'
    Font.Charset = SHIFTJIS_CHARSET
    Font.Color = clWindowText
    Font.Height = -21
    Font.Name = 'MS Pゴシック'
    Font.Style = []
    ParentFont = False
  end
end

 コントロール文字列が、通常の文字列になりました。先頭には "<!> Decoded DFM <!>" というシグネチャが付きますが、重要な意味がありますので削除しないで下さいね。

 Caption = 'あああいいいううう'
   
 Caption = 'あああいいいうううえお'

 このように編集しましょう。編集が終わったら、[編集 | コントロール文字列へエンコード] または、Ctrl+Alt+E を押下すると、

object Form1: TForm1
  Left = 290
  Top = 96
  Caption = 'Form1'
  ClientHeight = 147
  ClientWidth = 218
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'Tahoma'
  Font.Style = []
  OldCreateOrder = False
  PixelsPerInch = 96
  TextHeight = 13
  object Label1: TLabel
    Left = 28
    Top = 56
    Width = 165
    Height = 21
    Caption = #12354#12354#12354#12356#12356#12356#12358#12358#12358#12360#12362
    Font.Charset = SHIFTJIS_CHARSET
    Font.Color = clWindowText
    Font.Height = -21
    Font.Name = #65325#65331' '#65328#12468#12471#12483#12463
    Font.Style = []
    ParentFont = False
  end
end

 シグネチャが消えていますね。そして "フォームとして表示" にしてみましょう。編集箇所がうまく表示できていますか?

注意点
 デコード状態のフォームを "フォームとして表示" してしまうと、グッチャングッチャンに文字化けしてしまいます。一旦文字化けしたフォームを "エディタで表示" にして、Ctrl+Z でアンドゥしても元には戻りません。

 それを未然に防ぐために、デコード状態ではファイルの先頭に "<!> Decoded DFM <!>" が埋め込まれます。このシグネチャがあるため、デコード状態のフォームを "フォームとして表示" しようとしても

フォーム作成エラー: 不正なストリーム形式

 で止まります。一度止まるとエンコードができなくなりますが、フローティングデザイナなら "他のウィンドウ"、埋め込みデザイナなら "他のタブ(履歴タブとか)" へフォーカスを移せば、再度エンコードする事が可能となります。

 あ、間違っても "<!> Decoded DFM <!>" のまま保存しようとしないで下さいね。

・裏技?

 Caption = 'あああいいいううう'
   
 Caption = 'あああ'#13#10'いいい'#13#10'ううう'

 このように編集する事で、TLabel のキャプション文字列を "デザイン時に改行させる事が可能" です。

・Open Tools API
 いやもう、ホントに力技。マトモなドキュメントないし。でもまぁ、DFMコンバータエキスパート のソースコードを追えば、テキスト処理を行うエキスパート(選択されたテキストをクォーテーションで括るとか)は比較的簡単に作れるかと。

・Ansi -> Unicode へのマイグレーション
 DFMコンバータエキスパート のソースコードは "Ansi -> Unicode へのマイグレーション" のサンプル的な要素もあります。dfmconv_main.pas や DfmParser.pas が Delphi2007版 と Delphi2009版 でどのように異なるかを調べてみるのもいいでしょう。

Internet Explorer 8
 を?これってかなりイケてるんじゃ?スピード云々はともかく、レンダリングがIE以外のブラウザに近づいたようだ。Firefoxで正しく表示できるサイトは殆どの場合、IE8でも正しく表示できる気がする。ヌルヌルスクロールもかなり改善されたみたいだし。

Advanced / W-ZERO3[es]
 マウスが使えるようになったりして、楽しいことになっている。

・パッケージの不備
 DFMコンバータエキスパート のアーカイブの日付が "2009/03/26 23:00" 以前のものは、パッケージに不備があります。具体的には、MECSUtils をパッケージのプロジェクトに含めてしまっています。MECSUtils を他で使わない場合にはこれでもいいのですが、使う場合に困る場合がありますので、お手数ですが再ダウンロードをするか、手動でパッケージから MECSUtils(+DFMParser) を取り除いて下さい。

 また、旧来の DFMコンバータ も、DFMコンバータエキスパート の仕様に合わせてバージョンアップしてみました。


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