(11/01/01~)

11/01/03

あけましておめでとうございます。
 元旦は熊本も雪が積もり、子供たちとこんなのを作りました (さて何でしょう?)。

 出来た頃には子供たちは居ねぇし...(--メ

 元ネタが判んなかったヒトは "刹那の見斬り改" でブッタ斬られやがれ。チクショウ。

大宰府天満宮
 2日は大宰府天満宮へ (高速道路を使わずに...直前まで規制で通行止めだったため)。やたらと 3 号線が混んでいるので、玉名方面へ抜け...あれ?まだ混んでる。では、さらに西へ...ぇ?さらに西へ...もう大川行っちゃうぞ?いっそ神崎か吉野ヶ里まで迂回すっか?と思ったがヤメタ。

 結局、大宰府天満宮へ着いたのはナビの予定時刻の一時間も後の事だった。参拝し、お約束で梅ヶ枝餅食べて帰った。帰路はスムーズだった。家に帰ってニュースを観たら高速道路でさえ 40 数 km の渋滞だったそうだ...納得。

LightReport2 2.51 Unicode Edition Rel.7
 seizo さんから readme_LRBarImage.txt の改訂版 (Jpeg 絡み) を頂いたので、差し替えた上で同名で再アップしてあります。


11/01/05

Delphi 関連の書籍
 ちょっとわかりにくいですが、Delphi の製品情報 の左ペインの下の方に "Books" を追加しておきました。こうしてみると知らなかった本が結構ありますね。

 CD-ROM が付属している書籍の古本を購入の際には、CD-ROM 付属の有無をちゃんと確認して購入しましょう (Delphi 6 Personal や Turbo Delphi Explorer 目当てのヒトは特に)。中には CD-ROM の収録物前提で書かれた本もありますのでね。

 Delphi に限った事ではないですが、Windows プログラミング絡みの書籍は年々減って行っていると思います。ただ、古い書籍でも参考になる事は多く、安い値段の古本を数多く購入するというのもテでしょう (中にはプレミア価格になってるのもありますが...)。ISBN も併記しておきましたので、図書館で検索してもいいかもいいかもしれませんね。

TIOBE Programming Community Index
 全面的に信用できる数字ではないので (2004 Q2/Q3 辺り変でしょ?) 一喜一憂するようなものでもないと思いますが、一応の指標にはなるかと思っております。これによると Delphi は 2010/12 時点で 10 位との事 (最高 7 位 / 最低 12 位)。

 スクリプト系の言語と VB (非.NET) の比率が下がってきているようですね。"Categories of Programming Languages" にあるグラフを見ても、2008 年を境に "動的型付け" な言語の比率が下落傾向にありますし。

 ただ、これは "ある種のトレンド" であってシェアではありません。検索エンジンでのヒット率等が計算に入っているので、例えば「これ覚えなきゃいけなくなった、ググんなきゃ!」とか「もう覚えちゃったから、ググるようなものもないなぁ...」的なものは当然あるだろうし、そういった意味で COBOL とか Fortran が下位に居るのはある意味当たり前だと思います。

 "Delphi には .NET が含まれているのに、VB は .NET / 非.NET で分かれてるのは変じゃね?" とか "Delphi と Object Pascal を分ける意味があるのか?" とかツッコミ所は満載なので、ネタ程度に眺めるのがいいと思います。「スクリプト言語で食えなくなった連中が Java (Android) や Objective-C (iPad / iPhone) に流れてる」とか短絡的な思考はしない方がよろしいかと。


11/01/06

PC が原因不明な不安定動作に陥る場合
 自作 PC とか、安いショップ系の PC を使っている場合、まれに変な動作に悩まされる事がある。

 ...等々。個々のパーツに不具合がないのがハッキリしているのなら (買ったばかりとか)、PC の電源を疑ってみるのもテかもしれない。

 PC の電源のトコに 115V / 230V 切り替えスイッチが付いていて 115V になっているのなら、"海外仕様の電源を 100V で使っている" という事なので、国内仕様の電源に取り換えてみると不安定動作は収まるかもしれない。

 中には 「電源が特殊形状なので交換できないんだよ!」 というヒトも居るかもしれないが、そんな方には "昇圧トランス" を噛ますというテが残っている。

 PC に使えそうなのはこんなトコか。ちょっと古いけど 詳しい記事が Ascii.jp にある のでそちらもどうぞ。

 ついでに安い UPS 噛ませてバッファにしてもいいと思う。但し、接続間違いには気を付けて (コンセント -> UPS -> 昇圧トランス -> PC)。くれぐれも 100V 家電に昇圧トランスを使わないように。


11/01/10

Delphi 用 センサー API 定義ファイル (但し不完全)
 不完全な "センサー API 定義ファイル" です。SensorsAPI.pas / PortableDeviceTypes.pas のインターフェイス定義が恐らく (というか、確実に) デタラメです。

 Windows SDK には SensorsAPI.h がありますが、IDL が用意されていません。加えてセンサー API を使おうとすると PortableDeviceTypes.h も必要になるのですが、こちらも IDL が用意されていません...ヘッダファイルは IDL から生成されているのに。Microsoft のケチ!本気でセンサー API 使って欲しいのなら IDL 位用意しやがれってんだ。

 ...てな訳で、ヘッダを機械的トランスレートしてあります。Sensors.pas はそのまま使えると思います。Sensors2.h は SDK (7.1) に含まれていませんが、"Windows API Code Pack" に存在しましたので移植してみました。こちら (Sensors2.pas) もそのまま使えるハズです。なお、SensorsAPI.pas / PortableDeviceTypes.pas は不完全な上に、センサー API で使う部分しか移植していません。

 ネイティブからセンサー API を使う方法は以下が詳しいと思います。

 C++ のサンプルコードがあっても ATL 前提なので、C++Builder から使うのも面倒...なのかな?C++Builder XE からは DAX になってるようだし。それとも Builder 使いさんには意外に大した事ないのだろうか?

 時間があったらマトモに動作するようにいじりたいのですが、そんな余裕はないようです...ゴメンナサイ。どなたかマトモに動作するものを作られたら是非ご連絡ください m(_ _)m

Virtual Light Sensor (仮想照度センサー)
 ん?Windows SDK に含まれる VirtualLightSensor は ISensorManager 経由では呼び出せないのか?ひょっとして仮想センサーは ILogicalSensorManager 経由、或いは GUID 直接指定で呼び出す必要があるのか?

 ILogicalSensorManager 経由なら、もう一段メンドイ事をせんといかんなぁ... propsys も定義せんといかんのか。まぁ、第 15 回デブキャンの細川さんのセッション にあるんだけどね、InitPropVariantFromStringVector とかは。あー、センサー載ってる実機が欲しい。

JM Badge board
 センサー評価用ボード。これでも仕入れてみるか?安価だし。

ILogicalSensorManager
 uPropSysForJumpList.pas をこさえて追試してみた (細川さん、アリガトー!)。紛らわしい事を書いてあるけれど、これは仮想センサーを "叩き起こす / 寝付かせる" のに使うだけだな。VirtualLightSensor.exe を起動するとデバイスマネージャに仮想センサーが出てくるけど、アレと同じ事をやってるだけだ。基本、仮想センサーを作成した人間しか触る事はなさそう。

 ...てな具合で、センサー API の調査は一旦終了。SensorsAPI.pas / PortableDeviceTypes.pas はちょっと修正するだけで動きそうな感じ。"pp~" と付く引数は、インターフェイスへのポインタか、"配列へのポインタ" に置きかえれば動くと思う。この辺は Try & Error で。


11/01/11

RAD Studio / Delphi / C++Builder XE 特別アップグレード版?
 アリ?まだ売ってあるのか?去年の 12/25 迄じゃなかったっけ?

 エンバカデロのサイト からは特別アップグレード版の記述が消えてるけど?何かの間違いかな?...って思ってよく見たら "売り切れ" か。早とちり。


11/01/13

リンクアイコン
 既にお気付きだとは思いますが、リンクにアイコンが付くようになっています (IE?シラネ)。

 間違って PDF 踏んだ時とかに "精神的ショック" を被らないようにするためです (w

Delphi と 三項演算子 (条件演算子)
 Delphi に 三項演算子 はありませんが、VisualBasic の IIF() に相当する 関数 は存在します (Delphi 6 以降)。

// [StrUtils 名前空間]
function IfThen(AValue: Boolean; const ATrue: string; AFalse: string = ''): string;

// [Math 名前空間]
function IfThen(AValue: Boolean; const ATrue: Integer; const AFalse: Integer): Integer; 
function IfThen(AValue: Boolean; const ATrue: Int64; const AFalse: Int64): Int64; 
function IfThen(AValue: Boolean; const ATrue: Single; const AFalse: Single): Single; 
function IfThen(AValue: Boolean; const ATrue: Double; const AFalse: Double): Double; 
function IfThen(AValue: Boolean; const ATrue: Extended; const AFalse: Extended): Extended;

 StrUtils / Math 名前空間に存在するので見つけにくいのかもしれませんね。Math.IfThen() には気付いても、StrUtils.IfThen() には気付かなかったり...。

(主に) アドエスユーザ向け
 車のシガーソケットからアドエスを充電するためのチャージャーが 100 円からで売られている ようです。

 単に箱がボロくなっているだけみたいです。売れ残りの在庫処分品なのかな?ミニ USB もある ので、PDA とかの USB 充電/給電対応機にも使えるようです。あまり使う事はないでしょうが MOTOROLA / SAMSUNG / NOKIA 等の海外製携帯も対応しています。

Delphi Holic さんトコ。
 現在サイト消失中。"旧ロリポブログは 2010/12/13 で終了" との事。

※終了後はブログ閲覧、ログイン共にできなくなります。

 これって移行を忘れてたら、サイトの内容はすべてパーなの?もしかして?。Infoseek の "iswebライト" に続き、ロリポップもか...orz


11/01/14

JUSTSYSTEM の MS-Office 互換 オフィスソフトLibreOffice
 JUSTSYSTEM が MS-Office 互換 オフィスソフトを今夏にリリースするとか。OOo ベースではないようだけど、実際のトコはどうなんだろう?

 OOo と言えば 「Oracle の態度が気に食わねぇ」 という理由 (?) で開発者の一部が "LibreOffice" を立ち上げている。OOo の中の人 の一人曰く

OOo時代の時にはコードの改良や開発効率の向上などの案はあってもそれが提案できる環境ではなかった。
コミュニティから来る提案は全てOracle勢のフィルターにかけられ、それが彼らの内部の開発陣やマネジメントからOKされなければ、
いくら外部の我々の効率の向上に繋がろうとも許可は降りなかった。
それどころか決定権は、常にOracle内部(というかハンブルグ開発陣内部と言った方が的確か)の限られた人間が常に握っていた。
で、その意思決定のプロセスは外部には常に説明されることは無く、外部の人間にはその決定内容だけが享受される、という仕組みであった。
透過性など全くあったもんでは無かった。こんな状況で、やる気のあり経験もあるハッカーが集まってくるわけがなかろう。
自分もよくあんなところで3年間もよく我慢してたなぁと逆に感心さえしてしまう。

 だったとか...ナルホドねぇ。

MySQLMariaDB
 値上げ騒動 とかもあったりして慌ただしい MySQL だけど、 「Oracle の態度が気に食わねぇ」 という理由 (?) で開発者の一部 (オリジナルコードの作者含む) が "MariaDB" を立ち上げている。

 MariaDB は、現在 MySQL とかなりの部分で互換性を持ち、接続クライアントも MySQL のものが流用できるようだ...どっかで聞いたような話だな。まぁ、ぶっちゃけ InterbaseFirebird の関係のようなものか。ちなみに MariaDB は GPL v2 での配布ライセンスとなっている。

Delphi 6 updates and downloads for registered users
 うーん。C++Builder のアップデータは 1-6 なのになぁ...何が違うと言うのだろう?こんな中途半端な事をする位なら、いっそ Turbo Explorer を復活させて、2005 以前をすべて切った方がよっぽど有意義なんじゃないのか?

C++Builder 1-6 Registered Users Updates
 ...いやいやいや、ちょっと待てぃ!今気付いたが、"BCB 5(4) 以前の日本語版アップデータだけが存在しない" ってどういう事よ?まさか、Delphi / BCB 問わず 5 以前の 日本語版アップデータを全部飛ばしちゃった って事はないよね? [ 本来の C++Builder 1-6 アップデータリスト ]

Delphi Holic さんトコ復活。
 復活されたようです。よかったよかった。

 そして、Delphi Holicさん トコで 3 年前の記事 に紹介されていた "WebOS AppsBuilder" の最新版がコレ。

 "MORFIK FX 3.0" です。Ajax なのに、ソースコードが Delphi に見えるって?疲れて (or 憑かれて) るんじゃありませんよー、コイツは "Object Pascal (内部 FreePascal)" から "JavaScript" へトランスコードするんです。他にも C# / VisualBasic トランスコード版があります。

 ライセンスがよく判りませんが、DL して試す事はできます (トライアル版ではなさそうですが?)。上のスクリーンショットは Ajax で動作する "テトリス" のサンプルプロジェクトです。

 ライセンスに関しては ここ を読めという事らしいです。月間サブスクリプションが $49、年間サブスクリプションが $499 のようですね。サポートなしの場合には無料のようですが "AsIs で使え" という事のようです。登録 (無料) ユーザだと、もう少し入手できる情報が増えるようです。不明な点は各自 FAQ で調べて下さい。


11/01/15

Delphi と 三項演算子 (条件演算子)
 Indy の IdGlobal 名前空間には...

// IdGlobal
function iif(ATest: Boolean; const ATrue: Boolean; const AFalse: Boolean): Boolean; overloadfunction iif(ATest: Boolean; const ATrue: stringconst AFalse: string = ''): stringoverloadfunction iif(ATest: Boolean; const ATrue: Integer; const AFalse: Integer): Integer; overloadfunction iif(const AEncoding, ADefEncoding: TIdTextEncoding; ADefEncodingType: IdAnsiEncodingType = encASCII): TIdTextEncoding; overload

 そのものズバリな IIF() という関数が用意されています。


11/01/16

Delphi の Tips
 2 件追加しました。

 見逃していて「自分でも同じ奴作ってたヨー」というのが結構あると思います。


11/01/17

Delphi の Tips
 2 件追加しました。

 なーんか、ANSI 版の挙動が 10.2.3 と変わってるような?

11/01/18

MONSTER (B'z)
 曲が個人的な趣味に合わなくなってきたので、新しい B'z の曲を聴かなくなってはや数年。やっぱり食わず嫌いは良くないのでアルバムをまとめて聴いてみる事にした。

 音楽とか食い物ってのは "最後は個人の好み" なので、他人の評価が良くても自分にはイマイチだったりその逆だったりする。以下個人的な評価。予備知識なしでの評価。

TRACK タイトル 評価 備考
1 ALL-OUT ATTACK
2 SPLASH! 42nd Single。リフの元ネタは "酒場でダバダ (沢田研二)"
3 ゆるぎないものひとつ 41st Single。"OCEAN (39th Single)" ぽい。つーか、1st beat と 2nd beat を入れ替えるべき (w
4 恋のサマーセッション "Won't Be Long (バブルガムブラザーズ)" 風味。この歌詞だったら、もう少しポップな感じでもよかったような気がする。もう少しで◎。
5 ケムリの世界 "SAVE ME!? (BREAK THROUGH)" に引き続き "Purple Haze (ジミヘンのね)" 第二弾...多分。"『快楽の部屋』(IN THE LIFE)" 風味も混じってる。
6 衝動 ~MONSTER MiX~ 40th Single "衝動" の別バージョン。
7 無言のPromise "The 7th Blues" にありそうな曲。
8 MONSTER 歌詞を乗せなければカッコイイ曲なのかもしれないが...。
9 ネテモサメテモ "おでかけしましょ (The 7th Blues)" と数曲をミックスしたような感じ。
10 Happy Birthday
11 ピエロ 41st Single "ゆるぎないものひとつ" の 2nd beat。これは個人的に "神曲"。前奏はもう少し長くてもいいと思う。上木彩矢がカバーしている。
12 雨だれぶるーず × "もうかりまっか (The 7th Blues)" よりも救いがない。そして無駄に長い。
13 明日また陽が昇るなら
14 OCEAN ~2006 MiX~ 39th Single "OCEAN" の別バージョン。

 全体的に "OCEAN (39th Single)" っぽい曲が多い...悪い意味で。"今夜月の見える丘に (27th Single)" もそうだけど、個人的に予定調和的な曲はあまり好きではない。

 たまに、怒りとかフラストレーションとかの負の感情を一気に爆発させたような曲がある (今作での "ピエロ" とか) けど、B'z の真骨頂はここにあると思う。

ACTION (B'z)
 個人的な評価。予備知識なしでの評価。

TRACK タイトル 評価 備考
1 純情ACTION
2 黒い青春 イントロの冒頭部分は蛇足な気がする。
3 SUPER LOVE SONG 44th Single。
4 満月よ照らせ "憂いのジプシー (IN THE LIFE)" + "ONE (26th Single "ギリギリchop" 2nd Beat)" にちょっとビートルズ風味を加えた感じ?
5 パーフェクトライフ いい意味で曲調がどっちに行くのか予測できない。ちょっと "God knows (涼宮ハルヒ)" 風味。
6 一心不乱 稲葉先生に説教されている気がする。
7 FRICTION - LAP 2 - 44th Single "SUPER LOVE SONG" 3rd beat の別バージョン。日本語歌詞を乗せたらどうなるのか聴いてみたい気がする。
8 ONE ON ONE "The 7th Blues" の曲っぽい。
9 僕には君がいる "Friends" の曲っぽい。
10 なんという幸せ "泣いて泣いて泣きやんだら (SURVIVE)" っぽい。歌詞はかなり切ない。
11 わるいゆめ
12 HOMETOWN BOYS' MARCH 送別会にどうぞ。
13 光芒 "Run (RUN)" のような二段構えになっている。
14 トラベリンメンのテーマ ビートルズ風味。嫌いじゃないんだけど...。
15 オレとオマエの新しい季節 ラテン系。どっかで聴いた気が。
16 永遠の翼 43rd Single。"今夜月の見える丘に (27th Single)" 系。
17 BUDDY

 曲調がバラけてるので聴きやすい (全体的に佳作が多い)。ツボな曲がもう 1 曲あれば...。

 正直、この辺の "狙ったようなバラード" は好きじゃないなぁ。

MAGIC (B'z)
 個人的な評価。予備知識なしでの評価。

 B'z の曲で "いい意味でムカつく" のは、シングルのカップリング曲やアルバム収録曲に傑作がある事。だから、TV とかで観ていても CD を買おうと思わないのに、買ってみたらスゴイのが入ってたりする。いわゆるツンデレ...つーか天邪鬼。

 "MAGIC" は平均レベル (僕のツボ基準で) が物凄く高い。17 th アルバムにしてこの引き出しの多さは何なのだろうと思った。今思えば僕が B'z を聴かなくなった 2005~2006 が一番趣味に合わなかった時期なのかもしれない。アルバムに収録されていない聴いてない曲が 12 曲あり、これらはすべてシングル (のカップリング) なのだけれど AMAZON とかで全部注文しておいた。誰得だとは思うけど、シングルの評価は後日。

CD
 古いシングルは CD ショップにはないし、レンタルショップには最近シングル CD そのものが置いてない。特に田舎は。レンタル気分で AMAZON とかから 1 円の中古 CD (レンタル落ち) を買った方がいいなぁ (結局、送料が掛るのだけど)。でも、中にはプレミア価格になってるマニアックな CD もあったりするしなぁ..."W-NAO" とか "七緒香" とか "安宅美春" とか。

 七緒さん、安宅さんはともかく、W-NAO の歌唱力が (ある意味) スゴイのは知ってるんです...リアルタイムでシングル CD 3 枚までは買いましたからね (w むしろ、大黒摩季にカバーさせてやればよかったのに...。


11/01/19

あちこち。
 このサイトの不具合を修正中。例えば、Delphi の Tips にある "アルゴリズム" の方とか。流石に 10 年分以上、数百ページともなると不具合があってもなかなか直す気が起きなかったりする。ボチボチやるしかないか。

アルゴリズム
 基本的に "OS に依存しないもの" がアルゴリズム行きなのだけれど、そのルールでいけば "26.指定した日が祝日かどうかを調べる" とかはアルゴリズムでよかった気がする。


11/01/20

MECSUtils ver 1.53
 リリース。MecsStringWidth() が追加されている。いつの間にか DL が 1,500 を超えてるなぁ。

 Ansi アプリケーションを Unicode アプリケーションにマイグレーションしたい場合、ソースコード中で文字列の幅を Length() で取得しているコードを MecsStringWidth() で置換すれば大抵うまくいく。

 AnsiString バージョンがないのは、AnsiString の場合 Length() でちゃんと動作するから。「お前、タイ語は ANSI でも結合文字列あるって言ったじゃんか」と言われそうだけど、そもそも タイ語を扱うソースコード中では Length() で文字幅を計算したりしているハズがない のだし。Unicode 版 Delphi では UTF-8 は AnsiString (RawByteString) で扱われるが、UnicodeString 版の関数で処理可能。

 結合文字列には対応しておらず、結合文字列版を用意するつもりもないのは、この関数があくまでマイグレーションの暫定的な手段である事と、"結合文字列の文字幅は計算で求めることができない" 事に起因する。詳細はデブキャン資料 "SJIS から Unicode へ!マイグレーションテクニック" を参照の事。


11/01/21

B'z の聴いてなかったシングル
 個人的な評価。予備知識なしでの評価。

 ・40th Single 衝動

TRACK タイトル 評価 備考
1 衝動 聴きやすいのは聴きやすいのだけどね..."愛のバクダン (38th Single)" のノリ。
2 結晶 いいんだけど、これまた似たような曲調のは以前にあったので。

 ・42th Single SPLASH!

TRACK タイトル 評価 備考
2 MVP んー。もう少しで名曲。

 ・43th Single 永遠の翼

TRACK タイトル 評価 備考
2 ロンリースターズ 最近のシングルの傾向だと 1st Beat でもおかしくないかも。

 ・44th Single SUPER LOVE SONG

TRACK タイトル 評価 備考
2 ここから "BIG (LOOSE)" っぽい曲。
3 FRICTION よくよく聴いてみると歌詞が結構エグイ。

 ・45th Single BURN -フメツノフェイス-

TRACK タイトル 評価 備考
2 yokohama
3 希望の歌 サビで盛り上がると思いきや消化不良

 ・46th Single イチブトゼンブ / DIVE

TRACK タイトル 評価 備考
2 DIVE だからどうしてコレが 2nd beat なのだ?と
3 National Holiday 国民の祝日の無駄な疾走感 (w

 ・47th Single MY LONELY TOWN

TRACK タイトル 評価 備考
2 綺麗な涙
3 イチブトゼンブ -Ballad Version- "綺麗な涙" と同時収録するべきではなかったかも。

 これで全曲コンプ...と思いきや、まだ 3 曲ある事に気付く。これらはすべてベスト盤に含まれる "別バージョン" の曲なのだが...チクショウ。


11/01/22

Delphi の Tips
 1 件追加しました。

 初心者向け...だったらいいですね (うふふのふ)。


11/01/23

「昨日の Tips にある構文、ヘルプに書いてある事と違うぞ?」
 えっとな...

「ヘルプの方が間違っとるんじゃい!!」

 ...てな訳で。

Delphi の Tips
 1 件追加しました。

 包括的な "Delphi 言語の文法" が欲しい。2005~2006 で拡張された文法の差分ってマトモなものないんじゃ?説明はあっても "文法" はところどころないよねぇ?ちゃんとあったとしても、断片的な差分を追いかけないと文法の全体が見えないというのは 「何かが間違ってる」 としか言いようがない。


11/01/26

Delphi の Tips
 1 件追加しました。

 まえがきで書いてる事と矛盾しているような気がしないでもないけど、気にしない、キニシナイ。

代替 Slice()
 この件。ベタだけど、もう以下の関数でいいんじゃないかと思う。

unit AltSlice;

interface

uses
  Types;

type
  TExtendedDynArray = array of Extended;
  {$EXTERNALSYM TExtendedDynArray}

  function SliceC(const A: array of Double; const Count: Integer): TDoubleDynArray; overload;
  function SliceC(const A: array of Single; const Count: Integer): TSingleDynArray; overload;
  function SliceC(const A: array of Extended; const Count: Integer): TExtendedDynArray; overload;

implementation

function SliceC(const A: array of Double; const Count: Integer): TDoubleDynArray;
var
  i: Integer;
begin
  SetLength(result, Count);
  for i:=Low(A) to Low(A) + Count - 1 do
    result[i-Low(A)] := A[i];
end;

function SliceC(const A: array of Single; const Count: Integer): TSingleDynArray;
var
  i: Integer;
begin
  SetLength(result, Count);
  for i:=Low(A) to Low(A) + Count - 1 do
    result[i-Low(A)] := A[i];
end;

function SliceC(const A: array of Extended; const Count: Integer): TExtendedDynArray;
var
  i: Integer;
begin
  SetLength(result, Count);
  for i:=Low(A) to Low(A) + Count - 1 do
    result[i-Low(A)] := A[i];
end;
end.

 Sum() とかがオーバーロードになっちゃってるのがアレなんで、それに 1:1 で対応するオーバーロードの Slice() を作るのが筋かと思うけど、Slice() 自体はあらゆる配列に対応していなければならない (過去バージョンとの互換性のため...何に使われているかワカンナイのだし) のだから同じ名前じゃマズイと思い、SliceC() としてみた (C は計算用という意味で Calc の C)。

 ...それと、僕の思い違いなのだろうか? Mean() とかの Extended 版は戻り値がおかしいように思う。

procedure TForm1.Button1Click(Sender: TObject);
var
  Temp : array of Extended; // Single / Double
  vSum, vMean : Extended;    // Single / Double
begin
  SetLength(Temp, 3);
  TEMP[0] := 1;
  TEMP[1] := 3;
  TEMP[2] := 8;

  vSum  := Sum(Temp);
  vMean := Mean(Temp);

  ShowMessage(FloatToStr(vSum));  // <- 12
  ShowMessage(FloatToStr(vMean)); // <- 12 ? (Single / Double returns 4)
end;

 変数が Single / Double の時は期待した値が返ってくるのだけれど?

 一応 QC には入れておいた。


11/01/27

リファクタリングについて
 東京都在住の delfusa さんより。

ModelMaker ExtentionというIDE拡張をいれると
すさまじいリファクタリング機能があります。

Ctrl+Shift+Alt+Jで
該当関数を全選択して同期編集したり
(これでユニット全選択した同期編集も簡単)

ボタン一つで
Interfaceとinplementationの引数などを同期してくれたり
おもしろいですよ。

 これの事 でしょうか?ナルホド...サードパーティ製品の利用も検討すべきかもしれませんね。

Mean() について
 高橋さんが QC のコメント で触れているが、これは最適化のミスのようだ。確かに Mean() の実装は Single / Double / Extended で全く同一で、普通に考えたら動かない道理はないんだよなぁ。XE で追加された類似のオーバーロード関数には似たような問題を抱えているのかも。ただ...最適化の部分というのは目に見えないのだから、ソースコードを追っただけでは問題を発見できないってのがなぁ。

 ぶっちゃけ、合計とか平均とかは DB 使ってると SQL でやっちまうので、配列操作関連の関数はノーチェックだった (実数には大抵 Currency 使うし)。それにしても今頃 (XE) になって何故 Extended とかのオーバーロード関数なんて実装したんだろ?

関連する Extended 型のオーバーロード関数について
 マトモに動作しないのが結構あった。

 うは。ちなみに、テストは機械的にやっていたので、  の Single / Double / Extended で結果が異なり、危うくQC にレポートを入れそうになった事を白状しておく (説明するまでもなく結果が異なるのは当たり前)。


11/01/28

LightReport2 2.51 Unicode Edition Rel.8
 リリース。TLRImage で AutoSize プロパティが有効になりました。seizo さんのご提案です。

Delphi の Tips
 1 件追加しました。

 度量衡計算は JCL / JVCL にもあったように思うけど、一応。アルゴリズム行きにするか迷いました。計算するだけだったら "Microsoft Calculator Plus" 使えばいいんですけどね。

 あと、「単位に "りゅうべい" がないぞ?」 とか言わないように。

Delphi / C++ Builder Starter Edition キタ━━━━━━(゚∀゚)━━━━━━ !!!!!
 ふーさん とこ経由。以前で言う Standard Edition に相当するもののようですね。$199 でアップグレードが $149 ですか (上位エディションへのアップグレードは $100 引き)。$1,000 とあるのは "商用利用可能な年額" の事でしょうか?"Starter Edition = 無償版" でなかったのでちょっと安心(?)...これは 個人的な理由 ですが (w

 Visual Studio 2010 では Standard 版が消滅していますし、いいプロダクトかもしれませんね。


11/01/29

ショートカット URL
 ほほう、ショートカット URL とな?

 何気に便利じゃなイカ?元ネタは こちら

本家フォーラムでの Starter Edition のスレッド。
 https://forums.embarcadero.com/thread.jspa?threadID=48785&tstart=0 こちらなのだが、現在 Web で閲覧すると "ぬるぽ" で落ちるようだ。代替スレッドは こちら

 どうでもいいけど、"Starter Edition" の記事ってフライング発表気味だよね (日付が 2011/01/31 になってるし)。ま、出てしまったものは仕方ないだろうけど。

"XE Starter Edition" でない理由
 これって、年間ライセンスのみなのかな?その代わりに 5 ライセンスが付いている、と。だから 5 名で開発するのなら、実質年間 $40 だと。フリーソフト等を作るためのグループでの共同購入が可能ならいいのになぁ。

 あの記事で確定しているのは、

 という事。恐らく XE ベースなのだろうけれどね。むしろ知りたいのはライセンス以外の制限事項。記事を読む限りでは、"限りなく Professional 版に近い気がする" んだけど?

 まぁ、憶測と推測を並べても仕方ないので、素直に 01/31 の正式発表を待つとしますか。

"尋" is not "fathom"
 117.度量衡計算を行うには? (Delphi 6 以降) のコメントにも書いてありますが、JA/RTLConsts.pas では fathom の説明が "尋" となっています。どちらも手を広げた長さがルーツですので、"尋 = Japanese fathom" である事は間違いありません。しかし、fathom と "尋" は長さが違う (1 fathom = 6 feet / 1 尋 = 6 尺) ので、fathom の訳に "尋" を当てるのは適当ではありません。

 120 個目にしてはショボイ QC だった...orz

Delphi Starter Edition
 本家スレッドが復活してますが...かなり伸びてますね (重複ポストばっかで読みにくいったらありゃしないですが)。それにしても、何度読み返しても "five licenses" のくだりが理解不能です。

C++Builder and Delphi Starter edition users are allowed to 
have up to five licenses running simultaneously within their network.

 原文はこうですが、どうとでも解釈できる気がします。"LAN 内で 5 台まで (Starter Edition が買えるのは事業所で 5 セットまで)" という意味でしょうか?


11/01/30

いきなり Outlook Express が文字化けして、本文が読めない。
 XP の話ですね。当方、Thunderbird を使っているので無縁でしたが、知人の PC の相談に乗った時にこの問題に遭遇しました。

 結論から言うと、"MS10-90: Windows Internet Explorer の累積的なセキュリティ更新プログラム (KB2416400)" が原因のようです。"Windows XP 用 Internet Explorer のセキュリティ更新プログラム (KB2467659)" を適用すれば問題を解決する事ができます。


11/01/31

さて...大本営発表の日 (多分) な訳だが。
 今日は "Delphi / C++Builder Starter Edition" の全容がハッキリするであろう日。現地時間ベースだろうから、確定情報が出てくるのは夕刻辺りだろうか。

Delphi / C++ Builder Starter Edition 発表

 Professional 版から削られた主な機能は以下の通り (Delphi)。

 また、  このような感じになっているようです。

 FAQ において "five licenses" のトコがちょっと詳しく説明されていますが、"Starter は個人ライセンスではなく、5 台 / サブネット のライセンスである" と読めます。

Starter Edition の個人的な感想
 Delphi 7 辺りからのアップデートだとメリットしかない。"Delphi XE を Delphi 7 Pro 相当までに切り詰めた製品" に近いと思う。

 Delphi 7 Professional と比較した場合、違いといえばこの程度。帳票ツールについては LightReport2 2.51 Unicode Edition事前に準備してあった のでどうにかなるだろう、と。

 Turbo Explorer にあった、極悪な制限である "コンポーネントインストール不可" もなければ、商用利用不可という訳でもない (金額制限はあるにせよ)。それにしても totonica 氏の "個人向け SKU" 論 に限りなく近い製品になっているのが興味深い。

 "Delphi 6 Personal" と "Turbo Delphi Explorer"...加えて言うなら過去にあった "Standard Edition" の差別化の失敗の教訓がよく生かされているように思う。確かに無償版はホビーユーザーには歓迎された。しかし、Borland としての利益は生まなかったし、QC へのフィードバックも実は大して増えていない。Standard 版に関しては完全に差別化に失敗している。

 ただ、無償版がなくなり、Turbo Explorer でコンポーネントインストール禁止になった事で、ユーザーワークスの VCL 等は確実に減った (JEDI 等に一極化してしまった)。その後 Delphi は Unicode 化されたが、Unicode 対応のものはさらに少なくなった。

 今回、エントリーレベルの SKU の追加によって、

 という好循環を生む下地はできた事になる...そううまく事が運ぶかどうかは別として。後はやはり入門書が欲しい所。Starter Edition はオンラインヘルプ (HTML-Help2) もなくなっているようなので、"Starter Edition の範囲でしかやらない入門書" なんてのがあって然りだとは思う。昔のコースウェア本みたいな感じで。

 「古いコンポーネントを最新版の Delphi で使いたいのなら、作者に Delphi プレゼントしてみたら?」 の件の敷居も下がった気がする。外注さん 1 日分にも満たないと思うし。


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