<   2010年 03月 ( 36 )   > この月の画像一覧
[苦言] 性根入れなおさないけん
どーもボキです。

注意!ここから先は、苦言が含まれます。
[PR]
by yozda | 2010-03-25 23:43 | SE♂日誌 | Trackback | Comments(2)
満開の桜
a0021757_23333258.jpg

a0021757_22501246.jpg

a0021757_22501251.jpg

a0021757_22501292.jpg

桜の花のスタンプを使って作成。
園で似たようなことやったんだろうけどコウタロウ一人で作成。
[PR]
by yozda | 2010-03-23 22:50 | 暮らし | Trackback | Comments(0)
33歳の誕生日会
どーもボキです。

誕生日会をしてもらった。ケーキについてるプレートは、コウタロウに食われた。
後ろにボンヤリ写ってるチョコレートケーキも板チョコだけ食ってから、嫁のショートケーキと取り替えてた。

チョコ食いたいばっかり。
a0021757_21233135.jpg

[PR]
by yozda | 2010-03-22 21:25 | 暮らし | Trackback | Comments(2)
[Delphi] スクリプト言語を利用し、ユーザによる処理実装を実現する方法 その4 : サンプルプログラム3
どーもボキです。

ScriptControl。知恵絞りあげて実装すりゃ相当使えるわ、コレは。

DelphiとVBScriptとの連携、VBScriptの関数に値渡したり、戻り値を受け取ったりするにあるように、
VBScript関数への引数や、VBScript関数の戻り値でデータをやり取りするのは、とても面倒。

正攻法でVBScriptと連携させる場合、つまり VBScript関数の引数でデータを渡す、戻りで処理結果を得る場合、
まず、引数として渡すデータはVariant型に変換する必要がある。配列データのやりとりとなるとVariant配列への変換がかなり面倒だ。
また、戻り値で配列を受け取る場合も、Variant配列で受け取る必要がある。
加えて、引数の数によってDelphi側の呼び出し処理の変更が必要。
その上、参照渡しは使えない。正確には、参照渡し(ByRef)での引数をVBScript内で変更しても、Delphi側の変数には反映されない。
これらから、VBScript関数への引数&VBScript関数からの戻り値 を使っての連携はかなり使い勝手が悪い。つうか、使い物にならない。

そこで、DelphiとVBScriptとのデータ中継にCoClassを使う。
Delphi ⇔ CoClass ⇔ VBScript ってな感じに。こうやることで、VBScriptとの連携が超簡単になる。やり方は以下
1.CoClassのPublicメンバにDelphi ⇔ VBScript間でやり取りしたいデータ用の変数を定義する
2.タイプライブラリにCoClassのPublicメンバを処理するプロパティ・メソッドを定義する
3.ScriptControl.AddObjectで、CoClassを指定する
Delphiから CoClass の Publicメンバに必要なデータを渡し、
VBScriptからは、CoClassのプロパティ・メソッドで渡されたデータにアクセスする。
Delphi ~ VBScriptの間を、CoClassが取り持つため、Variantへの変換は不要。
引数の数も考慮しないくていい。
(その代わり必要なデータは、CoClassに渡し、VBScriptからアクセスできるようにする必要がある)
CoClassにデータポインタを渡しておけば、VBScriptでの編集がそのままDelphi上のデータに反映される。

自前でスクリプト処理をサポートさせる場合は、逆ポーランド記法処理でスクリプトを解読したり、エラーチェックをしたりと超面倒。
ScriptControlを使えば、構文の解釈&エラーチェックはVBScriptエンジンがやってくれる。
VBScriptでの記述が出来るため、かなり複雑な処理も実装可能。超便利であり、超強力。試作ロジックの検証とかに使えそう。

サンプルプログラム

a0021757_1515247.gif
実行イメージ : 元データ(青)に対しての、スクリプト処理結果(赤)
移動平均処理で、赤グラフが平滑化されていることがわかる

uFM_Main.pasのソース (ScriptControl呼び出し側)
unit uFM_Main;

interface

uses
uAutoObject,
MSScriptControl_TLB,
Math,
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, TeeProcs, TeEngine, Chart, ExtCtrls, OleCtrls, Series;

type
TFM_Main = class(TForm)
Button: TButton;
Panel: TPanel;
Chart: TChart;
Memo: TMemo;
Splitter: TSplitter;
Line: TFastLineSeries;
ScriptControl: TScriptControl;
Line_out: TFastLineSeries;
procedure ButtonClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
Data : TFltArr;
FCoClass : TExposingObjectsDemo;
public
{ Public declarations }
end;

var
FM_Main: TFM_Main;

implementation

uses
ActiveX;

{$R *.DFM}

{ TFM_Main }

procedure TFM_Main.FormCreate(Sender: TObject);
var
i : Integer;
begin
Memo.Align := alClient;

// サンプルデータ
for i := 0 to High(Data) do begin
Data[i] := Sin(2*PI*i/Length(Data)) + Random/7;
Line.AddXY(i,Data[i]);
end;

FCoClass := TExposingObjectsDemo.Create;
FCoClass.PData := @Data; // CoClassにデータのポインタを渡す
ScriptControl.AddObject('CoClass', FCoClass, False); // ScriptControlにCoClassをAddする
ScriptControl.SitehWnd := Self.Handle;
end;


procedure TFM_Main.ButtonClick(Sender: TObject);
var
i : Integer;
begin
Line_out.Clear;
for i := 0 to High(Data) do begin
FCoClass.DataIndex := i; // CoClassに現在のデータインデックスを渡す
ScriptControl.ExecuteStatement(Memo.Lines.Text); // VBScriptを実行
Line_out.AddXY(i,Data[i]); // VBScriptでの処理結果でグラフ描画
end;
end;


end.

uAutoObject.pasのソース (Delphi ~ VBScriptのデータ中継、VBScriptからのDelphiデータアクセス)
unit uAutoObject;

interface

uses
ExposingObjects_TLB,
ComObj, ActiveX, StdVcl, Forms;

type
PFltArr = ^TFltArr;
TFltArr = Array[0..99] of Single;

type
TExposingObjectsDemo = class(TAutoObject, IExposingObjectsDemo)
public
DataIndex : Integer;
PData : PFltArr;
protected
function Get_Data(Index: Integer): OleVariant; safecall;
procedure Set_Data(Index: Integer; Data: OleVariant); safecall;
{ Protected declarations }
end;

implementation

uses ComServ, uFM_Main;

// Dataプロパティ Get
function TExposingObjectsDemo.Get_Data(Index: Integer): OleVariant;
begin
Result := PData[DataIndex + Index];
end;

// Dataプロパティ Set
procedure TExposingObjectsDemo.Set_Data(Index: Integer; Data: OleVariant);
begin
PData[DataIndex + Index] := Data;
end;


initialization
TAutoObjectFactory.Create(ComServer, TExposingObjectsDemo, Class_ExposingObjectsDemo, ciMultiInstance, tmApartment);
end.

[PR]
by yozda | 2010-03-22 15:03 | プログラミング | Trackback | Comments(0)
コウタロウとユウカ
どーもボキです。

二人とも最高にかわいい。
かわゆす。
a0021757_13534432.jpg
a0021757_13535083.jpg

[PR]
by yozda | 2010-03-21 13:54 | 暮らし | Trackback | Comments(0)
三ツ城古墳公園で遊んだ
a0021757_14351578.jpg

a0021757_14351593.jpg

遊具が新しくなってて(写真は撮り忘れた)、それで一回だけ遊んだ。
あとは古墳の周りを走ったりした。

あまりに暑かったから、途中から二人とも肌着になったね。
温度計は23℃!
[PR]
by yozda | 2010-03-20 14:35 | 暮らし | Trackback | Comments(0)
玄関に飾ったラナンキュラスがあまりにキレイだったので
どーもボキです。

ラナンキュラスっていうらしい。花びらが幾重にも重なってとてもキレイ。
暮らしに植物があると、癒されるねぇ。
a0021757_124536.jpg

[PR]
by yozda | 2010-03-20 12:04 | 暮らし | Trackback | Comments(0)
ハートキャッチプリキュアの塗り絵
どーもボキです。

コウタロウがハートキャッチプリキュアの塗り絵をがんばって仕上げた。
超大作だ。

顔が赤と青になって、昔のアニメの敵キャラみたい。
名前おもいだせん。戦艦ヤマトだったっけ。
a0021757_272387.jpg

[PR]
by yozda | 2010-03-20 02:07 | 暮らし | Trackback | Comments(2)
[MHP3] MHP3 キタコレ
どーもボキです。


キタね。コレは。年末発売らしい。

これまでの武器は全部登場。ボスキャラもこれまでのモンハンのイイとこ取り。
お供アイルーは2匹まで。

公式サイト ← どうみても、風来のシレン

これは買い。死蔵しているWiiのMH3をやってみようかって気になったよ。
[PR]
by yozda | 2010-03-20 01:09 | ゲーム | Trackback | Comments(0)
[ペパクラ] カトキ版 ガンダムのペパクラ、こりゃまさに神
どーもボキです。

a0021757_23542892.jpg
juneの工作と物欲日記で紹介されてるペーパークラフト。
カトキデザインを再現しているだけあって、超カッコイイ。
多少は可動するみたいだし。こだわる人は、とことんやるね。
まさに紙、もとい神。

キャラホビっていうイベントでのみでの限定販売。このZZは6000円。
A4 40枚の超大作。完成すると、33cm。1/60スケールになるらしい。でかい。

でも、こんなの買ってもよう作らんでよ。
[PR]
by yozda | 2010-03-17 23:58 | 物・モノ・もの | Trackback | Comments(4)