05月≪ 2008年06月 ≫07月

123456789101112131415161718192021222324252627282930
2008.06/28(Sat)

ロアノークの集団失踪事件

集団失踪事件を扱ったロアノークの「Roanoke: Solving the Mystery of the Lost Colony」がやっと届いた。「CROATOAN」という謎の文字を残して1587年、アメリカに渡った100名を超える入植者が消えてしまった事件である。

本はまだ読んでいないのだが、その前にロアノークを取り扱った番組を見てしまった。CSのヒストリーチャンネルだ。

消えた入植者の末裔が今も生きていることがDNA鑑定によって明らかになったという。詳細は別として、ほぼ事件の全容が見えてきたということになる。以前に書いた「ピクニック at ハンギング・ロック」に続いて自分の中では2つのミステリーが解決したことになる。
スポンサーサイト
23:37  |  超常現象  |  TB(0)  |  CM(0)  |  EDIT  |  Top↑
2008.06/27(Fri)

Delphi Chart リストのインデックスが範囲を超えていますというエラー

DelphiにはメニュータブのAdditionalからChartを選択することで簡単に多彩なグラフが描ける。

以前に棒グラフや散布図などのいろいろなチャートを作成していたので、そのコードを援用してみた。
-------------
procedure TForm1.Button1Click(Sender: TObject);
var
n:integer;//試行回数
i:integer;
Dice:integer;
Cum_Dice: array[1..6] of integer;
AX,AY:integer;

begin
Dice:=0;

for i:=1 to 6 do Cum_Dice[i]:=0;//初期化

//グラフのクリア
Chart1.Series[0].Clear;

n:=StrToInt(Edit1.Text);

randomize;

for i:=1 to n Do
begin
Dice:=random(6)+1;
Cum_Dice[Dice]:=Cum_Dice[Dice]+1;

AX:=Dice;
AY:=Cum_Dice[Dice];

Application.ProcessMessages;
Chart1.Series[0].AddXY(AX,AY,IntToStr(Dice),clTeeColor);

Statusbar1.SimpleText:=IntToStr(i);
end;

Chart1.Series[0].Clear;
for i:=1 to 6 Do
begin
Chart1.Series[0].AddXY(i,Cum_Dice[i],IntToStr(i),clTeeColor);
end;

Statusbar1.SimpleText:='描画完了';
-----------------

ところが、「リストのインデックスが範囲を超えています」というエラーが出てなかなか原因がつかめない。

Chart1.Series[0].****のあたりが原因なのはわかるが、何のリストだった???

結局、Chartの使い方を忘れていたのが原因。Chartのオブジェクトインスペクタで「SeriesList」を選択し、系列名でどのチャートを描くのかリストにあらかじめ登録しておかなかったためエラーが出ていた。

以前自分で作成していたプログラムをすっかり忘れている。
18:42  |  Delphi  |  TB(0)  |  CM(0)  |  EDIT  |  Top↑
2008.06/25(Wed)

ばけたんストラップ2

いろいろ考えるものだと関心する。今度は声がでるらしい。市場から消えてしまう前に
1個ぐらいは確保しておきたい。


http://item.rakuten.co.jp/sastore/grst2-b/
---------------------------------------
あの"ばけたんストラップ"がパワーアップ!!
新たな機能が搭載された 「ばけたんストラップ2」
ついに登場!!

ご存知の通り「ばけたん」は、
さまざまな空間エネルギーの影響をトリガーにした真性乱散発生装置を計測に使用しております。

「ばけたん」を使用しているお客様からのフィードバックを基に、
我々は「おばけ」が出現すると言われる様々なスポット において計測を行っていると、
時折不可解な計測結果を確認するケースが出てきました。

「これはおばけが我々に何らかのメッセージを伝えようとしているのでは?」
と仮定を立てた我々は、計測した空間エネルギーを独自のアルゴリズムにより
人間が聞き取れる音声に変換、再生することに成功しました。

こうして完成したのが「ばけたん2」です。
--------------------------------------------
14:40  |  超常現象  |  TB(0)  |  CM(0)  |  EDIT  |  Top↑
2008.06/24(Tue)

富田常雄の小説「姿三四郎」とDelphi本の復刊

富田常雄の小説「姿三四郎」。こんなおもしろい小説がいまは刊行されていないという事実に驚く。

NHKの大河ドラマにでもなれば、風向きが変わるのかもしれない。

ところで復刊ドットコムでは「Delphi 6 プログラミングバイブル」の復刊投票がはじまったらしい。
もともとはMastering Delphi6という洋書の翻訳本。そこそこ高いので発売当時は原書は
購入したものの翻訳は買わなかった。今では翻訳本はなかなか手に入らない。ただ原書は
今でも比較的簡単に手に入る。思えば、購入する方を間違えたのかもしれない。

どうせなら復刊よりも、もっと新しいバージョン、例えばMastering Delphi 7 (2003)や
Mastering Borland Delphi 2005 (2005)、Inside Delphi 2006 (2005)の翻訳新刊が
欲しいが、あの分厚さを考えると難しいところか。そもそもMastering Delphi6を見ただけ
でも翻訳しよう言うには気が遠くなるので、よく日本で出版された、翻訳者の方ご苦労様
というのが正しいのかもしれない。

なんだかTurbo Delphiの画面になかなかなじめず、今でもDelphi7でプログラミングして
いるので、当時の本でも十分に役立つ。復刊されたら購入してみたい。
それにしても新しいバージョンの方に馴染めないというけど、Delphiは正しい路線に
進んでいるのだろうか? ちょっと不安。
17:12  |  Delphi  |  TB(0)  |  CM(0)  |  EDIT  |  Top↑
2008.06/23(Mon)

TP Math (Mathematical library for Turbo Pascal)のリンクが消えた

Delphiの統計計算で行き着いた堀先生のHP
http://www.ec.kagawa-u.ac.jp/~hori/delphistat/index.html

ここでTP Math (Mathematical library for Turbo Pascal)が紹介され、「この数値計算ライブラリは充実している。しかもfreeware宣言している。
統計の分布計算も多く含んでいる。ただしturbo pascal ですが、そのままで分布計算をすることも可能です。正規分布,t分布、F分布、カイ2乗分布などがあるので代表的なものはこれですむ。 」とあるが
リンクが切れている。

インターネットにあると、ついつい、いつまでも公開されているような錯覚に陥るが、これは手元に置いておくべきものだったと今さらながら後悔。困った。
16:40  |  Delphi  |  TB(0)  |  CM(0)  |  EDIT  |  Top↑
2008.06/21(Sat)

Arrayとdynamic arrayには互換性がありませんというエラー

Delphiで使える統計ルーチン。Mathをunitに加えておくと使える。

StatistiClasses ルーチン

Mean 関数は,配列内のすべての値の平均を返します。
MeanAndStdDev 手続きは,配列要素の平均と標準偏差を計算します。
MomentSkewKurtosis 手続きは,平均,分散,ひずみ,および尖度を計算します。
Norm 関数はユークリッドの「L-2」ノルムを返します。
PopnStdDev 関数は母集団の標準偏差を計算します。
PopnVariance 関数は母集団の分散を計算します。
StdDev 関数は,配列にある要素の標本標準偏差を返します。
Sum 関数は,配列にある要素の合計を返します。
SumInt 関数は,整数配列にある要素の合計を返します。
SumOfSquares 関数は,データ配列の値の 2 乗和を返します。
SumsAndSquares 手続きは,配列の値の合計と 2 乗和を返します。
TotalVariance 関数は,配列の値から統計的分散を返します。
Variance 関数は,配列のデータから統計的な標本分散を計算します。

使ってみると"Array"と"dynamic array"には互換性がありませんというエラーが出た。

てっきり、動的配列には使えず、静的配列にしか利用できないのかと思ったが、違った。
どちらにも使える。

エラーの原因は2つ。ひとつは2次元配列をそのまま使おうとしたこと。よく考えれば当たり前だが、これらの関数は一次元配列を前提としている。

もう1つは変数の定義で
Data_Mean:array of Extended;//平均値が入った配列
としていたこと。

Data_Mean:array of Double;//平均値が入った配列
のようにDoubleにしないといけない。
19:53  |  Delphi  |  TB(0)  |  CM(0)  |  EDIT  |  Top↑
2008.06/20(Fri)

SUSE11.0

OPEN SUSE 11.0が出たらしい。

さっそくインストールしてと言いたいところだが、ダウンロードも大変だし、OSを換えるのはかなりやる気のエネルギーがないとできない。当分は様子を眺めることにする。

一太郎が動けばよいのだが。
22:05  |  コンピュータ  |  TB(0)  |  CM(0)  |  EDIT  |  Top↑
2008.06/20(Fri)

FireFox3に脆弱性

FireFox3に脆弱性が見つかったらしい。

こと、コンピュータ関係に関しては新しいものは危険ということかと思ったが、FireFox2にも共通の脆弱性ということなので、ダウンロードしてインストールしたのは間違いということでもないようだ。

動作に関しては速くなった実感がある。

ただ、他のソフトも含めて非常に反応が遅くなる場合があるのだが、これがFireFox3が原因なのか、それ以外が原因なのかよくわからない。今のところは満足。
22:03  |  コンピュータ  |  TB(0)  |  CM(0)  |  EDIT  |  Top↑
2008.06/19(Thu)

FireFox3

FireFox3が2日も前に公開されていた。さっそく、ダウンロードしようとしたが、どうも混み合っていてうまくいかない。ニュース通りなら、相当に高速化されているはずだが。

かわりにこんなおもしろいサイトを見つけた。
http://tomoshibi.mozilla.jp/
15:19  |  コンピュータ  |  TB(0)  |  CM(0)  |  EDIT  |  Top↑
2008.06/17(Tue)

ホムンクルスの宇城氏

2003年のテレビ番組「探検!ホムンクルス」に登場した空手家の宇城憲治氏の動画がYouTubeにあったはずと思い、検索してみるがすでにない。

腕相撲時の筋肉反応やボクシングのパンチの見切り、アメフトのタックルを止める映像と盛りだくさんだったのだが、インターネットだからいつか手に入ると甘く見ていると痛い目にあう。いまさら、ビデオやDVDが手に入るはずもなく、再放送もありそうにないので貴重な映像が失われたということか。
15:22  |  超常現象  |  TB(0)  |  CM(1)  |  EDIT  |  Top↑
2008.06/17(Tue)

Delphi:文字、データの入力

Delphiでの文字やデータの入力方法。

利用していないとすぐに忘れてしまう。

InputBox('ボックスのフォーム名','メッセージ文字列','ボックスに最初から表示しておく文字列');

 Ex. Edit1.Text:=InputBox('データ入力ボックス','数字を入力してください。','');


InputQuery('ボックスのフォーム名','メッセージ文字列',入力された文字列変数);

 Ex. M:=InputQuery('データ入力ボックス','数字を入力してください',DataVar);

OKボタンが押されると「M」には0以外の数が、「キャンセル」が押されると0が入る。
14:48  |  Delphi  |  TB(0)  |  CM(0)  |  EDIT  |  Top↑
2008.06/17(Tue)

StringGrid上のセルをダブルクリックして、画面を出す方法

StringGrid上のセルをダブルクリックして、画面を出す方法。以下で発見。

http://homepage1.nifty.com/MADIA/delphi/delphi_bbs/200611/200611_06110069.html

何がやりたいかというと、StringGridの固定行をクリックして、固定行の内容を変更したかった。しかし、固定行はそのままではマウスでクリックしても編集不可で、いろいろ方法を探したものの面倒なコードを書かなくてはならないケースが多くて困っていた。

少々、いじって固定行ならメッセージを出すように

procedure TForm1.StringGrid1DblClick(Sender: TObject);
var
sp, cp: TPoint;
C, R: Integer;
begin
// マウスカーソルのスクリーン座標を取得
GetCursorPos(sp);
// スクリーン座標をクライアント座標に変換
cp:= StringGrid1.ScreenToClient(sp);
// セルの番地を取得
StringGrid1.MouseToCell(cp.x, cp.y, C, R);
// 固定セルでダブルクリックが発生した場合は画面呼出
if (C = StringGrid1.FixedCols) and (R = StringGrid1.FixedRows) then
ShowMessage('変数の定義を行います。');
end;
14:22  |  Delphi  |  TB(0)  |  CM(0)  |  EDIT  |  Top↑
2008.06/14(Sat)

Delphi学習用の良いWeb教材

Delphi学習用の良いWeb教材を発見

http://www.wakhok.ac.jp/~tetsuo/programing/Delphi/

21:43  |  Delphi  |  TB(0)  |  CM(0)  |  EDIT  |  Top↑
2008.06/14(Sat)

保存、開くのDialogでファイル拡張子でフィルター

DelphiのSaveDialogやOpenDialogで拡張子でファイル選択を絞るよう表示したいときにはSaveDialogをマウスで選択して、オブジェクトインスペクタの「Filter」を指定する。

ファイル名に任意のテキスト、フィルターに「*.ini」のように指定する。


----------------------
ファイル名    フィルター
----------------------
画像ファイル   *.jpg
全ファイル     *.*
----------------------

プログラムのコードでフィルターを
SaveDialog1.Filter:='*.DAT';
のように指定しても表示されなかった。

よく考えるとSaveDialog1がすでに表示された後に指定していることになっていたので
表示されないのは当然。表示以前に指定が必要だった。
16:24  |  Delphi  |  TB(0)  |  CM(0)  |  EDIT  |  Top↑
2008.06/14(Sat)

SaveDialog OpenDialog

SaveDialog や OpenDialogを使うとき、

---------------------------
if SaveDialog1.Execute then
begin

end;
---------------------------
としていたが、

---------------------------
if (SaveDialog1.Execute = TRUE) then
begin

end;
---------------------------
とすれば、ダイアログが開いた状態でキャンセルボタンを押してもエラー
にならないことを
http://www.wakhok.ac.jp/~tetsuo/programing/Delphi/text/chap_c/pb_c02.html
で学ぶ。
16:18  |  Delphi  |  TB(0)  |  CM(2)  |  EDIT  |  Top↑
2008.06/14(Sat)

九天社が自己破産

データ解析R関連の本をたくさん出していた九天社が自己破産。

これらの本はどうなるんだろうか。

関連情報を検索していて思うのは、「R」というのは良くないということ。なんといっても検索しにくい。もともと「S」のクローンとして作ったので同じく1文字にしたのかもしれないが、固有のネーミングをしておくべき。たぶん、開発者達もそう感じていると思うが。
13:40  |  統計  |  TB(0)  |  CM(0)  |  EDIT  |  Top↑
2008.06/12(Thu)

DualListdlg.DstList.Items

DelphiのDualListdlg.DstList.ItemsはTstringsオブジェクトでリストの内容を表す。
個々の内容には[番号]でアクセスできる。

例えば、
Edit1.text:=DualListDlg.DstList.Items[0];
とすれば変数選択後のボックスにある変数リストの最初の変数名がEdit1に表示される。

もちろん、DstListをSrcListとすれば、選択前の選択ボックスのリストを取り出せる。
18:47  |  Delphi  |  TB(0)  |  CM(0)  |  EDIT  |  Top↑
2008.06/05(Thu)

青春の高校数学1国内発売

以前に書き込んだ『青春の高校数学1』だが、当時は海外に発注しないと手に入らなかった。

ところが、コメントがあり、国内発売されたとのこと。

青春の高校数学1
方手雅塚
ISBN978-4-902950-78-6 C7341
価 格:1600円(税抜)
仕 様:A4判/112ページ
発売日:2008年6月
発 行:オンブック

http://www.ossanworld.com/main.html

さっそく注文。
15:11  |  教育  |  TB(0)  |  CM(0)  |  EDIT  |  Top↑
2008.06/03(Tue)

佐川の鍛錬 大東流不世出の達人

月刊 秘伝 2008年 6月号 5/14 発売号 
特集 佐川の鍛錬 大東流不世出の達人 佐川幸義の基盤養成

知らない間にこんな特集が出ていた。あわてて書店をいくつも回って最後の1冊を手にいれることができた。

http://d.hatena.ne.jp/tanglou/searchdiary?word=*%5B%C3%A3%BF%CD%A4%CB%B2%F1%A4%A6%5D

達人に会った人のブログを見つけた。

人生は一期一会。達人と出会えたありがたさはその時にはわからないものなのかもしれない。
19:22  |  超常現象  |  TB(0)  |  CM(0)  |  EDIT  |  Top↑
2008.06/03(Tue)

DelphiのDualListDlg

Delphiで変数を選択させて、処理するような方法を考えている。いちばんよさそうなのはDualListDlgを使うこと。

Delphiのメニュー「ファイル」「新規作成」「その他」「フォーム」タブ、「デュアルリストボックス」を選択すると見た目の良い選択ボックスが現れる。

ここからが問題。

あるボタンをクリックすると、この選択ボックスが現れるようにしたい。

procedure TForm1.N2Click(Sender: TObject);
//変数選択ボックス
var
Var1:String;
begin
 DualListDlg.Visible:=true;//変数選択ボックス表示
end;

ここまでは簡単。次に選択された項目を選び出して処理したい。

DualListDlg.SrcList.Items.Add(StringGrid1.Cells[1,0]);

こうすると選択元の項目に何かを加えることができるようだ。

DualListDlg.DstList.Items.Add(StringGrid1.Cells[1,0]);

のようにListの選択元はSrcList、選択後はDstListのようだ。
前者はSource Listの略で、後者はDestination Listの略だろうか。

使い方を知ろうとしてネットを検索するも、DualListDlgの情報や使用例はほとんど見つからない。あってもなぜか中国語。昔のNifty Serveのデータを漁ったが見あたらない。

Delphiは入門から中級の初めあたりまでは情報豊富でよいのだが、そこからが大変なのかもしれない。
17:17  |  Delphi  |  TB(0)  |  CM(0)  |  EDIT  |  Top↑
2008.06/03(Tue)

ランボー3

映画「ランボー3」を見てきた。

前回より、20年ぶりくらいの続編という。インディジョーンズも19年ぶりの続編というので、近頃この手の続編が多い気がする。

ランボーを演じるシルベスタースタローンは61歳ということだが、相変わらずすごい体を維持している。少し前にロッキーを撮影するためにたぶん体作りをしただろうから、ついでにランボーも写してしまえとなったのかもしれない。

映画はかなりグロテスクなシーンが多い。ランボーは例によって最後には大量虐殺をするので、敵役は相当な悪と描かなくては後味が悪くなる。というわけで、これでもかこれでもかと相手がどれほど残酷で悪いか、善良な人を虐殺しているのかを描くことになる。

が、これもやり過ぎるとどうかという話で虐殺も死体もリアルすぎて引いてしまう映像ができあがる。ということでRの指定になっていた。ランボーというと大作というイメージがあったが、なんだか今回のはB級風の感じを受けた。

日本ではミャンマーと呼んでいるけど、映画ではビルマと呼んでいた。軍事政権が名のっているのがミャンマーであり、ビルマをアイデンティティとしている人たちはたくさんいるのだろうが、アメリカではビルマが普通の呼び方になっているのかとふと思った。
16:56  |  未分類  |  TB(0)  |  CM(0)  |  EDIT  |  Top↑
 | BLOGTOP |