<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3868338865989133986</id><updated>2011-12-17T10:56:03.544+09:00</updated><category term='Tiburon感想'/><category term='思いつき'/><category term='へなちょこTips XE'/><category term='備忘録'/><category term='へなちょこTips'/><category term='ちょっとしたデモ XE'/><category term='動画'/><category term='お詫び'/><category term='勝手な意見'/><category term='ちょっとしたデモ XE2'/><category term='なぜDelphiはつかわれないのか'/><category term='2010'/><category term='ちょっとした疑問'/><category term='お礼'/><category term='その他'/><category term='おばか'/><category term='2007'/><category term='昔の思い出'/><category term='もどき'/><category term='CodeGearブログWatch'/><title type='text'>Delphiッこ倶楽部東京出張所</title><subtitle type='html'>CoodGearさんおよびDelphiに関することを
適当に書きます。
News Sourceのほとんどを他のブログに依存している他力本願ブログです。</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default?start-index=101&amp;max-results=100'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>173</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-7095005721237511385</id><published>2011-09-24T12:03:00.003+09:00</published><updated>2011-09-24T12:20:39.033+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='備忘録'/><category scheme='http://www.blogger.com/atom/ns#' term='ちょっとしたデモ XE2'/><title type='text'>LiveBindingを試してみる。</title><content type='html'>DelphiXE2のLiveBindingの機能を使って、現在時刻を更新する処理を&lt;div&gt;&lt;a href="http://docwiki.embarcadero.com/RADStudio/ja/%E3%83%81%E3%83%A5%E3%83%BC%E3%83%88%E3%83%AA%E3%82%A2%E3%83%AB%EF%BC%9ALiveBinding_%E3%82%92%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%81%A7%E4%BD%BF%E7%94%A8%E3%81%99%E3%82%8B"&gt;チュートリアル&lt;/a&gt;を参考作ってみた。&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;処理としては、時刻が更新されると、登録した通知先（作った例場合はフォーム）の&lt;/div&gt;&lt;div&gt;表示を更新する処理になっています。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;以下ソース&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;まずは、時計のソース、タイマーを使って定周期で時刻を更新し、登録先の&lt;/div&gt;&lt;div&gt;更新通知を行っています。&lt;/div&gt;&lt;div&gt;また、変更通知先を登録する処理を書いています。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="delphi" name="code"&gt;unit Unit4;&lt;br /&gt;&lt;br /&gt;interface&lt;br /&gt;&lt;br /&gt;uses&lt;br /&gt; System.SysUtils, System.Classes,Vcl.ExtCtrls, Data.Bind.EngExt,&lt;br /&gt; Vcl.Bind.DBEngExt, System.Rtti, System.Bindings.Outputs, Vcl.Bind.Editors,&lt;br /&gt; Data.Bind.Components,&lt;br /&gt; System.Bindings.EvalProtocol,&lt;br /&gt; System.Bindings.Expression,&lt;br /&gt; System.Bindings.ObjEval,&lt;br /&gt; System.Bindings.Helper;&lt;br /&gt;&lt;br /&gt;type&lt;br /&gt; TDataModule4 = class(TDataModule)&lt;br /&gt;   FTimer: TTimer;&lt;br /&gt;   procedure FTimerTimer(Sender: TObject);&lt;br /&gt;   procedure DataModuleCreate(Sender: TObject);&lt;br /&gt;   procedure DataModuleDestroy(Sender: TObject);&lt;br /&gt; private&lt;br /&gt;   { Private 宣言 }&lt;br /&gt;   FNowString : String;&lt;br /&gt;   BindingExpression1: TBindingExpression;&lt;br /&gt; public&lt;br /&gt;   procedure AddBindingList(const InputScopes: array of IScope; const BindExprStr: string; const OutputScopes: array of IScope; const OutputExpr: string);&lt;br /&gt;   published&lt;br /&gt;   { Public 宣言 }&lt;br /&gt;   property NowString : String read FNowString;&lt;br /&gt; end;&lt;br /&gt;&lt;br /&gt;var&lt;br /&gt; DataModule4: TDataModule4;&lt;br /&gt;&lt;br /&gt;implementation&lt;br /&gt;&lt;br /&gt;{%CLASSGROUP 'Vcl.Controls.TControl'}&lt;br /&gt;&lt;br /&gt;uses Unit1;&lt;br /&gt;&lt;br /&gt;{$R *.dfm}&lt;br /&gt;&lt;br /&gt;procedure TDataModule4.AddBindingList(const InputScopes: array of IScope;&lt;br /&gt; const BindExprStr: string; const OutputScopes: array of IScope;&lt;br /&gt; const OutputExpr: string);&lt;br /&gt;begin&lt;br /&gt;&lt;br /&gt; BindingExpression1 :=  TBindings.CreateManagedBinding(&lt;br /&gt;       InputScopes,&lt;br /&gt;       BindExprStr,&lt;br /&gt;       OutputScopes,&lt;br /&gt;       OutputExpr,&lt;br /&gt;       nil);&lt;br /&gt;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;procedure TDataModule4.DataModuleCreate(Sender: TObject);&lt;br /&gt;begin&lt;br /&gt; //BindScope1.Active := true;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;procedure TDataModule4.DataModuleDestroy(Sender: TObject);&lt;br /&gt;begin&lt;br /&gt; //BindScope1.Active := false;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;procedure TDataModule4.FTimerTimer(Sender: TObject);&lt;br /&gt;begin&lt;br /&gt; FNowString := DateTimeToStr(Now);&lt;br /&gt; TBindings.Notify(Self, 'NowString');&lt;br /&gt;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;end.&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;次に、時計を表示するソース。比較のためにポーリング処理で上記のソースのプロパティを使って&lt;br /&gt;タイムスタンプを更新する処理もあります。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="delphi" name="code"&gt;unit Unit1;&lt;br /&gt;&lt;br /&gt;interface&lt;br /&gt;&lt;br /&gt;uses&lt;br /&gt; Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,&lt;br /&gt; Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, Vcl.StdCtrls,&lt;br /&gt; Data.Bind.EngExt, Vcl.Bind.DBEngExt, System.Rtti, System.Bindings.Outputs,&lt;br /&gt; Unit4,&lt;br /&gt; System.Bindings.Expression,&lt;br /&gt; System.Bindings.ObjEval,&lt;br /&gt; System.Bindings.Helper,&lt;br /&gt; Vcl.Bind.Editors, Data.Bind.Components;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;type&lt;br /&gt; TForm1 = class(TForm)&lt;br /&gt;   Label1: TLabel;&lt;br /&gt;   Label3: TLabel;&lt;br /&gt;   Timer1: TTimer;&lt;br /&gt;   Label2: TLabel;&lt;br /&gt;   Label4: TLabel;&lt;br /&gt;   procedure Timer1Timer(Sender: TObject);&lt;br /&gt;   procedure FormCreate(Sender: TObject);&lt;br /&gt;   procedure FormClose(Sender: TObject; var Action: TCloseAction);&lt;br /&gt; private&lt;br /&gt;   { Private 宣言 }&lt;br /&gt;   FSakaClock : TDataModule4;&lt;br /&gt; public&lt;br /&gt;   { Public 宣言 }&lt;br /&gt; end;&lt;br /&gt;&lt;br /&gt;var&lt;br /&gt; Form1: TForm1;&lt;br /&gt;&lt;br /&gt;implementation&lt;br /&gt;&lt;br /&gt;{$R *.dfm}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);&lt;br /&gt;begin&lt;br /&gt; //FSakaClock.Free;&lt;br /&gt; FSakaClock.Free;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;procedure TForm1.FormCreate(Sender: TObject);&lt;br /&gt;begin&lt;br /&gt; FSakaClock := TDataModule4.Create(Self);&lt;br /&gt; FSakaClock.AddBindingList(&lt;br /&gt;      { inputs }&lt;br /&gt;     [TBindings.CreateAssociationScope([&lt;br /&gt;       Associate(FSakaClock, 'I1')&lt;br /&gt;     ])],&lt;br /&gt;     'I1.NowString',&lt;br /&gt;     { outputs }&lt;br /&gt;     [TBindings.CreateAssociationScope([&lt;br /&gt;       Associate(Label3, 'O1')&lt;br /&gt;     ])],&lt;br /&gt;     'O1.Caption');&lt;br /&gt;&lt;br /&gt; //FSakaClock := TSakaClock.Create(Self);&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;procedure TForm1.Timer1Timer(Sender: TObject);&lt;br /&gt;begin&lt;br /&gt; Label1.Caption := FSakaClock.NowString;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;end.&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-7095005721237511385?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/7095005721237511385/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=7095005721237511385' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/7095005721237511385'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/7095005721237511385'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2011/09/livebinding.html' title='LiveBindingを試してみる。'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-645105972495151502</id><published>2011-08-17T20:56:00.002+09:00</published><updated>2011-08-17T21:01:50.255+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='備忘録'/><category scheme='http://www.blogger.com/atom/ns#' term='ちょっとしたデモ XE'/><title type='text'>CPUのコア数を数える。</title><content type='html'>&lt;a href="http://docwiki.embarcadero.com/VCL/ja/System.CPUCount"&gt;Delphiのドキュメントによれば、System.CPUCount変数&lt;/a&gt;を参照すればCPUのコア数が&lt;br /&gt;表示できるようだ。&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;たとえば、&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;pre class="delphi" name="code"&gt;Label1.Caption := IntToStr(System.CpuCount)&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;でラベルにCPUのコア数が表示できる。&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;自分のPCで試したけど、シングルコアのCPUなので&lt;/div&gt;&lt;div&gt;当然のことながら1と表示された。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-645105972495151502?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/645105972495151502/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=645105972495151502' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/645105972495151502'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/645105972495151502'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2011/08/cpu.html' title='CPUのコア数を数える。'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-3576353394440896932</id><published>2011-07-07T23:36:00.000+09:00</published><updated>2011-07-07T23:36:15.486+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='備忘録'/><category scheme='http://www.blogger.com/atom/ns#' term='ちょっとしたデモ XE'/><title type='text'>指定したウインドウを最前面にもってくる</title><content type='html'>VBAから指定したアプリが起動してない場合は起動し、既に起動済みの場合は、最前面に持ってくる&lt;br /&gt;という処理が必要になったので、Delphiで作成してみた。&lt;br /&gt;&lt;br /&gt;以下、指定したアプリを前面に持ってくるサンプル。&lt;br /&gt;&lt;br /&gt;&lt;pre class="delphi" name="code"&gt;procedure TForm1.Button1Click(Sender: TObject);&lt;br /&gt;unit Unit1;&lt;br /&gt;&lt;br /&gt;interface&lt;br /&gt;&lt;br /&gt;uses&lt;br /&gt;  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,&lt;br /&gt;  Dialogs, StdCtrls, ExtCtrls;&lt;br /&gt;&lt;br /&gt;type&lt;br /&gt;  TForm1 = class(TForm)&lt;br /&gt;    LabeledEdit1: TLabeledEdit;&lt;br /&gt;    Button1: TButton;&lt;br /&gt;    procedure Button1Click(Sender: TObject);&lt;br /&gt;  private&lt;br /&gt;    { Private 宣言 }&lt;br /&gt;  public&lt;br /&gt;    { Public 宣言 }&lt;br /&gt;  end;&lt;br /&gt;&lt;br /&gt;var&lt;br /&gt;  Form1: TForm1;&lt;br /&gt;&lt;br /&gt;implementation&lt;br /&gt;Uses JclSysInfo;&lt;br /&gt;&lt;br /&gt;{$R *.dfm}&lt;br /&gt;function AllowSetForegroundWindow(dwProcessID: Cardinal): BOOL; stdcall; external 'user32.DLL';&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;procedure TForm1.Button1Click(Sender: TObject);&lt;br /&gt;var&lt;br /&gt;  ProcessList : TStringList;&lt;br /&gt;  i : Integer;&lt;br /&gt;  Pid : Cardinal;&lt;br /&gt;  Wnd: THandle;&lt;br /&gt;begin&lt;br /&gt;&lt;br /&gt;  ProcessList := TStringList.Create;&lt;br /&gt;  try&lt;br /&gt;    //起動するアプリは、自前のものではないので&lt;br /&gt;    //プロセスがいるかどうかは、プロセスのリストを総当りで&lt;br /&gt;    //確認&lt;br /&gt;    JclsysInfo.RunningProcessesList(ProcessList,true);&lt;br /&gt;    i := -1;&lt;br /&gt;    ProcessList.Find(LabeledEdit1.Text,i);&lt;br /&gt;    if i &gt;= 0 then&lt;br /&gt;    begin&lt;br /&gt;      Pid := GetPidFromProcessName(ProcessList.Strings[i]);&lt;br /&gt;      Wnd :=GetMainAppWndFromPid(Pid);&lt;br /&gt;      //いつぞやのバージョンのwindowsから前面に出す許可を&lt;br /&gt;      //しておくことが必要&lt;br /&gt;      AllowSetForegroundWindow(Pid);&lt;br /&gt;      //最小化されているのでアイコンからもとのサイズに&lt;br /&gt;      //戻す&lt;br /&gt;      if IsIconic(Wnd) then&lt;br /&gt;      begin&lt;br /&gt;        OpenIcon(Wnd);&lt;br /&gt;      end&lt;br /&gt;      else&lt;br /&gt;      begin&lt;br /&gt;        //指定したウインドウを前面に&lt;br /&gt;        SetForegroundWindow(wnd);&lt;br /&gt;        //場合によっては、AttachThreadInputで&lt;br /&gt;        //前面に出したいウインドのスレッドにあタッチが必要&lt;br /&gt;      end;&lt;br /&gt;    end;&lt;br /&gt;&lt;br /&gt;  finally&lt;br /&gt;  　ProcessList.Free;&lt;br /&gt;　　end;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;end.&lt;br /&gt;&lt;br /&gt;&lt;/Pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-3576353394440896932?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/3576353394440896932/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=3576353394440896932' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/3576353394440896932'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/3576353394440896932'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2011/07/blog-post_07.html' title='指定したウインドウを最前面にもってくる'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-3325074906773713900</id><published>2011-07-07T22:59:00.000+09:00</published><updated>2011-07-07T22:59:53.481+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='備忘録'/><category scheme='http://www.blogger.com/atom/ns#' term='ちょっとしたデモ XE'/><title type='text'>プロセスリストを表示する（その２）</title><content type='html'>Project jediのJclのJclSysInfoユニットにある。RunningProcessesList関数を使用すると&lt;br /&gt;プロセスリストが簡単にとれます。&lt;br /&gt;&lt;br /&gt;以下、サンプル&lt;br /&gt;&lt;br /&gt;&lt;pre class="delphi" name="code"&gt;procedure TForm1.Button1Click(Sender: TObject);&lt;br /&gt;unit Unit1;&lt;br /&gt;&lt;br /&gt;interface&lt;br /&gt;&lt;br /&gt;uses&lt;br /&gt;  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,&lt;br /&gt;  Dialogs, StdCtrls, ExtCtrls;&lt;br /&gt;&lt;br /&gt;type&lt;br /&gt;  TForm1 = class(TForm)&lt;br /&gt;    LabeledEdit1: TLabeledEdit;&lt;br /&gt;    Button1: TButton;&lt;br /&gt;    ListBox1: TListBox;&lt;br /&gt;    procedure FormCreate(Sender: TObject);&lt;br /&gt;  private&lt;br /&gt;    { Private 宣言 }&lt;br /&gt;  public&lt;br /&gt;    { Public 宣言 }&lt;br /&gt;  end;&lt;br /&gt;&lt;br /&gt;var&lt;br /&gt;  Form1: TForm1;&lt;br /&gt;&lt;br /&gt;implementation&lt;br /&gt;Uses JclSysInfo;&lt;br /&gt;&lt;br /&gt;{$R *.dfm}&lt;br /&gt;&lt;br /&gt;procedure TForm1.FormCreate(Sender: TObject);&lt;br /&gt;var&lt;br /&gt;　ProcessList : TStringList;&lt;br /&gt;  i : Integer;&lt;br /&gt;  Pid : Cardinal;&lt;br /&gt;&lt;br /&gt;begin&lt;br /&gt;　ListBox1.Clear;&lt;br /&gt;  ProcessList := TStringList.Create;&lt;br /&gt;  try&lt;br /&gt;　　JclsysInfo.RunningProcessesList(ProcessList,true);&lt;br /&gt;    for i := 0 to ProcessList.Count-1 do&lt;br /&gt;    begin&lt;br /&gt;      Pid := GetPidFromProcessName(ProcessList.Strings[i]);&lt;br /&gt;      ListBox1.Items.Add('(' + IntToStr(Pid) + ')' + ProcessList.Strings[i]);&lt;br /&gt;    end;&lt;br /&gt;&lt;br /&gt;  finally&lt;br /&gt;  　ProcessList.Free;&lt;br /&gt;  end;&lt;br /&gt;&lt;br /&gt;end;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;RunningProcessesListは、引数で指定したTStringsを継承した型インスタンスに&lt;br /&gt;プロセスのリストを返してくれます。&lt;br /&gt;&lt;br /&gt;このJclSysInfoユニット、ざっと見た感じで、便利そうなものが一杯あった。&lt;br /&gt;サンプルプログラムを元にもうチョットみてみよう。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-3325074906773713900?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/3325074906773713900/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=3325074906773713900' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/3325074906773713900'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/3325074906773713900'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2011/07/blog-post.html' title='プロセスリストを表示する（その２）'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-759069636487903181</id><published>2011-04-07T23:16:00.003+09:00</published><updated>2011-04-07T23:20:51.405+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='動画'/><category scheme='http://www.blogger.com/atom/ns#' term='ちょっとしたデモ XE'/><title type='text'>VBスクリプトを動かす（動画付き）</title><content type='html'>先日、ツイッターでMicrosoft Scriptコントロールの話題がでたのでDelphiでMicrosoft Scriptコントロールを&lt;br /&gt;使うサンプルを作ってみた。&lt;br /&gt;&lt;br /&gt;Microsoft ScriptコントールをDelphiに取り込む必要がある。&lt;br /&gt;&lt;br /&gt;Microsoft Scriptコントール取り込むには、コンポーネントの取り込みを選択し&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-cewYP5xuFos/TZ2_rr6hjyI/AAAAAAAAADk/CkE31jjdjHg/s1600/Com.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="199" src="http://1.bp.blogspot.com/-cewYP5xuFos/TZ2_rr6hjyI/AAAAAAAAADk/CkE31jjdjHg/s320/Com.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;ActiveXコントールの取り込みを選択する。&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-NBN9HyhrbMg/TZ2_3emH0gI/AAAAAAAAADo/3VLJwOgFb1I/s1600/acx.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="197" src="http://2.bp.blogspot.com/-NBN9HyhrbMg/TZ2_3emH0gI/AAAAAAAAADo/3VLJwOgFb1I/s320/acx.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;（ここでタイプライブラリの取り込みを選択するとクラスがつくられないみたい&lt;br /&gt;なので要注意）&lt;br /&gt;&lt;br /&gt;コントロールの一覧からMicroSoft Scriptコントロールを選択する。&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-BddxIfuKYfc/TZ3AYy1OK4I/AAAAAAAAADs/fYsekUXOq9k/s1600/msc.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="182" src="http://2.bp.blogspot.com/-BddxIfuKYfc/TZ3AYy1OK4I/AAAAAAAAADs/fYsekUXOq9k/s320/msc.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;あとは、画面の支持にしたがってファイルを作成し、Microsoft Scriptコントールを&lt;br /&gt;組み込みたいプロジェクトに読み込む。&lt;br /&gt;&lt;br /&gt;ここから、実際につくったサンプル。&lt;br /&gt;&lt;br /&gt;サンプルは、&lt;br /&gt;&lt;br /&gt;1) a,b二つの引数を持つVBSのＦＵＮＣＴＩＯＮプロシージャを実行する。&lt;br /&gt;&amp;nbsp;&amp;nbsp;2) VBSはメモコンポーネントに記述する。&lt;br /&gt;3) メモコンポーネントに記述したFUNCTIONのリストをListBoxに表示する。&lt;br /&gt;4) ListBoxから選んだFUNCTIONを実行し結果をラベルに表示する。&lt;br /&gt;&lt;br /&gt;とゆうものです。&lt;br /&gt;&lt;br /&gt;以下、ソースファイル&lt;br /&gt;&lt;br /&gt;&lt;pre class="delphi" name="code"&gt;unit Unit1;&lt;br /&gt;&lt;br /&gt;interface&lt;br /&gt;&lt;br /&gt;uses&lt;br /&gt;  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,&lt;br /&gt;  Dialogs, MSScriptControl_TLB, StdCtrls;&lt;br /&gt;&lt;br /&gt;type&lt;br /&gt;  TForm1 = class(TForm)&lt;br /&gt;    Memo1: TMemo;&lt;br /&gt;    スクリプトを登録: TButton;&lt;br /&gt;    ListBox1: TListBox;&lt;br /&gt;    選択した関数を実行: TButton;&lt;br /&gt;    実行結果: TLabel;&lt;br /&gt;    Label2: TLabel;&lt;br /&gt;    procedure FormCreate(Sender: TObject);&lt;br /&gt;    procedure FormClose(Sender: TObject; var Action: TCloseAction);&lt;br /&gt;    procedure スクリプトを登録Click(Sender: TObject);&lt;br /&gt;    procedure 選択した関数を実行Click(Sender: TObject);&lt;br /&gt;  private&lt;br /&gt;    { Private 宣言 }&lt;br /&gt;    FScriptControl:TScriptControl;&lt;br /&gt;  public&lt;br /&gt;    { Public 宣言 }&lt;br /&gt;  end;&lt;br /&gt;&lt;br /&gt;var&lt;br /&gt;  Form1: TForm1;&lt;br /&gt;&lt;br /&gt;implementation&lt;br /&gt;&lt;br /&gt;uses ActiveX,VarUtils;&lt;br /&gt;&lt;br /&gt;{$R *.dfm}&lt;br /&gt;&lt;br /&gt;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);&lt;br /&gt;begin&lt;br /&gt; FScriptControl.Free;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;procedure TForm1.FormCreate(Sender: TObject);&lt;br /&gt;begin&lt;br /&gt;  FScriptControl := TScriptControl.Create(Self);&lt;br /&gt;  {Jscriptを使用するときは、'VBSCRIPT'を'JScript'に変更する。}&lt;br /&gt;  FScriptControl.Language := 'VBSCRIPT';&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;procedure TForm1.スクリプトを登録Click(Sender: TObject);&lt;br /&gt;var&lt;br /&gt;  i : Integer;&lt;br /&gt;begin&lt;br /&gt;&lt;br /&gt;  ListBox1.Clear;&lt;br /&gt;  &lt;br /&gt;　{Scriptコントロールにコードを追加}&lt;br /&gt;　FScriptControl.AddCode(WideString(Memo1.Text));&lt;br /&gt;&lt;br /&gt;  {プロシージャコレクションを操作することでプロシージャーのリストを得る}&lt;br /&gt;  for i := 0  to FScriptControl.Procedures.Count -1 do&lt;br /&gt;  begin&lt;br /&gt;&lt;br /&gt;    {VB(VB6,VBA)用のCOMのコレクションは1基数のものが多いので注意}&lt;br /&gt;    ListBox1.Items.Add(FScriptControl.Procedures.Item[i+1].Name);&lt;br /&gt;  end;&lt;br /&gt;&lt;br /&gt;end;&lt;br /&gt;procedure TForm1.選択した関数を実行Click(Sender: TObject);&lt;br /&gt;var&lt;br /&gt;  ResultStr : OleVariant;&lt;br /&gt;  ParamArray : Variant;&lt;br /&gt;  PParamArray : PVarArray;&lt;br /&gt;  MyParams : PIntegerArray;&lt;br /&gt;begin&lt;br /&gt;  &lt;br /&gt;  {パラメータはヴァリアント型の配列で渡す必要がある}&lt;br /&gt;  ParamArray := VarArrayCreate([0, 1], varVariant);&lt;br /&gt;  ParamArray[0] := 3;&lt;br /&gt;  ParamArray[1] := 5;&lt;br /&gt;  &lt;br /&gt;  PParamArray := VarArrayAsPSafeArray(ParamArray);&lt;br /&gt;  ResultStr := FScriptControl.Run(WideString(ListBox1.Items[ListBox1.ItemIndex]),&lt;br /&gt;                              PSafeArray(PParamArray));&lt;br /&gt;  Label2.Caption := VarToStr(ResultStr);&lt;br /&gt;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;end.&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;以下、コントロールの取り込みと上記プログラムを実行しているところのデモ動画&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: -webkit-auto;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: -webkit-auto;"&gt;&lt;br /&gt;&lt;object width="320" height="266" class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://i.ytimg.com/vi/g5CyNIspDAY/0.jpg"&gt;&lt;param name="movie" value="http://www.youtube.com/v/g5CyNIspDAY?f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="320" height="266" src="http://www.youtube.com/v/g5CyNIspDAY?f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-759069636487903181?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/759069636487903181/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=759069636487903181' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/759069636487903181'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/759069636487903181'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2011/04/vb.html' title='VBスクリプトを動かす（動画付き）'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-cewYP5xuFos/TZ2_rr6hjyI/AAAAAAAAADk/CkE31jjdjHg/s72-c/Com.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-5220787438235190009</id><published>2011-04-03T22:34:00.003+09:00</published><updated>2011-04-03T23:18:19.328+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='備忘録'/><category scheme='http://www.blogger.com/atom/ns#' term='へなちょこTips XE'/><title type='text'>Guid文字列を得る</title><content type='html'>Delphiで、Guidを得るには、通常の場合CreateGuid手続きを使用します。&lt;br /&gt;また、Guid文字列を得るする場合には、GuidToString手続きを使用して文字列に変換します。&lt;br /&gt;&lt;br /&gt;&lt;pre class="delphi" name="code"&gt;procedure TForm1.Button1Click(Sender: TObject);&lt;br /&gt;var&lt;br /&gt;  guid : TGuid;&lt;br /&gt;begin&lt;br /&gt;  CreateGuid(guid);&lt;br /&gt;  LabeledEdit1.Text := GuidToString(guid);&lt;br /&gt;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Delphi XEでは、TGuid型に対して、TGuidHelperクラスが実装されているので&lt;br /&gt;このHelperを利用してもGuidを得ることができます。&lt;br /&gt;(Helperは.Net FrameworkのGuid構造体と同じ動きをするように実装されている&lt;br /&gt;ようです。但し、.Net側のToStringメソッドでは文字列が中括弧で囲まれないので&lt;br /&gt;注意が必要かなぁ？)&lt;br /&gt;&lt;br /&gt;&lt;pre class="delphi" name="code"&gt;procedure TForm1.Button2Click(Sender: TObject);&lt;br /&gt;var&lt;br /&gt;  guid:TGUID;&lt;br /&gt;  S:String;&lt;br /&gt;begin&lt;br /&gt;  guid := TGUID.NewGuid;&lt;br /&gt;  LabeledEdit1.Text := guid.ToString;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;TGuidHelperクラスにはGuidの表現形式に応じていくかのCreate関数が用意されていますで&lt;br /&gt;プログラム中で使用している表現形式からGUDIの生成が可能です。&lt;br /&gt;&lt;br /&gt;下記の例は、文字列で表現されたGUIDからTGuid型の変数を得る例です。&lt;br /&gt;&lt;br /&gt;&lt;pre class="delphi" name="code"&gt;procedure TForm1.Button3Click(Sender: TObject);&lt;br /&gt;var&lt;br /&gt;  guid:TGUID;&lt;br /&gt;begin&lt;br /&gt;　guid := TGUID.Create('{1F447130-60E2-40A0-9A00-EB94C1C7D691}');&lt;br /&gt;  label1.Caption := guid.Tostring; //{1F447130-60E2-40A0-9A00-EB94C1C7D691}が表示される&lt;br /&gt;end;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-5220787438235190009?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://docwiki.embarcadero.com/VCL/ja/SysUtils.TGuidHelper' title='Guid文字列を得る'/><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/5220787438235190009/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=5220787438235190009' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/5220787438235190009'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/5220787438235190009'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2011/04/guid.html' title='Guid文字列を得る'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-4755309692760631713</id><published>2011-04-03T01:01:00.000+09:00</published><updated>2011-04-03T01:01:59.181+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ちょっとした疑問'/><title type='text'>TSingletonImplementationクラス</title><content type='html'>Delphi XEのHelpを見ていて、TSingletonImplementationというクラスがあるのに気づいた。&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;HELPをみると、IInterface の基本実装が必要で参照カウントが無効なシンプルなクラスの基底クラスなそうな。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;ということは、COMでなインターフェイスについては、このクラスを使えばよいのかぁ～。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;でも、何故Generics.Defaultsに配置してあるのだろう。&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-4755309692760631713?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://docwiki.embarcadero.com/VCL/ja/Generics.Defaults.TSingletonImplementation' title='TSingletonImplementationクラス'/><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/4755309692760631713/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=4755309692760631713' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/4755309692760631713'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/4755309692760631713'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2011/04/tsingletonimplementation.html' title='TSingletonImplementationクラス'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-8218713724259930898</id><published>2011-04-01T00:48:00.004+09:00</published><updated>2011-04-02T14:18:18.055+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='その他'/><category scheme='http://www.blogger.com/atom/ns#' term='動画'/><category scheme='http://www.blogger.com/atom/ns#' term='へなちょこTips XE'/><title type='text'>ClientDatasetのでも</title><content type='html'>Buleberry社のFlashBack ExpressのテストでClientDataSetのチョットしたサンプル動画(スクリーンキャプチャー）を&lt;br /&gt;作ってみた。&lt;br /&gt;&lt;br /&gt;サンプルの内容は、IDE上でクライアントデータセットのフィールドを作成し&lt;br /&gt;&lt;br /&gt;Delphiのプログラムでデータをセットするものです。&lt;br /&gt;&lt;br /&gt;編集もなにもしてないので、チョットまのびした動画になっちゃてます。&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://i.ytimg.com/vi/YDszFD5H6Us/0.jpg" height="360" width="480"&gt;&lt;param name="movie" value="http://www.youtube.com/v/YDszFD5H6Us?f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="480" height="360" src="http://www.youtube.com/v/YDszFD5H6Us?f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-8218713724259930898?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/8218713724259930898/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=8218713724259930898' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/8218713724259930898'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/8218713724259930898'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2011/04/clientdataset.html' title='ClientDatasetのでも'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-2166795930675619765</id><published>2011-03-01T00:09:00.002+09:00</published><updated>2011-03-01T00:24:09.493+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='備忘録'/><category scheme='http://www.blogger.com/atom/ns#' term='へなちょこTips XE'/><title type='text'>Null許容型</title><content type='html'>&lt;a href="http://code.google.com/p/delphilhlplib/"&gt;delphilhlplib&lt;/a&gt;の中にNull許容型が容易されてるのでちょっと試してみた。&lt;br /&gt;&lt;br /&gt;delpjihlplibは上記のリンクから最新のモジュールをダウンロードして&lt;br /&gt;パッケージをインストールすることで使用可能になります。&lt;br /&gt;&lt;br /&gt;以下試したソースコード&lt;br /&gt;&lt;br /&gt;&lt;pre class="delphi" name="code"&gt;unit Unit1;&lt;br /&gt;&lt;br /&gt;interface&lt;br /&gt;&lt;br /&gt;uses&lt;br /&gt;  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,&lt;br /&gt;  Dialogs, StdCtrls;&lt;br /&gt;&lt;br /&gt;type&lt;br /&gt;  TForm1 = class(TForm)&lt;br /&gt;    Button1: TButton;&lt;br /&gt;    Label1: TLabel;&lt;br /&gt;    Label2: TLabel;&lt;br /&gt;    Label3: TLabel;&lt;br /&gt;    procedure Button1Click(Sender: TObject);&lt;br /&gt;  private&lt;br /&gt;    { Private 宣言 }&lt;br /&gt;  public&lt;br /&gt;    { Public 宣言 }&lt;br /&gt;  end;&lt;br /&gt;&lt;br /&gt;var&lt;br /&gt;  Form1: TForm1;&lt;br /&gt;&lt;br /&gt;implementation&lt;br /&gt;Uses DeHL.Nullable;&lt;br /&gt;&lt;br /&gt;{$R *.dfm}&lt;br /&gt;&lt;br /&gt;procedure TForm1.Button1Click(Sender: TObject);&lt;br /&gt;var&lt;br /&gt;  i : Nullable &amp;lt;integer&amp;gt;&lt;br /&gt;begin&lt;br /&gt;&lt;br /&gt;  //値を代入する前はNULL&lt;br /&gt;  if i.IsNull then&lt;br /&gt;  begin&lt;br /&gt;    Label1.Caption := 'Null';&lt;br /&gt;  end;&lt;br /&gt;&lt;br /&gt;  //値を代入すると普通の型のように扱える&lt;br /&gt;  i.Value := 100;&lt;br /&gt;  Label2.Caption := IntToStr(i);&lt;br /&gt;&lt;br /&gt;  //MakeNullでNullをセットできるようだ。&lt;br /&gt;  i.MakeNull;&lt;br /&gt;&lt;br /&gt;  if i.IsNull then&lt;br /&gt;  begin&lt;br /&gt;    Label3.Caption := 'Null';&lt;br /&gt;  end;&lt;br /&gt;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;end.&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;delphihelplibには、そのほかにもいろいろなクラスがあるようなので、追々試してみようと思う。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-2166795930675619765?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/2166795930675619765/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=2166795930675619765' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/2166795930675619765'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/2166795930675619765'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2011/03/null.html' title='Null許容型'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-930130514527229153</id><published>2011-02-06T23:57:00.000+09:00</published><updated>2011-02-06T23:57:26.323+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='備忘録'/><category scheme='http://www.blogger.com/atom/ns#' term='へなちょこTips'/><title type='text'>Unified Interbaseコンポーネントをつかってみた（その4）</title><content type='html'>&lt;a href="http://nonothoughtman.blogspot.com/2011/02/unified-interbase.html"&gt;Unified Interbaseコンポーネントをつかってみた（その3）&lt;/a&gt;で、ClientDataSet接続用に&lt;br /&gt;TUIBDataSetをカスタマイズした。このカスタマイズしたコンポーネントを使って&lt;br /&gt;TClientDataSet及びTDataSetProviderを使ってのデータ更新を試してみた。&lt;br /&gt;&lt;br /&gt;以下、その備忘録&lt;br /&gt;&lt;br /&gt;DBExpressドライバを使えば、フラットなテーブルや簡単なリンクテーブルであれば&lt;br /&gt;自動的にデータ操作のSQLを作ってDBに書き込んでくれる。&lt;br /&gt;&lt;br /&gt;しかし、複雑なJoin等でデータを表示する場合はDbExpressドライバを使っても&lt;br /&gt;テーブルへの操作は自前で実施する必要がある。&lt;br /&gt;&lt;br /&gt;また、&lt;a href="http://www.flamerobin.org/"&gt;FlameRobin&lt;/a&gt;、&lt;a href="http://kuronekosoft.ewinds.net/sqlstudio.aspx"&gt;黒猫 SQL Studio&lt;/a&gt;、&lt;a href="http://www.wind.sannet.ne.jp/m_matsu/developer/a5m2/"&gt;A5:SQL Mk-2&lt;/a&gt;のツールでデータ更新用の&lt;br /&gt;SQLである程度自動で作成できるので 自前で実施してもそんなに手間ではないので&lt;br /&gt;データの更新を手動で行う。&lt;br /&gt;&lt;br /&gt;DataSetProviderで、データの更新を自分で実施する方法は、&lt;a href="http://docwiki.embarcadero.com/RADStudio/ja/%E6%9B%B4%E6%96%B0%E9%81%A9%E7%94%A8%E6%99%82%E3%81%AB%E4%BB%8B%E5%85%A5%E3%81%99%E3%82%8B"&gt;エンバカデロさんのヘルプ&lt;/a&gt;&lt;br /&gt;に手順が書いてあるのでこれに従って更新処理を書いた。&lt;br /&gt;&lt;br /&gt;その実装は、以下のとおり&lt;br /&gt;&lt;br /&gt;フォームのUIBTransactionコンポーネントを配置し、UIBDatabaseコンポーネントを&lt;br /&gt;接続する。また今回はテストなので、暗黙のトランザクションになるようの&lt;br /&gt;コンポーネントを設定した。（下図）&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_ga1vA17U6Hs/TU6wnMrcxWI/AAAAAAAAADg/CDhbPgRO9S0/s1600/Trans.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://2.bp.blogspot.com/_ga1vA17U6Hs/TU6wnMrcxWI/AAAAAAAAADg/CDhbPgRO9S0/s320/Trans.bmp" width="201" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;UIBQueryコンポーネントを配置し上記のUIBTransactionオブジェクトに接続する。&lt;br /&gt;&lt;br /&gt;DataSetProviderのUpdateModeを実際の処理に合わせて設定する。&lt;br /&gt;（今回は、"upWhereChanged"に設定)&lt;br /&gt;&lt;br /&gt;DataSetProviderのBeforeUpdateRecordイベントハンドラにDB更新の処理を&lt;br /&gt;記述する。このとき、更新処理が終わったら、&lt;br /&gt;&lt;br /&gt;Applied := true&lt;br /&gt;&lt;br /&gt;とし、ClientDataSetのキャッシュの更新終了状態にする。&lt;br /&gt;&lt;br /&gt;今回のテストで書いた処理は下のとおり、&lt;br /&gt;&lt;pre class="delphi" name="code"&gt;procedure TForm1.DataSetProvider1BeforeUpdateRecord(Sender: TObject;&lt;br /&gt;&amp;nbsp; SourceDS: TDataSet; DeltaDS: TCustomClientDataSet; UpdateKind: TUpdateKind;&lt;br /&gt;&amp;nbsp; var Applied: Boolean);&lt;br /&gt;var&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;i : Integer;&lt;br /&gt;&amp;nbsp; SQL : String;&lt;br /&gt;&amp;nbsp; ValueStr : String;&lt;br /&gt;&amp;nbsp; NewStr : String;&lt;br /&gt;&amp;nbsp; OldStr : String;&lt;br /&gt;&amp;nbsp; //UIBDeltaDs : TUIBClientDataSet;&lt;br /&gt;begin&lt;br /&gt;&lt;br /&gt;&amp;nbsp; //UIBDeltaDs := TUIBClientDataSet.Create(Self);&lt;br /&gt;&amp;nbsp; //UIBDeltaDs := DeltaDS.CloneCursor();&lt;br /&gt;&lt;br /&gt;&amp;nbsp; UIBQuery1.SQL.Clear;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; UIBQuery1.SQL.Add('UPDATE EMPLOYEE SET ' + #13#10);&lt;br /&gt;&lt;br /&gt;&amp;nbsp; while not(DeltaDS.eof) do&lt;br /&gt;&amp;nbsp; begin&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;//DeltaDS&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SQL := '';&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for i := 0 to DeltaDS.FieldCount - 1 do&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; begin&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //UIBDeltaDs.DataConvert(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if not(VarIsEmpty(DeltaDS.Fields[i].NewValue)) then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; begin&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //UIBQuery1.SQL.Add&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NewStr := VarToStr(DeltaDS.Fields[i].NewValue);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; OldStr := IfThen(not(VarIsNull(DeltaDs.Fields[i].OldValue)), VarToStr(DeltaDS.Fields[i].OldValue));&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if CompareText(NewStr,OldStr) &amp;lt;&amp;gt; 0 Then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; begin&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (DeltaDs.Fields[i].DataType = ftDatetime) then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; begin&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ValueStr := FormatDateTime(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'yyyy/mm/dd hh:nn:ss',&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VarToDateTime(DeltaDs.Fields[i].NewValue)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; );&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ValueStr := QuotedStr(ValueStr);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; begin&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;ValueStr := VarToStr(DeltaDS.Fields[i].NewValue);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if&amp;nbsp;&amp;nbsp; (DeltaDs.Fields[i].DataType = ftString)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Or (DeltaDs.Fields[i].DataType = ftWideString)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; then&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; begin&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ValueStr := QuotedStr(ValueStr);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SQL := SQL + ', ' + DeltaDS.Fields[i].FieldName + ' = ' + ValueStr + #13#10;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ListBox1.Items.Add(DeltaDS.Fields[i].FieldName);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ListBox1.Items.Add(NewStr);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ListBox1.Items.Add(OldStr);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if Length(Trim(SQL)) &amp;gt; 0 then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; begin&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Sql := RightStr(Sql,Length(Sql)-1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UIBQuery1.SQL.Add(SQL);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UIBQuery1.SQL.Add('WHERE EMP_NO = ' + VarToStr(DeltaDS.FieldByName('EMP_NO').OldValue));&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Memo1.Lines.Assign(UIBQuery1.SQL);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UIBQuery1.ExecSQL;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;DeltaDS.Next;&lt;br /&gt;&amp;nbsp; end;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Applied := true;&lt;br /&gt;&amp;nbsp; //UIBDeltaDs.Free;&lt;br /&gt;end;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;ここで、テーブルに対する操作は、UpdateKindで、変更対象のレコードは、DeltaDS&lt;br /&gt;で取得できる。&lt;br /&gt;&lt;br /&gt;あとは、適当なタイミングでClientDataSetのApplyUpdateメソッドをよびだせば、&lt;br /&gt;データの更新ができる。(今回はボタンのクリックに割り当てた。)&lt;br /&gt;&lt;br /&gt;以下、ソース例&lt;br /&gt;&lt;br /&gt;&lt;pre class="delphi" name="code"&gt;procedure TForm1.Button1Click(Sender: TObject);&lt;br /&gt;begin&lt;br /&gt;&amp;nbsp; //ClientDataSet1.Post;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; UIBClientDataSet1.ApplyUpdates(-1);&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-930130514527229153?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/930130514527229153/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=930130514527229153' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/930130514527229153'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/930130514527229153'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2011/02/unified-interbase4.html' title='Unified Interbaseコンポーネントをつかってみた（その4）'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_ga1vA17U6Hs/TU6wnMrcxWI/AAAAAAAAADg/CDhbPgRO9S0/s72-c/Trans.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-5385163962127879937</id><published>2011-02-06T02:15:00.001+09:00</published><updated>2011-02-06T21:55:10.171+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='備忘録'/><category scheme='http://www.blogger.com/atom/ns#' term='へなちょこTips XE'/><category scheme='http://www.blogger.com/atom/ns#' term='思いつき'/><title type='text'>Unified Interbaseコンポーネントをつかってみた（その３）</title><content type='html'>&lt;a href="http://nonothoughtman.blogspot.com/2011/01/unified-interbase.html"&gt;Unified Interbaseコンポーネントをつかってみた（その1）&lt;/a&gt;でUIBDataSet経由でDBグリッドに&lt;br /&gt;データを表示した。&lt;br /&gt;&lt;br /&gt;しかし、UIBDataSetはReadOnlyのデータセットなので、編集が不可となっています。&lt;br /&gt;(前回のサンプルを実行してもグリッドに入力ができません。)&lt;br /&gt;&lt;br /&gt;いくつか、実験をおこなった結果、UIBDataSetは、単方向データセットとして機能している&lt;br /&gt;ようなので、ClientDataSetを経由で接続すれば、DbExpressドライバのように使えるはず&lt;br /&gt;だと思い試してみた。&lt;br /&gt;&lt;br /&gt;以下、試して確認できたことを備忘録代わりに記述&lt;br /&gt;&lt;br /&gt;フォームにTClientDataSetコンポーネントとTDataSetProviderコンポーネントを配置し、&lt;br /&gt;UIBDataset → DatasetProvieder → ClientDataset → DataSourceにリンク変更&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ここで、ClientDataset をActiveにするとタイムスタンプがうまく処理できないようでエラーが&lt;br /&gt;発生するので、ClinetDataSet、およびUIBDataSetのソースを調べた結果、以下のとおり&lt;br /&gt;データ形式の不整合があった。&lt;br /&gt;&lt;br /&gt;UIBDataSet -&amp;gt; TDatetime型&lt;br /&gt;ClinetDataSet　→ 通算のミリ秒(ftDatetime指定時）&lt;br /&gt;&lt;br /&gt;そこで、ClientDatasetと時刻データが正しく連携が取れるようUIBDataSetを拡張したコンポーネントで、接続した。&lt;br /&gt;以下、ソース&lt;br /&gt;&lt;br /&gt;&lt;pre class="delphi" name="code"&gt;unit UIBCdsDataSet;&lt;br /&gt;&lt;br /&gt;interface&lt;br /&gt;&lt;br /&gt;uses&lt;br /&gt;  SysUtils, Classes, DB, uibdataset;&lt;br /&gt;&lt;br /&gt;type&lt;br /&gt;  TUIBCdsDataSet = class(TUIBDataSet)&lt;br /&gt;  private&lt;br /&gt;    { Private 宣言 }&lt;br /&gt;  protected&lt;br /&gt;    { Protected 宣言 }&lt;br /&gt;  public&lt;br /&gt;    { Public 宣言 }&lt;br /&gt;    function GetFieldData(FieldNo: Integer; Buffer: Pointer): Boolean; overload;{$IFNDEF FPC} override; {$ENDIF}&lt;br /&gt;    {$IFNDEF FPC}&lt;br /&gt;    function GetFieldData(Field: TField; Buffer: Pointer; NativeFormat: Boolean): Boolean; overload; override;&lt;br /&gt;    {$ENDIF}&lt;br /&gt;  published&lt;br /&gt;    { Published 宣言 }&lt;br /&gt;  end;&lt;br /&gt;&lt;br /&gt;procedure Register;&lt;br /&gt;&lt;br /&gt;implementation&lt;br /&gt;&lt;br /&gt;uses uiblib;&lt;br /&gt;&lt;br /&gt;procedure Register;&lt;br /&gt;begin&lt;br /&gt;  RegisterComponents('UIB', [TUIBCdsDataSet]);&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;{ TUIBCdsDataSet }&lt;br /&gt;&lt;br /&gt;function TUIBCdsDataSet.GetFieldData(FieldNo: Integer;&lt;br /&gt;  Buffer: Pointer): Boolean;&lt;br /&gt;var&lt;br /&gt;  doubleBuf : TDateTime;&lt;br /&gt;  aFieldType: TUIBFieldType;&lt;br /&gt;  tsbuf : TTimeStamp;&lt;br /&gt;begin&lt;br /&gt;&lt;br /&gt; Result := inherited GetFieldData(FieldNo, Buffer);&lt;br /&gt;  if not(Result) then Exit;&lt;br /&gt;  if Buffer = nil then Exit;&lt;br /&gt;&lt;br /&gt;  aFieldType := Self.InternalFields.FieldType[FieldNo -1];&lt;br /&gt;&lt;br /&gt;  if aFieldType = uftTimestamp then&lt;br /&gt;  begin&lt;br /&gt;   doubleBuf := TDateTime(Buffer^);&lt;br /&gt;    tsbuf := DateTimeToTimeStamp(doubleBuf);&lt;br /&gt;&lt;br /&gt;   Double(Buffer^) :=  TimeStampToMSecs(tsbuf);&lt;br /&gt; end;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;function TUIBCdsDataSet.GetFieldData(Field: TField; Buffer: Pointer;&lt;br /&gt;  NativeFormat: Boolean): Boolean;&lt;br /&gt;var&lt;br /&gt; //SF : TSQLResult;&lt;br /&gt;  doubleBuf : TDateTime;&lt;br /&gt;  aFieldType: TUIBFieldType;&lt;br /&gt;  tsbuf : TTimeStamp;&lt;br /&gt;begin&lt;br /&gt;&lt;br /&gt;  Result := inherited GetFieldData(Field, Buffer,NativeFormat);&lt;br /&gt;  if not(Result) then Exit;&lt;br /&gt;  if Buffer = nil then Exit;&lt;br /&gt;&lt;br /&gt;  //SF := Self.InternalFields;&lt;br /&gt;  aFieldType := Self.InternalFields.FieldType[Field.FieldNo-1];&lt;br /&gt;&lt;br /&gt;  if aFieldType = uftTimestamp then&lt;br /&gt;  begin&lt;br /&gt;   doubleBuf := TDateTime(Buffer^);&lt;br /&gt;    tsbuf := DateTimeToTimeStamp(doubleBuf);&lt;br /&gt;&lt;br /&gt;   Double(Buffer^) :=  TimeStampToMSecs(tsbuf);&lt;br /&gt;  end;&lt;br /&gt;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;end.&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;これで時刻型のフィールドでエラーが発生することなく連携ができた。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-5385163962127879937?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/5385163962127879937/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=5385163962127879937' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/5385163962127879937'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/5385163962127879937'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2011/02/unified-interbase.html' title='Unified Interbaseコンポーネントをつかってみた（その３）'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-4195958228075774987</id><published>2011-01-30T01:35:00.000+09:00</published><updated>2011-01-30T01:35:15.968+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='備忘録'/><category scheme='http://www.blogger.com/atom/ns#' term='へなちょこTips'/><category scheme='http://www.blogger.com/atom/ns#' term='2007'/><title type='text'>Unified Interbaseコンポーネントをつかってみた（その2-- Delphi2007に入れる）</title><content type='html'>Unified Interbaseコンポーネントは、Delphi2007で使えます。&lt;br /&gt;&lt;br /&gt;インストールするには、UIBD11Win32.groupprojを開き&lt;br /&gt;実行時パッケージ→開発時パッケージの順でインストールします。&lt;br /&gt;&lt;br /&gt;ただし、Delphi2007のUnified Interbaseコンポーネントは、内部で&lt;br /&gt;SynEditコンポーネントを使用しているので先にSynEditをインストール&lt;br /&gt;する必要があります。&lt;br /&gt;&lt;br /&gt;SynEditは、次の手順でインストールします。（自分が行った方法です。)&lt;br /&gt;&lt;br /&gt;1. &lt;a href="http://sourceforge.net/projects/synedit/files/1%20-%20Stable%20Releases/"&gt;ダウンロードサイトより最新版&lt;/a&gt;(2011.01.30現在では2.0.6)をダウンロードして&lt;br /&gt;適当な場所に解凍します。&lt;br /&gt;&lt;br /&gt;2. PackageフォルダーからDelphi2006用のプロジェクトグループ&lt;br /&gt;&amp;nbsp;SynEdit_R2006.groupprojを開きます。(Delphi2007用のものがない為です。)&lt;br /&gt;&lt;br /&gt;3. プロジェクトファイル名をSynEdit_R2007.groupproj、および、として保存します。&lt;br /&gt;&amp;nbsp;&amp;nbsp; これは、下図のようにDelphi2007用のパッケージがSynEdit_R2007を&lt;br /&gt;要求しているからです。&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_ga1vA17U6Hs/TUQ-SowBlKI/AAAAAAAAADU/F4X6nigCGuQ/s1600/%25E3%2583%2591%25E3%2583%2583%25E3%2582%25B1%25E3%2583%25BC%25E3%2582%25B8.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="159" src="http://4.bp.blogspot.com/_ga1vA17U6Hs/TUQ-SowBlKI/AAAAAAAAADU/F4X6nigCGuQ/s320/%25E3%2583%2591%25E3%2583%2583%25E3%2582%25B1%25E3%2583%25BC%25E3%2582%25B8.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;(ここをR2006にしても良いと思いますが自分はSynEditのパッケージ名を変えました。)&lt;br /&gt;&lt;br /&gt;4. SynEditをインストールします。&lt;br /&gt;&lt;br /&gt;なお、この状態で、SynEditの開発用パッケージもインストールする場合は、&lt;br /&gt;&lt;br /&gt;(a)．上記2と同様にSynEdit_D2006.groupprojを開き&lt;br /&gt;(b). &amp;nbsp;パッケージソースファイルをのrequiresのSynEdit_R2006をSynEdit_R2007と&lt;br /&gt;しパッケージ名をSynEdit_D2007.groupprojに変更して保存し&lt;br /&gt;(c)．開発時パッケージをインストールします。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-4195958228075774987?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/4195958228075774987/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=4195958228075774987' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/4195958228075774987'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/4195958228075774987'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2011/01/unified-interbase2-delphi2007.html' title='Unified Interbaseコンポーネントをつかってみた（その2-- Delphi2007に入れる）'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_ga1vA17U6Hs/TUQ-SowBlKI/AAAAAAAAADU/F4X6nigCGuQ/s72-c/%25E3%2583%2591%25E3%2583%2583%25E3%2582%25B1%25E3%2583%25BC%25E3%2582%25B8.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-5461542010453068589</id><published>2011-01-27T23:23:00.000+09:00</published><updated>2011-01-27T23:23:04.590+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='備忘録'/><category scheme='http://www.blogger.com/atom/ns#' term='へなちょこTips XE'/><title type='text'>Unified Interbaseコンポーネントをつかってみた（その１）</title><content type='html'>&lt;a href="http://www.progdigy.com/?page_id=5"&gt;Unified Interbaseコンポーネント&lt;/a&gt;は、Delphi XE対応のInterbase, Firebird接続用のコンポーネントです。&lt;br /&gt;FB2.5にも対応しているということなのでちょっと試してみたので備忘録代わりに記述&lt;br /&gt;&lt;br /&gt;先ずは、インストール&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sourceforge.net/projects/uib/files/"&gt;Unified Interbaseのリポジトリ&lt;/a&gt;からファイルをダウンロード&lt;br /&gt;&lt;br /&gt;ダウンロードしたZIPファイルを適当なフォルダに展開し、パッケージフォルダから&lt;br /&gt;UIBD15Win32.groupprojを開く。&lt;br /&gt;&lt;br /&gt;開発時パッケージUIBD15Win32D.bplをインストール&lt;br /&gt;エラーが発生しなければ&lt;br /&gt;&lt;br /&gt;下図のようにツールパレットにコントロールが登録されます。&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_ga1vA17U6Hs/TUF2FE4n6WI/AAAAAAAAADI/abWL3MF-Vx8/s1600/UIB%25E3%2582%25B3%25E3%2583%25B3%25E3%2583%259D%25E3%2583%25BC%25E3%2583%258D%25E3%2583%25B3%25E3%2583%2588.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_ga1vA17U6Hs/TUF2FE4n6WI/AAAAAAAAADI/abWL3MF-Vx8/s1600/UIB%25E3%2582%25B3%25E3%2583%25B3%25E3%2583%259D%25E3%2583%25BC%25E3%2583%258D%25E3%2583%25B3%25E3%2583%2588.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Firebirdに接続してみる。&lt;br /&gt;&lt;br /&gt;フォームにTUIBDatabaseコンポーネントを配置して右クリックを押すと&lt;br /&gt;接続エディタが表示されるので、接続情報を入力する。&lt;br /&gt;テストボタンで接続をテストすることができます。&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_ga1vA17U6Hs/TUF6nyhaC_I/AAAAAAAAADM/ADL4t-SlAvE/s1600/%25E3%2582%25B3%25E3%2583%25B3%25E3%2583%259D%25E3%2583%25BC%25E3%2583%258D%25E3%2583%25B3%25E3%2583%2588.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="291" src="http://1.bp.blogspot.com/_ga1vA17U6Hs/TUF6nyhaC_I/AAAAAAAAADM/ADL4t-SlAvE/s320/%25E3%2582%25B3%25E3%2583%25B3%25E3%2583%259D%25E3%2583%25BC%25E3%2583%258D%25E3%2583%25B3%25E3%2583%2588.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;UIBDataSetコンポーネントを配置しDatabsaeプロパティにUIBDatabseを指定します。&lt;br /&gt;SQLプロパティにSQL文を記述します。&lt;br /&gt;&lt;br /&gt;次に、UIBTransactionプロパティを配置し、DatabaseプロパティにUIBDatabseを指定します。&lt;br /&gt;（UIBTransactionは、きめ細かい設定ができるようなのですが、ここではそのまま使います。）&lt;br /&gt;&lt;br /&gt;また、UIBDataSetコンポーネントのTransactionプロパティにUIBTransactionを指定します。&lt;br /&gt;&lt;br /&gt;あとは、DataSourceコンポーネントを介してDatabaseコントロールと接続します。&lt;br /&gt;&lt;br /&gt;UIBDatabseのConnectedプロパティと、UIBDatasetのActiveプロパティをTrueにすれば&lt;br /&gt;下図のようにデータが読み込めます。&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_ga1vA17U6Hs/TUF_o-bTFZI/AAAAAAAAADQ/xxwzi2Bz2bM/s1600/%25E3%2583%2587%25E3%2583%25BC%25E3%2582%25BF%25E5%258F%2596%25E3%2582%258A%25E5%2587%25BA%25E3%2581%2597.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="212" src="http://3.bp.blogspot.com/_ga1vA17U6Hs/TUF_o-bTFZI/AAAAAAAAADQ/xxwzi2Bz2bM/s320/%25E3%2583%2587%25E3%2583%25BC%25E3%2582%25BF%25E5%258F%2596%25E3%2582%258A%25E5%2587%25BA%25E3%2581%2597.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-5461542010453068589?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/5461542010453068589/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=5461542010453068589' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/5461542010453068589'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/5461542010453068589'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2011/01/unified-interbase.html' title='Unified Interbaseコンポーネントをつかってみた（その１）'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_ga1vA17U6Hs/TUF2FE4n6WI/AAAAAAAAADI/abWL3MF-Vx8/s72-c/UIB%25E3%2582%25B3%25E3%2583%25B3%25E3%2583%259D%25E3%2583%25BC%25E3%2583%258D%25E3%2583%25B3%25E3%2583%2588.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-4009464858712473509</id><published>2010-12-09T23:19:00.000+09:00</published><updated>2010-12-09T23:19:01.891+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='備忘録'/><category scheme='http://www.blogger.com/atom/ns#' term='へなちょこTips'/><title type='text'>プロセスの再起動</title><content type='html'>仕事で、プロセスを外部から強制的に再起動を&lt;br /&gt;する必要があったのでとりあえずつくってみた。&lt;br /&gt;&lt;br /&gt;停止させるプロセスは、仕様上一意性が保障されている&lt;br /&gt;ので、コマンドライン引数に起動するプロセスの絶対パスを&lt;br /&gt;与えて、そこからプロセスIDを求めています。&lt;br /&gt;&lt;br /&gt;プロセスに停止メッセージ（メインウインドウのクローズ）を&lt;br /&gt;ポストし、5秒まっても終了していなかったら&lt;br /&gt;強制終了しています。&lt;br /&gt;&lt;br /&gt;プロセスの起動には、JvCreateProcessコンポーネントを&lt;br /&gt;使っています。&lt;br /&gt;このコンポーネントは、非常に便利ですね。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="delphi" name="code"&gt;program RestartProcess;&lt;br /&gt;&lt;br /&gt;{$APPTYPE CONSOLE}&lt;br /&gt;&lt;br /&gt;uses&lt;br /&gt;  SysUtils,Windows,TLHELP32,Messages,JvCreateProcess;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;function GetProcessFromName(ProcessName :String) : Cardinal;&lt;br /&gt;var&lt;br /&gt;   ProcEntry : TProcessEntry32;&lt;br /&gt;   SanpshotHandle : THandle;&lt;br /&gt;   ListProcName : String;&lt;br /&gt;&lt;br /&gt;begin&lt;br /&gt;   //Toolhelp32を使用する例&lt;br /&gt;  Result := 0;&lt;br /&gt;   SanpshotHandle := TlHelp32.CreateToolhelp32Snapshot(TlHelp32.TH32CS_SNAPPROCESS,0);&lt;br /&gt;   if (SanpshotHandle &amp;lt;&amp;gt; -1) then&lt;br /&gt;      begin&lt;br /&gt;         ProcEntry.dwSize := Sizeof(TProcessEntry32W);&lt;br /&gt;         if (TlHelp32.Process32First(SanpshotHandle,ProcEntry)) Then&lt;br /&gt;         begin&lt;br /&gt;            repeat&lt;br /&gt;              ListProcName := ProcEntry.szExeFile;&lt;br /&gt;              if CompareText(ListProcName,ProcessName) = 0 then&lt;br /&gt;              begin&lt;br /&gt;                 Result := ProcEntry.th32ProcessID;&lt;br /&gt;              end;&lt;br /&gt;              //WriteLn(ListProcName);&lt;br /&gt;          until (TlHelp32.Process32Next(SanpshotHandle,ProcEntry) = false);&lt;br /&gt;       end;&lt;br /&gt;    end;&lt;br /&gt;    CloseHandle(SanpshotHandle);&lt;br /&gt;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;function EnumWindowsProc(hwindow :HWnd; lparam :LPARAM):BOOL; stdcall;&lt;br /&gt;var&lt;br /&gt;  ProcessID : Cardinal;&lt;br /&gt;  ThreadID : Cardinal;&lt;br /&gt;begin&lt;br /&gt;&lt;br /&gt;   Result := True;&lt;br /&gt;&lt;br /&gt;   ThreadID := GetWindowThreadProcessId(hwindow, ProcessID);&lt;br /&gt;&lt;br /&gt;   If (ProcessID = lParam) Then&lt;br /&gt;   begin&lt;br /&gt;      PostMessage(hwindow, WM_CLOSE, 0, 0);&lt;br /&gt;     Result := true;&lt;br /&gt;   End;&lt;br /&gt;End;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;function SendClose(ProcID : Cardinal) : Boolean;&lt;br /&gt;begin&lt;br /&gt;   Result := EnumWindows(@EnumWindowsProc, ProcID)&lt;br /&gt;End;&lt;br /&gt;&lt;br /&gt;function StopProcess(ProcessName : String; Force : Boolean = false) : Integer;&lt;br /&gt;var&lt;br /&gt;   ProcessID : Cardinal;&lt;br /&gt;  hProcess : THandle;&lt;br /&gt;begin&lt;br /&gt;   ProcessID := GetProcessFromName(ProcessName);&lt;br /&gt;  if ProcessID = 0 then&lt;br /&gt;  begin&lt;br /&gt;     Result := -1;&lt;br /&gt;  end&lt;br /&gt;  else&lt;br /&gt;  begin&lt;br /&gt;     if (ProcessID &amp;gt; 0) Then&lt;br /&gt;     begin&lt;br /&gt;        if Force then&lt;br /&gt;        begin&lt;br /&gt;           hProcess := OpenProcess(PROCESS_TERMINATE, False, ProcessID);&lt;br /&gt;           TerminateProcess(hProcess , 0 );&lt;br /&gt;           CloseHandle(hProcess);&lt;br /&gt;           Result := 0;&lt;br /&gt;        end&lt;br /&gt;        else&lt;br /&gt;        begin&lt;br /&gt;           Result := 1;&lt;br /&gt;           if SendClose(ProcessID) then&lt;br /&gt;           begin&lt;br /&gt;              Result := 0;&lt;br /&gt;           end;&lt;br /&gt;        end;&lt;br /&gt;     end;&lt;br /&gt;  end;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;var&lt;br /&gt;   StopResult : Integer;&lt;br /&gt;   JvCreateProcess: TJvCreateProcess;&lt;br /&gt;  ExeName : String;&lt;br /&gt;  ProcessID : Cardinal;&lt;br /&gt;&lt;br /&gt;begin&lt;br /&gt;  try&lt;br /&gt;  { TODO -oUser -cConsole Main : ここにコードを記述してください }&lt;br /&gt;&lt;br /&gt;     if ParamCount &amp;gt; 0 then&lt;br /&gt;     begin&lt;br /&gt;        ExeName := ExtractFileName(ParamStr(1));&lt;br /&gt;         StopResult := StopProcess(ExeName);&lt;br /&gt;&lt;br /&gt;        //五秒まって停止イしたかどうかを確認する&lt;br /&gt;        Sleep(5000);&lt;br /&gt;&lt;br /&gt;        ProcessID := GetProcessFromName(ExeName);&lt;br /&gt;&lt;br /&gt;        //プロセスが正常に停止できなかったので' +&lt;br /&gt;        //強制終了する&lt;br /&gt;        if ProcessID &amp;gt; 0 Then&lt;br /&gt;        begin&lt;br /&gt;           StopResult := StopProcess(ExeName,true);&lt;br /&gt;           Sleep(10000);&lt;br /&gt;        end;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        if StopResult &amp;lt;&amp;gt; 1 then&lt;br /&gt;        begin&lt;br /&gt;           JvCreateProcess := TJvCreateProcess.Create(nil);&lt;br /&gt;           try&lt;br /&gt;              JvCreateProcess.CommandLine := ParamStr(1);&lt;br /&gt;              JvCreateProcess.WaitForTerminate := false;&lt;br /&gt;              JvCreateProcess.Run;&lt;br /&gt;           finally&lt;br /&gt;              JvCreateProcess.Free;&lt;br /&gt;            end;&lt;br /&gt;        end;&lt;br /&gt;     end;&lt;br /&gt;     //ReadLn;&lt;br /&gt;  except&lt;br /&gt;    on E:Exception do&lt;br /&gt;      Writeln(E.Classname, ': ', E.Message);&lt;br /&gt;  end;&lt;br /&gt;end.&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-4009464858712473509?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/4009464858712473509/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=4009464858712473509' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/4009464858712473509'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/4009464858712473509'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2010/12/blog-post.html' title='プロセスの再起動'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-6895954154750479438</id><published>2010-11-05T00:11:00.000+09:00</published><updated>2010-11-05T00:11:02.261+09:00</updated><title type='text'>StartsStr関数,EndsStr関数</title><content type='html'>プログラムの作成中にHelpを眺めていてたまたま目についた関数&lt;br /&gt;&lt;br /&gt;StartsStrは、ある文字列が指定したサブ文字列で始まるかをチェックする関数&lt;br /&gt;EndsStrは、ある文字列が指定したサブ文字列で終わるるかをチェックする関数&lt;br /&gt;ともに大文字小文字は別物として扱います。&lt;br /&gt;&lt;br /&gt;上記のようなチェックを大文字小文字区別しないで行う関数もあり、&lt;br /&gt;それぞれ、StartsText,EndsTexstです。&lt;br /&gt;&lt;br /&gt;以下、サンプル&lt;br /&gt;&lt;br /&gt;&lt;pre class="delphi" name="code"&gt;WriteLn('大文字小文字区別して比較');&lt;br /&gt;      if StartsStr('so','So What ?') then&lt;br /&gt;      begin&lt;br /&gt;       WriteLn('はじまるよ')&lt;br /&gt;      end&lt;br /&gt;      else&lt;br /&gt;      begin&lt;br /&gt;       WriteLn('はじまらない')&lt;br /&gt;      end;&lt;br /&gt;&lt;br /&gt;      WriteLn('大文字小文字区別なしに比較');&lt;br /&gt;      if StartsText('so','So what ?') then&lt;br /&gt;      begin&lt;br /&gt;       WriteLn('はじまるよ')&lt;br /&gt;      end&lt;br /&gt;      else&lt;br /&gt;      begin&lt;br /&gt;       WriteLn('はじまらない')&lt;br /&gt;      end;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;でも、これらの関数っていつからあったのだろうか？&lt;br /&gt;手元の環境で調べたところ少なくともDelphi2007には&lt;br /&gt;あったようだけど&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-6895954154750479438?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/6895954154750479438/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=6895954154750479438' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/6895954154750479438'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/6895954154750479438'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2010/11/startsstrendsstr.html' title='StartsStr関数,EndsStr関数'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-2490167348328814179</id><published>2010-11-03T22:49:00.000+09:00</published><updated>2010-11-03T22:49:02.864+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='もどき'/><category scheme='http://www.blogger.com/atom/ns#' term='思いつき'/><title type='text'>Purgeもどき</title><content type='html'>仕事で使っているアプリケーションがExeName_YYYYMMDDHHNNSS.Logのような&lt;br /&gt;ログファイルを一杯作るので、消してくれという依頼があった。&lt;br /&gt;&lt;br /&gt;ただし、このフォルダには、上記のログを作るファイルがいくつかああって&lt;br /&gt;3世代程度は残してくれという依頼があった。&lt;br /&gt;&lt;br /&gt;昔、仕事で触ってたOpenVmsのファイルシステムにはバージョンというのが&lt;br /&gt;あって、古いバージョンのファイルを消すPurgeコマンドがあり&lt;br /&gt;これとにたようなものが欲しいなということで、とりあえず作ってみた。&lt;br /&gt;(本家には似ても似つかぬ、あくまでももどきですが。）&lt;br /&gt;&lt;br /&gt;使い方は、&lt;br /&gt;&lt;br /&gt;PurgeMock "パージファイルマスク" /D:パージファイルがあるフォルダ /G:残す世代数&lt;br /&gt;&lt;br /&gt;で、/R: を指定することで、パージファイルマスクに正規表現が使用できます。&lt;br /&gt;&lt;br /&gt;また、ファイルの更新日時を基準に/G:で指定した数だけ残るよう古い日付のものを&lt;br /&gt;削除しますが、 /T:を指定することでファイルの作成日時を基準にPurgeすることが&lt;br /&gt;できます。&lt;br /&gt;&lt;br /&gt;なお、パージファイルマスクにより、複数の異なるファイル名のファイルが削除対象&lt;br /&gt;となりえますが、このツールでは、このような場合のことを想定しておりません。&lt;br /&gt;（/G:で指定した数になるようにばっさり消します。）&lt;br /&gt;&lt;br /&gt;以下、ソース(delphi Xeがあればコンパイル可能です。)を置いておきます。&lt;br /&gt;ライセンスは、MITライセンスとします。&lt;br /&gt;ソース使用は自由ですが、無保証とします。&lt;br /&gt;&lt;br /&gt;まずはメイン。&lt;br /&gt;&lt;br /&gt;&lt;pre class="delphi" name="code"&gt;program PurgeMock;&lt;br /&gt;&lt;br /&gt;{$APPTYPE CONSOLE}&lt;br /&gt;&lt;br /&gt;uses&lt;br /&gt;  SysUtils,&lt;br /&gt;  PurgeMockImp in 'PurgeMockImp.pas',&lt;br /&gt;  MidasLib&lt;br /&gt;  ;&lt;br /&gt;&lt;br /&gt;function CreatePurgeMockParams : TPurgeMockParams;&lt;br /&gt;var&lt;br /&gt;  PurgeMockParams : TPurgeMockParams;&lt;br /&gt; i : Integer;&lt;br /&gt;begin&lt;br /&gt;&lt;br /&gt;  PurgeMockParams := TPurgeMockParams.Create;&lt;br /&gt;  try&lt;br /&gt;    try&lt;br /&gt;   PurgeMockParams.Init(Paramstr(0));&lt;br /&gt;   for i := 1 to ParamCount -1 do&lt;br /&gt;      begin&lt;br /&gt;       PurgeMockParams.SetPurgeParam(Paramstr(i));&lt;br /&gt;      end;&lt;br /&gt;    except&lt;br /&gt;      PurgeMockParams.Free;&lt;br /&gt;      PurgeMockParams := nil;&lt;br /&gt;    end;&lt;br /&gt;&lt;br /&gt;  finally&lt;br /&gt;    Result := PurgeMockParams;&lt;br /&gt;  end;&lt;br /&gt;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;var&lt;br /&gt;  PurgeMockParams : TPurgeMockParams;&lt;br /&gt;  DoPurgeMock     : TPuregMock;&lt;br /&gt;  Ret : Integer;&lt;br /&gt;&lt;br /&gt;begin&lt;br /&gt;  try&lt;br /&gt;    { TODO -oUser -cConsole メイン : ここにコードを記述してください }&lt;br /&gt;    PurgeMockParams := CreatePurgeMockParams;&lt;br /&gt;    if Assigned(PurgeMockParams) then&lt;br /&gt;    begin&lt;br /&gt;      DoPurgeMock := TPuregMock.Create(PurgeMockParams);&lt;br /&gt;      try&lt;br /&gt;        Ret := DoPurgeMock.Purge;&lt;br /&gt;      finally&lt;br /&gt;        DoPurgeMock.Free;&lt;br /&gt;      end;&lt;br /&gt;      PurgeMockParams.Free;&lt;br /&gt;    end;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  except&lt;br /&gt;    on E: Exception do&lt;br /&gt;      Writeln(E.ClassName, ': ', E.Message);&lt;br /&gt;  end;&lt;br /&gt;end.&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;次に、パージコマンドの本体&lt;br /&gt;&lt;br /&gt;&lt;pre class="delphi" name="code"&gt;unit PurgeMockImp;&lt;br /&gt;&lt;br /&gt;interface&lt;br /&gt;&lt;br /&gt;uses&lt;br /&gt;  SysUtils&lt;br /&gt; ,DB&lt;br /&gt;  ,DBClient&lt;br /&gt;  ;&lt;br /&gt;&lt;br /&gt;type&lt;br /&gt;  TPurgeTimeStamp = (ptCreate, ptUpdate);&lt;br /&gt;&lt;br /&gt;  TPurgeMockParams = class&lt;br /&gt;  private&lt;br /&gt;    FTargetDir: String;&lt;br /&gt;    FUseRegularExpression: Boolean;&lt;br /&gt;    FFileMask: String;&lt;br /&gt;    FLeavingGenerations: Integer;&lt;br /&gt;    FPurgeTimeStamp: TPurgeTimeStamp;&lt;br /&gt;    procedure SetTargetDir(val: String);&lt;br /&gt;    procedure SetUseRegularExpression(val: Boolean);&lt;br /&gt;    procedure SetFileMask(val: String);&lt;br /&gt;    procedure SetLeavingGenerations(val: Integer);&lt;br /&gt;    procedure SetPurgeTimeStamp(val: TPurgeTimeStamp);&lt;br /&gt;  public&lt;br /&gt;    property TargetDir: String read FTargetDir write SetTargetDir;&lt;br /&gt;    property UseRegularExpression: Boolean read FUseRegularExpression&lt;br /&gt;      write SetUseRegularExpression;&lt;br /&gt;    property FileMask: String read FFileMask write SetFileMask;&lt;br /&gt;    property LeavingGenerations: Integer read FLeavingGenerations&lt;br /&gt;      write SetLeavingGenerations;&lt;br /&gt;    property PurgeTimeStamp: TPurgeTimeStamp read FPurgeTimeStamp&lt;br /&gt;      write SetPurgeTimeStamp;&lt;br /&gt;    procedure Init(ExePath: String);&lt;br /&gt;  procedure SetPurgeParam(PurgeParam : String);&lt;br /&gt;  end;&lt;br /&gt;&lt;br /&gt;  TPuregMock = class&lt;br /&gt;  public&lt;br /&gt;    constructor Create(Params: TPurgeMockParams);&lt;br /&gt;    function Purge: Integer;&lt;br /&gt;    destructor Destroy; override;&lt;br /&gt;  strict private&lt;br /&gt;    FPurgeMockParams: TPurgeMockParams;&lt;br /&gt;    FPurgeMockDataSet : TClientDataSet;&lt;br /&gt;    function MakePurgeFileList: Integer;&lt;br /&gt;    function ExecPurge: Integer;&lt;br /&gt;    function CreatePurgeDataSet : TClientDataSet;&lt;br /&gt;  end;&lt;br /&gt;&lt;br /&gt;  function TryParseCmdLineSw(ParameterString : String; Sw : Array of String; var ParamValue : String; IgnoreCase: Boolean = true) : boolean;&lt;br /&gt;&lt;br /&gt;implementation&lt;br /&gt;&lt;br /&gt;Uses&lt;br /&gt;   StrUtils&lt;br /&gt;  ,IOUtils&lt;br /&gt;  ,Types&lt;br /&gt;  ,RegularExpressionsCore&lt;br /&gt;  ;&lt;br /&gt;&lt;br /&gt;procedure TPurgeMockParams.SetTargetDir(val: String);&lt;br /&gt;begin&lt;br /&gt;  FTargetDir := val;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;procedure TPurgeMockParams.SetUseRegularExpression(val: Boolean);&lt;br /&gt;begin&lt;br /&gt;  FUseRegularExpression := val;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;procedure TPurgeMockParams.Init(ExePath: String);&lt;br /&gt;begin&lt;br /&gt;&lt;br /&gt; FTargetDir := ExtractFileDir(ExePath);&lt;br /&gt; FUseRegularExpression := false;&lt;br /&gt; FileMask := '*.*';&lt;br /&gt; FLeavingGenerations := 1;&lt;br /&gt; FPurgeTimeStamp := ptUpdate;&lt;br /&gt;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;procedure TPurgeMockParams.SetFileMask(val: String);&lt;br /&gt;begin&lt;br /&gt;  FFileMask := val&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;procedure TPurgeMockParams.SetLeavingGenerations(val: Integer);&lt;br /&gt;begin&lt;br /&gt; if Val &amp;gt;= 0 then&lt;br /&gt;  begin&lt;br /&gt;   FLeavingGenerations := val;&lt;br /&gt;  end&lt;br /&gt;  else&lt;br /&gt;  begin&lt;br /&gt;   FLeavingGenerations := 0;&lt;br /&gt;  end;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;procedure TPurgeMockParams.SetPurgeParam(PurgeParam: String);&lt;br /&gt;var&lt;br /&gt;  ValueStr : String;&lt;br /&gt;begin&lt;br /&gt;&lt;br /&gt; if TryParseCmdLineSw(PurgeParam,['/D:','-D:'],ValueStr) then&lt;br /&gt;  begin&lt;br /&gt;   FTargetDir := ValueStr;&lt;br /&gt;    Exit;&lt;br /&gt;  end;&lt;br /&gt;&lt;br /&gt; if TryParseCmdLineSw(PurgeParam,['/U:','-U:'],ValueStr) then&lt;br /&gt;  begin&lt;br /&gt;   FUseRegularExpression := true;&lt;br /&gt;    Exit;&lt;br /&gt;  end;&lt;br /&gt;&lt;br /&gt; if TryParseCmdLineSw(PurgeParam,['/G:','-G:'],ValueStr) then&lt;br /&gt;  begin&lt;br /&gt;   LeavingGenerations := StrToIntDef(ValueStr,1);&lt;br /&gt;    Exit;&lt;br /&gt;  end;&lt;br /&gt;&lt;br /&gt; if TryParseCmdLineSw(PurgeParam,['/T:','-T:'],ValueStr) then&lt;br /&gt;  begin&lt;br /&gt;   FPurgeTimeStamp := ptCreate;&lt;br /&gt;    Exit;&lt;br /&gt;  end;&lt;br /&gt;&lt;br /&gt; if TryParseCmdLineSw(PurgeParam,[],ValueStr) then&lt;br /&gt;  begin&lt;br /&gt;    FFileMask := ValueStr;&lt;br /&gt;    Exit;&lt;br /&gt;  end;&lt;br /&gt;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;procedure TPurgeMockParams.SetPurgeTimeStamp(val: TPurgeTimeStamp);&lt;br /&gt;begin&lt;br /&gt;  FPurgeTimeStamp := val;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;constructor TPuregMock.Create(Params: TPurgeMockParams);&lt;br /&gt;begin&lt;br /&gt;  inherited Create;&lt;br /&gt;  FPurgeMockParams := Params;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;function TPuregMock.Purge: Integer;&lt;br /&gt;begin&lt;br /&gt;&lt;br /&gt;  Result := -1;&lt;br /&gt;&lt;br /&gt; FPurgeMockDataSet := CreatePurgeDataSet;&lt;br /&gt;  if Assigned(FPurgeMockDataSet) then&lt;br /&gt;  begin&lt;br /&gt;    if MakePurgeFileList &amp;gt; 0 then&lt;br /&gt;    begin&lt;br /&gt;      Result := ExecPurge;&lt;br /&gt;    end;&lt;br /&gt;    FPurgeMockDataSet.EmptyDataSet;&lt;br /&gt;    FPurgeMockDataSet.Active := false;&lt;br /&gt;    FPurgeMockDataSet.Free;&lt;br /&gt;  end;&lt;br /&gt;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;function TPuregMock.CreatePurgeDataSet: TClientDataSet;&lt;br /&gt;var&lt;br /&gt; PurgeDataSet : TClientDataSet;&lt;br /&gt; FD : TFieldDef;&lt;br /&gt;begin&lt;br /&gt; PurgeDataSet := TClientDataSet.Create(nil);&lt;br /&gt;  try&lt;br /&gt;    try&lt;br /&gt;   FD := PurgeDataSet.FieldDefs.AddFieldDef;&lt;br /&gt;      FD.Name := 'FileName';&lt;br /&gt;      FD.DataType := ftString;&lt;br /&gt;      FD.Size := 1024;&lt;br /&gt;&lt;br /&gt;   FD := PurgeDataSet.FieldDefs.AddFieldDef;&lt;br /&gt;      FD.Name := 'TimeStamp';&lt;br /&gt;      FD.DataType := ftDatetime;&lt;br /&gt;&lt;br /&gt;      PurgeDataSet.CreateDataSet;&lt;br /&gt;      PurgeDataSet.AddIndex('Purge_Idx','TimeStamp;FileName',[]);&lt;br /&gt;      PurgeDataSet.IndexName := 'Purge_Idx';&lt;br /&gt;&lt;br /&gt;    Except&lt;br /&gt;     if Assigned(PurgeDataSet) then PurgeDataSet.Free;&lt;br /&gt;      PurgeDataSet := nil;&lt;br /&gt;    end;&lt;br /&gt;  finally&lt;br /&gt;   Result := PurgeDataSet;&lt;br /&gt;  end;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;destructor TPuregMock.Destroy;&lt;br /&gt;begin&lt;br /&gt;  if Assigned(FPurgeMockParams) then&lt;br /&gt;  begin&lt;br /&gt;    FPurgeMockParams := nil;&lt;br /&gt;  end;&lt;br /&gt;&lt;br /&gt;  inherited Destroy;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;function TPuregMock.MakePurgeFileList: Integer;&lt;br /&gt;var&lt;br /&gt; SearchOption: TSearchOption;&lt;br /&gt; SearchDir : TDirectory;&lt;br /&gt;  SearchFileMask : String;&lt;br /&gt;  LList: TStringDynArray;&lt;br /&gt;  FileFullName,FileName : String;&lt;br /&gt;  CanAddList : Boolean;&lt;br /&gt;  PerlRegEx: TPerlRegEx;&lt;br /&gt;  PurgeFile : TFile;&lt;br /&gt;&lt;br /&gt;begin&lt;br /&gt;&lt;br /&gt;  Result := 0;&lt;br /&gt;&lt;br /&gt;  //使っても使わなくても正規表現用のクラスをオープンしておく。&lt;br /&gt;  PerlRegEx:= TPerlRegEx.Create;&lt;br /&gt;  try&lt;br /&gt;    SearchOption := TSearchOption.soTopDirectoryOnly;&lt;br /&gt;    SearchFileMask := FPurgeMockParams.FileMask;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    if FPurgeMockParams.UseRegularExpression then&lt;br /&gt;    begin&lt;br /&gt;      PerlRegEx.RegEx := SearchFileMask;&lt;br /&gt;      SearchFileMask := '*.*';&lt;br /&gt;    end;&lt;br /&gt;&lt;br /&gt;    try&lt;br /&gt;      LList := SearchDir.GetFiles(FPurgeMockParams.FTargetDir,SearchFileMask, SearchOption);&lt;br /&gt;      FPurgeMockDataSet.Active := true;&lt;br /&gt;      for FileFullName in LList do&lt;br /&gt;      begin&lt;br /&gt;        CanAddList := true;&lt;br /&gt;        if FPurgeMockParams.UseRegularExpression then&lt;br /&gt;        begin&lt;br /&gt;          FileName := ExtractFileName(FileFullName);&lt;br /&gt;          PerlRegEx.Subject := FileName;&lt;br /&gt;          CanAddList := PerlRegEx.Match;&lt;br /&gt;        end;&lt;br /&gt;&lt;br /&gt;        if CanAddList then&lt;br /&gt;        begin&lt;br /&gt;          //パージ対象リストに追加&lt;br /&gt;          FPurgeMockDataSet.Append;&lt;br /&gt;          FPurgeMockDataSet.FieldByName('FileName').AsString := FileFullName;&lt;br /&gt;          if FPurgeMockParams.FPurgeTimeStamp = ptCreate then&lt;br /&gt;          begin&lt;br /&gt;           FPurgeMockDataSet.FieldByName('TimeStamp').AsDateTime := PurgeFile.GetCreationTime(FileFullName);&lt;br /&gt;          end&lt;br /&gt;          else&lt;br /&gt;          begin&lt;br /&gt;           FPurgeMockDataSet.FieldByName('TimeStamp').AsDateTime := PurgeFile.GetLastAccessTime(FileFullName);&lt;br /&gt;          end;&lt;br /&gt;          FPurgeMockDataSet.Post;&lt;br /&gt;        end;&lt;br /&gt;      end;&lt;br /&gt;      Result := FPurgeMockDataSet.RecordCount;&lt;br /&gt;&lt;br /&gt;    except&lt;br /&gt;      Result := -1;&lt;br /&gt;    end;&lt;br /&gt;  finally&lt;br /&gt;  if Assigned(PerlRegEx) then PerlRegEx.Free;&lt;br /&gt;&lt;br /&gt;  end;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;function TPuregMock.ExecPurge: Integer;&lt;br /&gt;var&lt;br /&gt; DeleteCount : integer;&lt;br /&gt;  DeleteFileName : string;&lt;br /&gt;  PurgeFile : TFile;&lt;br /&gt;begin&lt;br /&gt;  DeleteCount := 0;&lt;br /&gt;&lt;br /&gt;  try&lt;br /&gt;    FPurgeMockDataSet.Active := true;&lt;br /&gt;    FPurgeMockDataSet.First;&lt;br /&gt;&lt;br /&gt;    while not(FPurgeMockDataSet.Eof) do&lt;br /&gt;    begin&lt;br /&gt;      DeleteFileName := FPurgeMockDataSet.FieldByName('FileName').AsString;&lt;br /&gt;      PurgeFile.Delete(DeleteFileName);&lt;br /&gt;      inc(DeleteCount);&lt;br /&gt;&lt;br /&gt;      //レコードをDeleteした場合は、Next不要なので注意&lt;br /&gt;      FPurgeMockDataSet.Delete;&lt;br /&gt;      if FPurgeMockDataSet.RecordCount &amp;lt;= FPurgeMockParams.LeavingGenerations then Break;&lt;br /&gt;    end;&lt;br /&gt;   Result := DeleteCount;&lt;br /&gt;&lt;br /&gt;  Except&lt;br /&gt;   Result := -1;&lt;br /&gt;  end;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;function TryParseCmdLineSw(ParameterString : String;&lt;br /&gt;                           Sw : Array of String;&lt;br /&gt;                           var ParamValue : String;&lt;br /&gt;                           IgnoreCase: Boolean) : boolean;&lt;br /&gt;var&lt;br /&gt; i : integer;&lt;br /&gt;begin&lt;br /&gt;&lt;br /&gt; Result := false;&lt;br /&gt;&lt;br /&gt;  if Length(Sw) = 0 then&lt;br /&gt;  begin&lt;br /&gt;   //SW指定がない場合はそのままの文字列を返す&lt;br /&gt;   ParamValue := ParameterString;&lt;br /&gt;    Result := true;&lt;br /&gt;  end&lt;br /&gt;  else&lt;br /&gt;  begin&lt;br /&gt;   for i := low(Sw) to high(Sw) do&lt;br /&gt;    begin&lt;br /&gt;      if IgnoreCase then&lt;br /&gt;      begin&lt;br /&gt;        if StartsText(Sw[i],ParameterString) then&lt;br /&gt;        begin&lt;br /&gt;          Result := true;&lt;br /&gt;          ParamValue := ReplaceText(ParameterString,Sw[i],'');&lt;br /&gt;          Break;&lt;br /&gt;        end;&lt;br /&gt;      end&lt;br /&gt;      else&lt;br /&gt;      begin&lt;br /&gt;        if StartsStr(Sw[i],ParameterString) then&lt;br /&gt;        begin&lt;br /&gt;          Result := true;&lt;br /&gt;          ParamValue := ReplaceStr(ParameterString,Sw[i],'');&lt;br /&gt;          Break;&lt;br /&gt;        end;&lt;br /&gt;      end;&lt;br /&gt;    end;&lt;br /&gt;  end;&lt;br /&gt;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;end.&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-2490167348328814179?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/2490167348328814179/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=2490167348328814179' title='1 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/2490167348328814179'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/2490167348328814179'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2010/11/purge.html' title='Purgeもどき'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-5258368148378612221</id><published>2010-11-03T00:18:00.000+09:00</published><updated>2010-11-03T00:18:59.526+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='備忘録'/><category scheme='http://www.blogger.com/atom/ns#' term='へなちょこTips XE'/><title type='text'>サービスの起動と停止</title><content type='html'>現在、進行中の案件で、サービスの再起動を定期的に行う必要が&lt;br /&gt;あるので、Delphiでできるかどうか調べてみた。&lt;br /&gt;&lt;br /&gt;Delphi PrismではdotNetFreameworkに標準で用意されたクラスが使えるので&lt;br /&gt;簡単だが、Delphi(Win32)では用意されていないみたいだ。&lt;br /&gt;&lt;br /&gt;さらに調べたところ、Jedi Code Library(Jcl)には、サービスを扱うクラス&lt;br /&gt;(TJclSCManager,TJclNTService)が用意されていることを知ったので、&lt;br /&gt;実際に検証してみた。&lt;br /&gt;&lt;br /&gt;以下、検証用に作ったサンプル（サービスの列挙と指定したサービスの&lt;br /&gt;停止と起動）です。&lt;br /&gt;&lt;br /&gt;&lt;pre class="delphi" name="code"&gt;unit Unit1;&lt;br /&gt;&lt;br /&gt;interface&lt;br /&gt;&lt;br /&gt;uses&lt;br /&gt;  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,&lt;br /&gt;  Dialogs, StdCtrls, ExtCtrls;&lt;br /&gt;&lt;br /&gt;type&lt;br /&gt;  TForm1 = class(TForm)&lt;br /&gt;    Button1: TButton;&lt;br /&gt;    ListBox1: TListBox;&lt;br /&gt;    LabeledEdit1: TLabeledEdit;&lt;br /&gt;    Button2: TButton;&lt;br /&gt;    Button3: TButton;&lt;br /&gt;    Label1: TLabel;&lt;br /&gt;    procedure Button1Click(Sender: TObject);&lt;br /&gt;    procedure Button3Click(Sender: TObject);&lt;br /&gt;    procedure ListBox1Click(Sender: TObject);&lt;br /&gt;  private&lt;br /&gt;    { Private 宣言 }&lt;br /&gt;  public&lt;br /&gt;    { Public 宣言 }&lt;br /&gt;  end;&lt;br /&gt;&lt;br /&gt;var&lt;br /&gt;  Form1: TForm1;&lt;br /&gt;&lt;br /&gt;implementation&lt;br /&gt;&lt;br /&gt;uses&lt;br /&gt;    JclSvcCtrl&lt;br /&gt;  , TypInfo&lt;br /&gt;  ;&lt;br /&gt;&lt;br /&gt;{$R *.dfm}&lt;br /&gt;&lt;br /&gt;procedure TForm1.Button1Click(Sender: TObject);&lt;br /&gt;var&lt;br /&gt;  SvcMgr : TJclSCManager;&lt;br /&gt;  i : Integer;&lt;br /&gt;begin&lt;br /&gt;//&lt;br /&gt;  SvcMgr := TJclSCManager.Create();&lt;br /&gt;&lt;br /&gt;  try&lt;br /&gt;    SvcMgr.Refresh(true);&lt;br /&gt;    ListBox1.Clear;&lt;br /&gt;    for i := 0 to SvcMgr.ServiceCount -1 do&lt;br /&gt;    begin&lt;br /&gt;      ListBox1.Items.Add(SvcMgr.Services[i].ServiceName);&lt;br /&gt;    end;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  finally&lt;br /&gt;    SvcMgr.Free;&lt;br /&gt;  end;&lt;br /&gt;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;procedure TForm1.Button3Click(Sender: TObject);&lt;br /&gt;var&lt;br /&gt;  SvcMgr : TJclSCManager;&lt;br /&gt;  Svc : TJclNTService;&lt;br /&gt;begin&lt;br /&gt;//&lt;br /&gt;  //if True then&lt;br /&gt;  SvcMgr := TJclSCManager.Create();&lt;br /&gt;  try&lt;br /&gt;    SvcMgr.Refresh(true);&lt;br /&gt;    if (SvcMgr.FindService(LabeledEdit1.Text,Svc)) Then&lt;br /&gt;    begin&lt;br /&gt;      if TComponent(Sender).Tag = 1 then&lt;br /&gt;      begin&lt;br /&gt;        Svc.Start;&lt;br /&gt;      end&lt;br /&gt;      else&lt;br /&gt;      begin&lt;br /&gt;        Svc.Stop;&lt;br /&gt;      end;&lt;br /&gt;      Label1.Caption := GetEnumName(TypeInfo(TJclServiceState),Ord(Svc.ServiceState)) ;&lt;br /&gt;    end;&lt;br /&gt;  finally&lt;br /&gt;    SvcMgr.Free;&lt;br /&gt;  end;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;procedure TForm1.ListBox1Click(Sender: TObject);&lt;br /&gt;var&lt;br /&gt;  SvcMgr : TJclSCManager;&lt;br /&gt;  Svc : TJclNTService;&lt;br /&gt;begin&lt;br /&gt;  if ListBox1.ItemIndex &gt;=0 then&lt;br /&gt;  begin&lt;br /&gt;    LabeledEdit1.Text := ListBox1.Items.Strings[ListBox1.ItemIndex];&lt;br /&gt;    SvcMgr := TJclSCManager.Create();&lt;br /&gt;    try&lt;br /&gt;      SvcMgr.Refresh(true);&lt;br /&gt;      if (SvcMgr.FindService(LabeledEdit1.Text,Svc)) Then&lt;br /&gt;      begin&lt;br /&gt;        Label1.Caption := GetEnumName(TypeInfo(TJclServiceState),Ord(Svc.ServiceState));&lt;br /&gt;      end;&lt;br /&gt;    finally&lt;br /&gt;      SvcMgr.Free;&lt;br /&gt;    end;&lt;br /&gt;&lt;br /&gt;  end;&lt;br /&gt;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;end.&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;なお、jclには上記クラスを使用したサンプルプログラムがありますので詳細については&lt;br /&gt;そちらを参照して下さい。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-5258368148378612221?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/5258368148378612221/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=5258368148378612221' title='1 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/5258368148378612221'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/5258368148378612221'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2010/11/blog-post.html' title='サービスの起動と停止'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-8228652540369425188</id><published>2010-11-02T00:47:00.000+09:00</published><updated>2010-11-02T00:47:06.620+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='備忘録'/><category scheme='http://www.blogger.com/atom/ns#' term='へなちょこTips'/><title type='text'>JvScheduledEventsを試してみる。</title><content type='html'>仕事で、とあるプロセスを定刻起動する必要があった。&lt;br /&gt;&lt;br /&gt;ＯＳ標準のタスクスケジューラを使用してもよっかったが&lt;br /&gt;起動できるのがバッチファイルか単独のEXEになるので&lt;br /&gt;もううちょっと処理を柔軟にしたいと思いJVCLの&lt;br /&gt;JvScheduledEventsを試してみた。&lt;br /&gt;&lt;br /&gt;TJvScheduledEventsは、画面でスケジューリングの&lt;br /&gt;設定が可能であるが、今回は、スケジュールを外部&lt;br /&gt;ファイルに持たせたかったので、プラグラム中で&lt;br /&gt;設定することにした。&lt;br /&gt;&lt;br /&gt;以下、サンプルで試したソース。&lt;br /&gt;&lt;br /&gt;&lt;pre class="delphi" name="code"&gt;unit Unit1;&lt;br /&gt;&lt;br /&gt;interface&lt;br /&gt;&lt;br /&gt;uses&lt;br /&gt;  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,&lt;br /&gt;  Dialogs, JvScheduledEvents, StdCtrls, ExtCtrls, ComCtrls, JvComponentBase,&lt;br /&gt;  JvCreateProcess;&lt;br /&gt;&lt;br /&gt;type&lt;br /&gt;  TForm1 = class(TForm)&lt;br /&gt;    Button1: TButton;&lt;br /&gt;    DateTimePicker1: TDateTimePicker;&lt;br /&gt;    Label1: TLabel;&lt;br /&gt;    LabeledEdit1: TLabeledEdit;&lt;br /&gt;&lt;br /&gt;    procedure FormCreate(Sender: TObject);&lt;br /&gt;    procedure FormDestroy(Sender: TObject);&lt;br /&gt;    procedure Button1Click(Sender: TObject);&lt;br /&gt;  private&lt;br /&gt;    { Private 宣言 }&lt;br /&gt;    FJvScheduledEvents : TJvScheduledEvents;&lt;br /&gt;    procedure JvScheduledEventsExecute(Sender: TJvEventCollectionItem;&lt;br /&gt;              const IsSnoozeEvent: Boolean);&lt;br /&gt;  public&lt;br /&gt;    { Public 宣言 }&lt;br /&gt;  end;&lt;br /&gt;&lt;br /&gt;var&lt;br /&gt;  Form1: TForm1;&lt;br /&gt;&lt;br /&gt;implementation&lt;br /&gt;&lt;br /&gt;uses&lt;br /&gt;  JclSchedule;&lt;br /&gt;&lt;br /&gt;{$R *.dfm}&lt;br /&gt;&lt;br /&gt;procedure TForm1.Button1Click(Sender: TObject);&lt;br /&gt;var&lt;br /&gt;  EventItem : TJvEventCollectionItem;&lt;br /&gt;  IJclSched : JclSchedule.IJclSchedule;&lt;br /&gt;  IDaySched : IJclDailySchedule;&lt;br /&gt;  IDyaFreq : IJclScheduleDayFrequency;&lt;br /&gt;&lt;br /&gt;begin&lt;br /&gt;  EventItem := FJvScheduledEvents.Events.Add;&lt;br /&gt;  IJclSched := EventItem.Schedule;&lt;br /&gt;&lt;br /&gt;   //イベントアイテムのスケジュール自体は、&lt;br /&gt;   //IJclScheduleで受けますが、実態はTJclScheduleで&lt;br /&gt;   //IJclScheduleのほか&lt;br /&gt;   //IJclScheduleDayFrequency,&lt;br /&gt;   //IJclDailySchedule,&lt;br /&gt;    //IJclWeeklySchedule,&lt;br /&gt;   //IJclMonthlySchedule,&lt;br /&gt;   //IJclYearlySchedule&lt;br /&gt;   //を継承しています。&lt;br /&gt;&lt;br /&gt;   IJclSched.RecurringType := srkDaily;&lt;br /&gt;&lt;br /&gt;   IDaySched := (IJclSched as IJclDailySchedule);&lt;br /&gt;   if Assigned(IDaySched) then&lt;br /&gt;   begin&lt;br /&gt;      //毎日実行する場合は、EveryWeekDayをFalseにして&lt;br /&gt;      //間隔を1(日)にします。&lt;br /&gt;      IDaySched.EveryWeekDay := false;&lt;br /&gt;      IDaySched.Interval := 1;&lt;br /&gt;   end;&lt;br /&gt;&lt;br /&gt;   IDyaFreq := (IJclSched as IJclScheduleDayFrequency);&lt;br /&gt;   if Assigned(IDyaFreq) then&lt;br /&gt;   begin&lt;br /&gt;      IDyaFreq.StartTime := DateTimeToTimeStamp(Self.DateTimePicker1.Time).Time;&lt;br /&gt;      IDyaFreq.EndTime   := IDyaFreq.StartTime;&lt;br /&gt;      IDyaFreq.Interval := 1;&lt;br /&gt;   end;&lt;br /&gt;&lt;br /&gt;   EventItem.Name := LabeledEdit1.Text;&lt;br /&gt;   EventItem.OnExecute := JvScheduledEventsExecute;&lt;br /&gt;   EventItem.Start;&lt;br /&gt;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;procedure TForm1.FormCreate(Sender: TObject);&lt;br /&gt;begin&lt;br /&gt;  FJvScheduledEvents := TJvScheduledEvents.Create(Self);&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;procedure TForm1.FormDestroy(Sender: TObject);&lt;br /&gt;begin&lt;br /&gt;  FJvScheduledEvents.Events.Clear;&lt;br /&gt;  FJvScheduledEvents.Free;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;procedure TForm1.JvScheduledEventsExecute(Sender: TJvEventCollectionItem;&lt;br /&gt;  const IsSnoozeEvent: Boolean);&lt;br /&gt;var&lt;br /&gt;  JvCreateProcess: TJvCreateProcess;&lt;br /&gt;begin&lt;br /&gt;&lt;br /&gt;  JvCreateProcess := TJvCreateProcess.Create(Self);&lt;br /&gt;  try&lt;br /&gt;    JvCreateProcess.CommandLine := Sender.Name;&lt;br /&gt;    JvCreateProcess.WaitForTerminate := true;&lt;br /&gt;    JvCreateProcess.Run;&lt;br /&gt;&lt;br /&gt;  finally&lt;br /&gt;    JvCreateProcess.Free;&lt;br /&gt;  end;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;end.&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;ポイントは、以下の２つかと思います。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;JclScheduleをUsesに加えることと&lt;/li&gt;&lt;li&gt;TJvEventCollectionItem.Scheduleの戻り値がIJclSchedule型であるが実態はTJclSchedule型でIJclScheduleのほかIJclScheduleDayFrequency,IJclDailySchedule,IJclWeeklySchedule,IJclMonthlySchedule,&lt;br /&gt;IJclYearlyScheduleを継承していて設定したいスケジュールにあわせて適切にキャストする必要があること&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;今回のサンプルは、『ボタンを押したら指定した時刻にメモ帳を起動する』というタイマーで処理しても&lt;br /&gt;十分なものですが、リフレクション、パッケージの動的ロードなどを使えば、もっと面白いことが&lt;br /&gt;できそうな気がします。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-8228652540369425188?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/8228652540369425188/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=8228652540369425188' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/8228652540369425188'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/8228652540369425188'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2010/11/jvscheduledevents.html' title='JvScheduledEventsを試してみる。'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-5817886984524145229</id><published>2010-09-23T23:50:00.000+09:00</published><updated>2010-09-23T23:50:07.838+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='備忘録'/><category scheme='http://www.blogger.com/atom/ns#' term='へなちょこTips'/><title type='text'>SQL Server のデータベースのテーブルとフィールド名を表示する。（その2)</title><content type='html'>Sql Server 2005以上であれば、システムカタログに対してクエリを発行することで&lt;br /&gt;テーブル名とフィールド名のリストの取得ができます。&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/ja-jp/library/ms345522(v=SQL.105).aspx"&gt;(詳細は、システムカタログのクエリのQandAページを参照)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;クエリを発行できるということは、&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_ga1vA17U6Hs/TJtowcMM_-I/AAAAAAAAAC8/yYfTZCk6yDs/s1600/%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://3.bp.blogspot.com/_ga1vA17U6Hs/TJtowcMM_-I/AAAAAAAAAC8/yYfTZCk6yDs/s320/%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;程度の画面であればマスターリンクを使ってノンコーディング&lt;br /&gt;（クエリーは組む必要はありますが）でテーブルとフィールドのリストを表示できます。&lt;br /&gt;&lt;br /&gt;このへんがDelphiのすごいところですね。&lt;br /&gt;&lt;br /&gt;以下、フォーム表示をテキスト表示したもの&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;object Form1: TForm1&lt;br /&gt;&amp;nbsp;&amp;nbsp;Left = 0&lt;br /&gt;&amp;nbsp;&amp;nbsp;Top = 0&lt;br /&gt;&amp;nbsp;&amp;nbsp;Caption = 'Form1'&lt;br /&gt;&amp;nbsp;&amp;nbsp;ClientHeight = 535&lt;br /&gt;&amp;nbsp;&amp;nbsp;ClientWidth = 727&lt;br /&gt;&amp;nbsp;&amp;nbsp;Color = clBtnFace&lt;br /&gt;&amp;nbsp;&amp;nbsp;Font.Charset = DEFAULT_CHARSET&lt;br /&gt;&amp;nbsp;&amp;nbsp;Font.Color = clWindowText&lt;br /&gt;&amp;nbsp;&amp;nbsp;Font.Height = -11&lt;br /&gt;&amp;nbsp;&amp;nbsp;Font.Name = 'Tahoma'&lt;br /&gt;&amp;nbsp;&amp;nbsp;Font.Style = []&lt;br /&gt;&amp;nbsp;&amp;nbsp;OldCreateOrder = False&lt;br /&gt;&amp;nbsp;&amp;nbsp;PixelsPerInch = 96&lt;br /&gt;&amp;nbsp;&amp;nbsp;TextHeight = 13&lt;br /&gt;&amp;nbsp;&amp;nbsp;object PageControl1: TPageControl&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Left = 0&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Top = 0&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Width = 727&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Height = 535&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;ActivePage = TabSheet2&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Align = alClient&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;TabOrder = 0&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;object TabSheet1: TTabSheet&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;Caption = 'TabSheet1'&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;object Label1: TLabel&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Left = 192&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Top = 88&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Width = 56&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Height = 13&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Caption = #12501#12451#12540#12523#12489#21517&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;end&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;object Label2: TLabel&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Left = 16&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Top = 88&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Width = 50&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Height = 13&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Caption = #12486#12540#12502#12523#21517&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;end&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;object Label3: TLabel&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Left = 552&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Top = 88&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Width = 56&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Height = 13&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Caption = #12501#12451#12540#12523#12489#21517&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;end&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;object Label4: TLabel&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Left = 376&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Top = 88&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Width = 50&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Height = 13&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Caption = #12486#12540#12502#12523#21517&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;end&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;object Button1: TButton&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Left = 96&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Top = 16&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Width = 169&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Height = 33&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Caption = 'dbGo'#12398#12513#12477#12483#12489#12434#20351#29992&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;TabOrder = 0&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;OnClick = Button1Click&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;end&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;object ListBox1: TListBox&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Left = 16&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Top = 106&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Width = 169&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Height = 401&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ItemHeight = 13&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;TabOrder = 1&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;OnClick = ListBox1Click&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;end&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;object ListBox2: TListBox&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Left = 191&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Top = 106&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Width = 169&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Height = 401&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ItemHeight = 13&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;TabOrder = 2&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;end&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;object ListBox3: TListBox&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Left = 376&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Top = 106&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Width = 169&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Height = 401&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ItemHeight = 13&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;TabOrder = 3&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;OnClick = ListBox3Click&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;end&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;object ListBox4: TListBox&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Left = 550&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Top = 106&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Width = 169&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Height = 401&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ItemHeight = 13&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;TabOrder = 4&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;end&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;object Button2: TButton&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Left = 472&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Top = 16&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Width = 169&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Height = 33&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Caption = 'DbExpress'#12398#12513#12477#12483#12489#12434#20351#29992&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;TabOrder = 5&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;OnClick = Button2Click&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;end&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;end&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;object TabSheet2: TTabSheet&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;Caption = 'TabSheet2'&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;ImageIndex = 1&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;object DBGrid1: TDBGrid&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Left = 0&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Top = 0&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Width = 145&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Height = 507&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Align = alLeft&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;DataSource = DataSource1&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;TabOrder = 0&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;TitleFont.Charset = DEFAULT_CHARSET&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;TitleFont.Color = clWindowText&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;TitleFont.Height = -11&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;TitleFont.Name = 'Tahoma'&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;TitleFont.Style = []&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Columns = &amp;lt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;item&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Expanded = False&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;FieldName = 'Name'&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Visible = True&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;end&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;end&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;object DBGrid2: TDBGrid&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Left = 145&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Top = 0&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Width = 160&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Height = 507&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Align = alLeft&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;DataSource = DataSource2&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;TabOrder = 1&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;TitleFont.Charset = DEFAULT_CHARSET&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;TitleFont.Color = clWindowText&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;TitleFont.Height = -11&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;TitleFont.Name = 'Tahoma'&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;TitleFont.Style = []&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Columns = &amp;lt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;item&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Expanded = False&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;FieldName = 'NAME'&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Visible = True&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;end&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;end&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;end&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;object TabSheet3: TTabSheet&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;Caption = 'TabSheet3'&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;ImageIndex = 2&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;object DBGrid3: TDBGrid&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Left = 0&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Top = 0&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Width = 177&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Height = 507&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Align = alLeft&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;DataSource = DataSource3&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;TabOrder = 0&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;TitleFont.Charset = DEFAULT_CHARSET&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;TitleFont.Color = clWindowText&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;TitleFont.Height = -11&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;TitleFont.Name = 'Tahoma'&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;TitleFont.Style = []&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Columns = &amp;lt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;item&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Expanded = False&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;FieldName = 'Name'&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Visible = True&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;end&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;end&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;object DBGrid4: TDBGrid&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Left = 177&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Top = 0&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Width = 184&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Height = 507&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Align = alLeft&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;DataSource = DataSource4&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;TabOrder = 1&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;TitleFont.Charset = DEFAULT_CHARSET&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;TitleFont.Color = clWindowText&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;TitleFont.Height = -11&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;TitleFont.Name = 'Tahoma'&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;TitleFont.Style = []&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Columns = &amp;lt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;item&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Expanded = False&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;FieldName = 'NAME'&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Visible = True&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;end&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;end&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;end&lt;br /&gt;&amp;nbsp;&amp;nbsp;end&lt;br /&gt;&amp;nbsp;&amp;nbsp;object ADOConnection1: TADOConnection&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Connected = True&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;ConnectionString =&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;'Provider=SQLNCLI10.1;Integrated Security="";Persist Security Inf' +&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;'o=False;User ID=sa;Initial Catalog=AdventureWorks;Data Source=SA' +&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;'KANOTE-PC\SqlExpress;Initial File Name="";Server SPN=""'&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;LoginPrompt = False&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Provider = 'SQLNCLI10.1'&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Left = 16&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Top = 456&lt;br /&gt;&amp;nbsp;&amp;nbsp;end&lt;br /&gt;&amp;nbsp;&amp;nbsp;object SQLConnection1: TSQLConnection&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;ConnectionName = 'MSSQLConnection'&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;DriverName = 'MSSQL'&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;GetDriverFunc = 'getSQLDriverMSSQL'&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;LibraryName = 'dbxmss.dll'&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;LoginPrompt = False&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Params.Strings = (&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;'SchemaOverride=%.dbo'&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;'DriverUnit=DBXMSSQL'&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;'DriverPackageLoader=TDBXDynalinkDriverLoader,DBXCommonDriver150.' +&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;'bpl'&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;'DriverAssemblyLoader=Borland.Data.TDBXDynalinkDriverLoader,Borla' +&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;'nd.Data.DbxCommonDriver,Version=15.0.0.0,Culture=neutral,PublicK' +&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;'eyToken=91d62ebb5b0d1b1b'&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;'MetaDataPackageLoader=TDBXMsSqlMetaDataCommandFactory,DbxMSSQLDr' +&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;'iver150.bpl'&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;'MetaDataAssemblyLoader=Borland.Data.TDBXMsSqlMetaDataCommandFact' +&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;'ory,Borland.Data.DbxMSSQLDriver,Version=15.0.0.0,Culture=neutral' +&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;',PublicKeyToken=91d62ebb5b0d1b1b'&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;'GetDriverFunc=getSQLDriverMSSQL'&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;'LibraryName=dbxmss.dll'&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;'VendorLib=sqlncli10.dll'&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;'MaxBlobSize=-1'&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;'OSAuthentication=False'&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;'PrepareSQL=True'&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;'DriverName=MSSQL'&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;'HostName=SAKANOTE-PC\SQLEXPRESS'&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;'Database=AdventureWorks'&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;'User_Name=sa'&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;'Password=sysdba'&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;'BlobSize=-1'&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;'ErrorResourceFile='&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;'LocaleCode=0000'&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;'IsolationLevel=ReadCommitted'&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;'OS Authentication=False'&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;'Prepare SQL=False'&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;'ConnectTimeout=60'&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;'Mars_Connection=False')&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;VendorLib = 'sqlncli10.dll'&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Connected = True&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Left = 464&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Top = 56&lt;br /&gt;&amp;nbsp;&amp;nbsp;end&lt;br /&gt;&amp;nbsp;&amp;nbsp;object ADOQuery1: TADOQuery&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Connection = ADOConnection1&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;CursorType = ctStatic&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Parameters = &amp;lt;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;SQL.Strings = (&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;'SELECT Object_ID, Name FROM SYS.TABLES')&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Left = 16&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Top = 488&lt;br /&gt;&amp;nbsp;&amp;nbsp;end&lt;br /&gt;&amp;nbsp;&amp;nbsp;object DataSetProvider1: TDataSetProvider&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;DataSet = ADOQuery1&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Left = 56&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Top = 504&lt;br /&gt;&amp;nbsp;&amp;nbsp;end&lt;br /&gt;&amp;nbsp;&amp;nbsp;object ClientDataSet1: TClientDataSet&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Active = True&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Aggregates = &amp;lt;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Params = &amp;lt;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;ProviderName = 'DataSetProvider1'&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Left = 88&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Top = 504&lt;br /&gt;&amp;nbsp;&amp;nbsp;end&lt;br /&gt;&amp;nbsp;&amp;nbsp;object DataSource1: TDataSource&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;DataSet = ClientDataSet1&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Left = 24&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Top = 184&lt;br /&gt;&amp;nbsp;&amp;nbsp;end&lt;br /&gt;&amp;nbsp;&amp;nbsp;object ADOQuery2: TADOQuery&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Connection = ADOConnection1&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;CursorType = ctStatic&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Parameters = &amp;lt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;item&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Name = 'Object_ID'&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;DataType = ftInteger&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Value = 14623095&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;end&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;SQL.Strings = (&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;'SELECT Object_ID , NAME FROM sys.columns')&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Left = 144&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Top = 504&lt;br /&gt;&amp;nbsp;&amp;nbsp;end&lt;br /&gt;&amp;nbsp;&amp;nbsp;object ClientDataSet2: TClientDataSet&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Active = True&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Aggregates = &amp;lt;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;IndexFieldNames = 'Object_ID'&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;MasterFields = 'Object_ID'&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;MasterSource = DataSource1&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;PacketRecords = 0&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Params = &amp;lt;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;ProviderName = 'DataSetProvider2'&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Left = 208&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Top = 504&lt;br /&gt;&amp;nbsp;&amp;nbsp;end&lt;br /&gt;&amp;nbsp;&amp;nbsp;object DataSetProvider2: TDataSetProvider&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;DataSet = ADOQuery2&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Left = 176&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Top = 504&lt;br /&gt;&amp;nbsp;&amp;nbsp;end&lt;br /&gt;&amp;nbsp;&amp;nbsp;object DataSource2: TDataSource&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;DataSet = ClientDataSet2&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Left = 96&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Top = 176&lt;br /&gt;&amp;nbsp;&amp;nbsp;end&lt;br /&gt;&amp;nbsp;&amp;nbsp;object ClientDataSet3: TClientDataSet&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Active = True&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Aggregates = &amp;lt;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Params = &amp;lt;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;ProviderName = 'DataSetProvider3'&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Left = 464&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Top = 112&lt;br /&gt;&amp;nbsp;&amp;nbsp;end&lt;br /&gt;&amp;nbsp;&amp;nbsp;object DataSetProvider3: TDataSetProvider&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;DataSet = SQLQuery1&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Left = 464&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Top = 168&lt;br /&gt;&amp;nbsp;&amp;nbsp;end&lt;br /&gt;&amp;nbsp;&amp;nbsp;object SQLQuery1: TSQLQuery&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;MaxBlobSize = -1&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Params = &amp;lt;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;SQL.Strings = (&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;'SELECT Object_ID, Name FROM SYS.TABLES')&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;SQLConnection = SQLConnection1&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Left = 464&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Top = 216&lt;br /&gt;&amp;nbsp;&amp;nbsp;end&lt;br /&gt;&amp;nbsp;&amp;nbsp;object DataSource3: TDataSource&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;DataSet = ClientDataSet3&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Left = 456&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Top = 280&lt;br /&gt;&amp;nbsp;&amp;nbsp;end&lt;br /&gt;&amp;nbsp;&amp;nbsp;object DataSetProvider4: TDataSetProvider&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;DataSet = SQLQuery2&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Left = 600&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Top = 176&lt;br /&gt;&amp;nbsp;&amp;nbsp;end&lt;br /&gt;&amp;nbsp;&amp;nbsp;object ClientDataSet4: TClientDataSet&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Active = True&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Aggregates = &amp;lt;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;IndexFieldNames = 'Object_ID'&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;MasterFields = 'Object_ID'&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;MasterSource = DataSource3&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;PacketRecords = 0&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Params = &amp;lt;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;ProviderName = 'DataSetProvider4'&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Left = 592&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Top = 104&lt;br /&gt;&amp;nbsp;&amp;nbsp;end&lt;br /&gt;&amp;nbsp;&amp;nbsp;object DataSource4: TDataSource&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;DataSet = ClientDataSet4&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Left = 576&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Top = 280&lt;br /&gt;&amp;nbsp;&amp;nbsp;end&lt;br /&gt;&amp;nbsp;&amp;nbsp;object SQLQuery2: TSQLQuery&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;MaxBlobSize = -1&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Params = &amp;lt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;item&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;DataType = ftInteger&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Name = 'Object_ID'&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ParamType = ptInput&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Value = 14623095&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;end&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;SQL.Strings = (&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;'SELECT Object_ID , NAME FROM sys.columns')&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;SQLConnection = SQLConnection1&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Left = 584&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Top = 240&lt;br /&gt;&amp;nbsp;&amp;nbsp;end&lt;br /&gt;end&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-5817886984524145229?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/5817886984524145229/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=5817886984524145229' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/5817886984524145229'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/5817886984524145229'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2010/09/sql-server-2.html' title='SQL Server のデータベースのテーブルとフィールド名を表示する。（その2)'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_ga1vA17U6Hs/TJtowcMM_-I/AAAAAAAAAC8/yYfTZCk6yDs/s72-c/%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-8082159200589612909</id><published>2010-09-23T23:35:00.001+09:00</published><updated>2010-09-23T23:43:23.836+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='備忘録'/><category scheme='http://www.blogger.com/atom/ns#' term='へなちょこTips'/><title type='text'>SQL Server のデータベースのテーブルとフィールド名を表示する。（その1)</title><content type='html'>仕事でSql Serverのテーブルリストを表示する必要があったので・・・&lt;br /&gt;&lt;br /&gt;DelphiでSQl Srerverのテーブルリストを表示する方法をいくつか&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1. dbGOのConnectionのGetTableNamesメソッドとGetFieldNamesメソッドを利用する。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;dbGoのGetTableNamesを利用すればInitial_Catalogで指定したデータベースの&lt;br /&gt;テーブルリストを取得できます。&lt;br /&gt;&lt;br /&gt;また、GetFieldNamesを利用すれば、指定したテーブルのフィールドのリストを表示できます。&lt;br /&gt;&lt;br /&gt;ソースは、こんな感じ・・・&lt;br /&gt;（ボタンをクリックするとテーブルのリストを表示し、リストの中のテーブルをクリックすると&lt;br /&gt;クリックしたテーブルのリストを表示します。）&lt;br /&gt;&lt;br /&gt;&lt;pre class="delphi" name="code"&gt;procedure TForm1.Button1Click(Sender: TObject);&lt;br /&gt;begin&lt;br /&gt;  ADOConnection1.Connected := true;&lt;br /&gt;  ADOConnection1.GetTableNames(ListBox1.Items,false);&lt;br /&gt;  ADOConnection1.Connected := false;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;procedure TForm1.ListBox1Click(Sender: TObject);&lt;br /&gt;var&lt;br /&gt;  TableName : String;&lt;br /&gt;begin&lt;br /&gt;   if ListBox1.Items.Count &amp;gt; 0 then&lt;br /&gt;   begin&lt;br /&gt;      TableName := ListBox1.Items[ListBox1.ItemIndex];&lt;br /&gt;      if Length(TableName) &amp;gt; 0 then&lt;br /&gt;      begin&lt;br /&gt;        ADOConnection1.Connected := true;&lt;br /&gt;        ADOConnection1.GetFieldNames(TableName,ListBox2.Items);&lt;br /&gt;        ADOConnection1.Connected := false;&lt;br /&gt;      end;&lt;br /&gt;   end;&lt;br /&gt;end;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;2. DbExpressを利用する。&lt;br /&gt;&lt;br /&gt;DbExpressのSQLConnectionにもGetTableNamesメソッドとGetFieldNamesがあるので&lt;br /&gt;dbGOと同様に処理できます。&lt;br /&gt;&lt;br /&gt;ただし、試した中では、DbExpressでは、スキーマを指定しないとdboスキーマのテーブル&lt;br /&gt;しか取得しないようなので、GetSchemaNamesでスキーマ名のリストを取得したうえで&lt;br /&gt;スキーマ毎にテーブルを取得する必要がありました。&lt;br /&gt;&lt;br /&gt;でソースはこんな感じ。スキーマ名を取得してる関係でちょっと複雑です。&lt;br /&gt;&lt;br /&gt;&lt;pre class="delphi" name="code"&gt;procedure TForm1.Button1Click(Sender: TObject);&lt;br /&gt;&lt;br /&gt;procedure TForm1.Button2Click(Sender: TObject);&lt;br /&gt;var&lt;br /&gt;  GetSchemaNames : TStringList;&lt;br /&gt;  TableNames : TStringList;&lt;br /&gt;  i,j : Integer;&lt;br /&gt;begin&lt;br /&gt;  ListBox3.Items.Clear;&lt;br /&gt;  SQLConnection1.Connected := true;&lt;br /&gt;  GetSchemaNames := TStringList.Create;&lt;br /&gt;  try&lt;br /&gt;    SQLConnection1.GetSchemaNames(GetSchemaNames);&lt;br /&gt;    for i := 0 to GetSchemaNames.Count -1 do&lt;br /&gt;    begin&lt;br /&gt;      TableNames := TStringList.Create;&lt;br /&gt;      try&lt;br /&gt;        SQLConnection1.GetTableNames(TableNames,GetSchemaNames.Strings[i],false);&lt;br /&gt;        for j := 0 to TableNames.Count-1 do&lt;br /&gt;        begin&lt;br /&gt;          ListBox3.Items.Add(GetSchemaNames.Strings[i] + '.' + TableNames.Strings[j]);&lt;br /&gt;        end;&lt;br /&gt;      finally&lt;br /&gt;        TableNames.Free;&lt;br /&gt;      end;&lt;br /&gt;    end;&lt;br /&gt;  finally&lt;br /&gt;    GetSchemaNames.Free;&lt;br /&gt;  end;&lt;br /&gt;  SQLConnection1.Connected := false;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;procedure TForm1.ListBox3Click(Sender: TObject);&lt;br /&gt;var&lt;br /&gt;  TableName : String;&lt;br /&gt;begin&lt;br /&gt;   if ListBox1.Items.Count &amp;gt; 0 then&lt;br /&gt;   begin&lt;br /&gt;      TableName := ListBox3.Items[ListBox3.ItemIndex];&lt;br /&gt;      if Length(TableName) &amp;gt; 0 then&lt;br /&gt;      begin&lt;br /&gt;        SQLConnection1.Connected := true;&lt;br /&gt;        SQLConnection1.GetFieldNames(TableName,ListBox4.Items);&lt;br /&gt;        SQLConnection1.Connected := false;&lt;br /&gt;      end;&lt;br /&gt;&lt;br /&gt;   end;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-8082159200589612909?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/8082159200589612909/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=8082159200589612909' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/8082159200589612909'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/8082159200589612909'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2010/09/sql-server-1.html' title='SQL Server のデータベースのテーブルとフィールド名を表示する。（その1)'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-2948560651101266070</id><published>2010-09-12T21:45:00.000+09:00</published><updated>2010-09-12T21:45:35.641+09:00</updated><title type='text'>JoinStringはないの？（その２）</title><content type='html'>&lt;a href="http://delfusa.main.jp/delfusafloor/"&gt;Delフサさん&lt;/a&gt;から指摘を受けましたので、オープン配列版のJoinString関数を&lt;br /&gt;作成してみました。(Delフサ様ご指摘ありがとうございます。）&lt;br /&gt;&lt;br /&gt;でついでに、文字列の最後にDelemeterを付加するかどうかを指定できる&lt;br /&gt;オーバーロード関数をも作ってみました。&lt;br /&gt;&lt;br /&gt;以下、ソースコード&lt;br /&gt;&lt;br /&gt;&lt;pre class="delphi" name="code"&gt;unit VbLikeStringUtil;&lt;br /&gt;&lt;br /&gt;interface&lt;br /&gt;&lt;br /&gt;uses&lt;br /&gt;  StrUtils,Types;&lt;br /&gt;&lt;br /&gt;  function JoinString(AStrings : Array of String; Delemeter: String) : String overload;&lt;br /&gt;  function JoinString(AStrings : Array of String; Delemeter: String; AddLastDelemeter : Boolean) : String overload;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;implementation&lt;br /&gt;&lt;br /&gt;uses&lt;br /&gt;  SysUtils;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;function JoinString(AStrings : Array of String; Delemeter: String) : String overload;&lt;br /&gt;begin&lt;br /&gt;  Result := JoinString(AStrings,Delemeter,false);&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;function JoinString(AStrings : Array of String; Delemeter: String; AddLastDelemeter : Boolean) : String overload;&lt;br /&gt;var&lt;br /&gt;  i : Longint;&lt;br /&gt;begin&lt;br /&gt;&lt;br /&gt;  Result := '';&lt;br /&gt;  if (Length(AStrings) &amp;gt; 0) then&lt;br /&gt;  begin&lt;br /&gt;&lt;br /&gt;    //最後の&lt;br /&gt;    for i := low(AStrings) to high(AStrings)-1 do&lt;br /&gt;    begin&lt;br /&gt;      Result := Result + AStrings[i] + Delemeter;&lt;br /&gt;    end;&lt;br /&gt;&lt;br /&gt;    //文字配列の最後の要素&lt;br /&gt;    Result := Result + AStrings[high(AStrings)];&lt;br /&gt;&lt;br /&gt;    //最後にデリミターを付加する場合&lt;br /&gt;    if AddLastDelemeter then&lt;br /&gt;    begin&lt;br /&gt;      Result := Result + Delemeter;&lt;br /&gt;    end;&lt;br /&gt;&lt;br /&gt;  end;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;でテストコードはこんな感じ。&lt;br /&gt;&lt;br /&gt;&lt;pre class="delphi" name="code"&gt;unit Unit1;&lt;br /&gt;&lt;br /&gt;interface&lt;br /&gt;&lt;br /&gt;uses&lt;br /&gt;  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,&lt;br /&gt;  Dialogs, StdCtrls;&lt;br /&gt;&lt;br /&gt;type&lt;br /&gt;  TForm1 = class(TForm)&lt;br /&gt;    Button1: TButton;&lt;br /&gt;    Label1: TLabel;&lt;br /&gt;    Button2: TButton;&lt;br /&gt;    procedure Button1Click(Sender: TObject);&lt;br /&gt;    procedure Button2Click(Sender: TObject);&lt;br /&gt;  private&lt;br /&gt;    { Private 宣言 }&lt;br /&gt;  public&lt;br /&gt;    { Public 宣言 }&lt;br /&gt;  end;&lt;br /&gt;&lt;br /&gt;var&lt;br /&gt;  Form1: TForm1;&lt;br /&gt;&lt;br /&gt;implementation&lt;br /&gt;&lt;br /&gt;uses&lt;br /&gt;  StrUtils,Types, VbLikeStringUtil;&lt;br /&gt;&lt;br /&gt;{$R *.dfm}&lt;br /&gt;&lt;br /&gt;procedure TForm1.Button1Click(Sender: TObject);&lt;br /&gt;var&lt;br /&gt;  JoinItems : TStringDynArray;&lt;br /&gt;begin&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  SetLength(JoinItems,5);&lt;br /&gt;&lt;br /&gt;  JoinItems[0] := 'イージス';&lt;br /&gt;  JoinItems[1] := 'ジャスティス';&lt;br /&gt;  JoinItems[2] := 'ザク';&lt;br /&gt;  JoinItems[3] := 'セイバー';&lt;br /&gt;  JoinItems[4] := 'グフ';&lt;br /&gt;&lt;br /&gt;  Assert('イージス|ジャスティス|ザク|セイバー|グフ'=JoinString(JoinItems,'|'));&lt;br /&gt;&lt;br /&gt;  Label1.Caption := JoinString(JoinItems,'|');&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;procedure TForm1.Button2Click(Sender: TObject);&lt;br /&gt;begin&lt;br /&gt;&lt;br /&gt;  //空配列の場合は空文字を返す&lt;br /&gt;  Assert(''=JoinString([],'|'));&lt;br /&gt;&lt;br /&gt;  //通常の場合&lt;br /&gt;  Assert('ミリアリア|キラ|メイリン|バルトフェルド'&lt;br /&gt;     = JoinString(['ミリアリア','キラ','メイリン','バルトフェルド'],'|'));&lt;br /&gt;&lt;br /&gt;  //オプションの第３引数にTrueを指定すると文字列の最後にデリミタを付加します。&lt;br /&gt;  Assert('ミリアリア|キラ|メイリン|バルトフェルド|'&lt;br /&gt;     = JoinString(['ミリアリア','キラ','メイリン','バルトフェルド'],'|',true));&lt;br /&gt;&lt;br /&gt;  Label1.Caption := JoinString(['ミリアリア','キラ','メイリン','バルトフェルド'],'|',true);&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;end.&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;ちなみに、今回の文字列は、Seedの自分の好きなキャラシリーズです。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-2948560651101266070?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/2948560651101266070/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=2948560651101266070' title='1 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/2948560651101266070'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/2948560651101266070'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2010/09/joinstring_12.html' title='JoinStringはないの？（その２）'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-4683677582476452909</id><published>2010-09-05T01:07:00.000+09:00</published><updated>2010-09-05T01:07:35.923+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='へなちょこTips XE'/><title type='text'>JoinStringはないの？</title><content type='html'>VB6のJoin関数および.Net FrameworkのString.Joinメソッドは、&lt;br /&gt;XEで追加されたほどSplitString使用頻度は多くないがたまに必要に&lt;br /&gt;なることがある。&lt;br /&gt;&lt;br /&gt;Help,ソースをざっくり見たところなさそうだったので実装してみた。&lt;br /&gt;（といっても文字列を連結しただけですが・・・)&lt;br /&gt;&lt;br /&gt;以下、ソースコード&lt;br /&gt;&lt;br /&gt;&lt;pre class="delphi" name="code"&gt;unit VbLikeStringUtil;&lt;br /&gt;&lt;br /&gt;interface&lt;br /&gt;&lt;br /&gt;uses&lt;br /&gt;  StrUtils,Types;&lt;br /&gt;&lt;br /&gt;  function JoinString(AStrings: TStringDynArray; Delemeter : String) : String;&lt;br /&gt;&lt;br /&gt;implementation&lt;br /&gt;&lt;br /&gt;uses&lt;br /&gt;  SysUtils;&lt;br /&gt;&lt;br /&gt;function JoinString(AStrings: TStringDynArray; Delemeter : String) : String;&lt;br /&gt;var&lt;br /&gt;  i : Longint;&lt;br /&gt;begin&lt;br /&gt;&lt;br /&gt;  Result := '';&lt;br /&gt;  for i := low(AStrings) to high(AStrings) do&lt;br /&gt;  begin&lt;br /&gt;    Result := Result + AStrings[i];&lt;br /&gt;    if i &amp;lt; high(AStrings) then Result := Result + Delemeter;&lt;br /&gt;  end;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;end.&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;実際の使用方法のサンプルは、こんな感じ&lt;br /&gt;&lt;br /&gt;&lt;pre class="delphi" name="code"&gt;unit Unit1;&lt;br /&gt;&lt;br /&gt;interface&lt;br /&gt;&lt;br /&gt;uses&lt;br /&gt;  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,&lt;br /&gt;  Dialogs, StdCtrls;&lt;br /&gt;&lt;br /&gt;type&lt;br /&gt;  TForm1 = class(TForm)&lt;br /&gt;    Button1: TButton;&lt;br /&gt;    Label1: TLabel;&lt;br /&gt;    procedure Button1Click(Sender: TObject);&lt;br /&gt;  private&lt;br /&gt;    { Private 宣言 }&lt;br /&gt;  public&lt;br /&gt;    { Public 宣言 }&lt;br /&gt;  end;&lt;br /&gt;&lt;br /&gt;var&lt;br /&gt;  Form1: TForm1;&lt;br /&gt;&lt;br /&gt;implementation&lt;br /&gt;&lt;br /&gt;uses&lt;br /&gt;  StrUtils,Types, VbLikeStringUtil;&lt;br /&gt;&lt;br /&gt;{$R *.dfm}&lt;br /&gt;&lt;br /&gt;procedure TForm1.Button1Click(Sender: TObject);&lt;br /&gt;var&lt;br /&gt;  JoinItems : TStringDynArray;&lt;br /&gt;begin&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  SetLength(JoinItems,5);&lt;br /&gt;&lt;br /&gt;  JoinItems[0] := 'イージス';&lt;br /&gt;  JoinItems[1] := 'ジャスティス';&lt;br /&gt;  JoinItems[2] := 'ザク';&lt;br /&gt;  JoinItems[3] := 'セイバー';&lt;br /&gt;  JoinItems[4] := 'グフ';&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  Label1.Caption := JoinString(JoinItems,'|');&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;end.&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-4683677582476452909?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/4683677582476452909/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=4683677582476452909' title='2 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/4683677582476452909'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/4683677582476452909'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2010/09/joinstring.html' title='JoinStringはないの？'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-3366373485040710243</id><published>2010-09-03T23:52:00.001+09:00</published><updated>2010-09-10T22:00:13.008+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='へなちょこTips XE'/><title type='text'>SplitStringを試してみる。</title><content type='html'>Delphi XEでSplitString関数が追加された。VBにあって、Delphiになかった関数で&lt;br /&gt;個人的には気になってた関数です。（欲しかった関数です。）&lt;br /&gt;&lt;br /&gt;で、ちょっとためしてみた。&lt;br /&gt;&lt;br /&gt;以下、ソースコード&lt;br /&gt;&lt;br /&gt;&lt;pre class="delphi" name="code"&gt;unit Unit1;&lt;br /&gt;&lt;br /&gt;interface&lt;br /&gt;&lt;br /&gt;uses&lt;br /&gt;  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,&lt;br /&gt;  Dialogs, StdCtrls;&lt;br /&gt;&lt;br /&gt;type&lt;br /&gt;  TForm1 = class(TForm)&lt;br /&gt;    Button1: TButton;&lt;br /&gt;    Label1: TLabel;&lt;br /&gt;    ListBox1: TListBox;&lt;br /&gt;    procedure Button1Click(Sender: TObject);&lt;br /&gt;  private&lt;br /&gt;    { Private 宣言 }&lt;br /&gt;  public&lt;br /&gt;    { Public 宣言 }&lt;br /&gt;  end;&lt;br /&gt;&lt;br /&gt;var&lt;br /&gt;  Form1: TForm1;&lt;br /&gt;&lt;br /&gt;implementation&lt;br /&gt;&lt;br /&gt;{$R *.dfm}&lt;br /&gt;&lt;br /&gt;uses&lt;br /&gt;  StrUtils,Types;&lt;br /&gt;&lt;br /&gt;procedure TForm1.Button1Click(Sender: TObject);&lt;br /&gt;var&lt;br /&gt;  TestString : String;&lt;br /&gt;  SplitResult:TStringDynArray;&lt;br /&gt;begin&lt;br /&gt;  TestString := 'フリーダム,ジャスティス,デストロイ,セイバー';&lt;br /&gt;  SplitResult := SplitString(TestString,',');&lt;br /&gt;  Label1.Caption := TestString;&lt;br /&gt;&lt;br /&gt;  for TestString in SplitResult do begin&lt;br /&gt;    ListBox1.Items.Add(TestString);&lt;br /&gt;  end;&lt;br /&gt;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;end.&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Visual Basicライクで非常に簡単に使えます。&lt;br /&gt;&lt;br /&gt;内部的には、FindDelimiter関数を使ってDelemeterをみつけ&lt;br /&gt;Copy関数で部分文字列を切り出してます。&lt;br /&gt;&lt;br /&gt;これなら、下位バージョンでも実装できそうですね。&lt;br /&gt;&lt;br /&gt;ところでFindDelimiter関数は、いつから存在したのでしょうか？&lt;br /&gt;個人的には、Delphiにはまだまだ知らない便利な関数が一杯ありそうです。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2010.09.10 &lt;a href="http://www.gesource.jp/weblog/"&gt;山本隆の開発日記&lt;/a&gt;で紹介して頂いたので&lt;br /&gt;調子にのってC++ Builderで書いてみました。&lt;br /&gt;(C++は自信がないので、役に立つかどうかわかりませんが・・・)&lt;br /&gt;&lt;br /&gt;&lt;pre class="cpp" name="code"&gt;//---------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;#include &lt;vcl.h&gt;&lt;br /&gt;#include &lt;strutils.hpp&gt;&lt;br /&gt;#pragma hdrstop&lt;br /&gt;&lt;br /&gt;#include "Unit1.h"&lt;br /&gt;//---------------------------------------------------------------------------&lt;br /&gt;#pragma package(smart_init)&lt;br /&gt;#pragma resource "*.dfm"&lt;br /&gt;TForm1 *Form1;&lt;br /&gt;//---------------------------------------------------------------------------&lt;br /&gt;__fastcall TForm1::TForm1(TComponent* Owner)&lt;br /&gt; : TForm(Owner)&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;//---------------------------------------------------------------------------&lt;br /&gt;void __fastcall TForm1::Button1Click(TObject *Sender)&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt; UnicodeString TestString = "イージス|バスター|デュエル|ブリッツ|ストライク";&lt;br /&gt;&lt;br /&gt; LabeledEdit1-&amp;gt;Text = TestString;&lt;br /&gt;&lt;br /&gt; TStringDynArray SplitResult = SplitString(TestString,"|");&lt;br /&gt;&lt;br /&gt; for (int i = 0; i &amp;lt; SplitResult.Length; i ++) {&lt;br /&gt;  ListBox1-&amp;gt;Items-&amp;gt;Add(SplitResult[i]);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; SplitResult.set_length(0);&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;//---------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;&lt;/strutils.hpp&gt;&lt;/vcl.h&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-3366373485040710243?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/3366373485040710243/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=3366373485040710243' title='2 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/3366373485040710243'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/3366373485040710243'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2010/09/splitstring.html' title='SplitStringを試してみる。'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-6470850317967190214</id><published>2010-05-03T09:44:00.001+09:00</published><updated>2010-05-03T09:45:38.696+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='備忘録'/><category scheme='http://www.blogger.com/atom/ns#' term='へなちょこTips'/><title type='text'>SameValue関数</title><content type='html'>&lt;a href="http://stackoverflow.com/questions/2754240/delphi-math-why-is-0-70-70"&gt;StackOverFlowのTopicのトピック&lt;/a&gt;を見ていてDelphiのMathユニットに&lt;br /&gt;&lt;br /&gt;&lt;a href="http://docwiki.embarcadero.com/VCL/ja/Math.SameValue"&gt;SameValue関数&lt;/a&gt;なる関数が用意されていることを初めて知りました。&lt;br /&gt;&lt;br /&gt;この関数は、指定した値が、２つの値がEpsilonで指定した値以内に&lt;br /&gt;あれば、等しいと見なす関数です。&lt;br /&gt;&lt;br /&gt;DelphiというかVCL(RTLも含むには）便利な&lt;a href="http://docwiki.embarcadero.com/RADStudio/ja/%E6%AF%94%E8%BC%83%E3%83%AB%E3%83%BC%E3%83%81%E3%83%B3"&gt;比較関数&lt;/a&gt;が用意されています。&lt;br /&gt;&lt;br /&gt;今まで、都度都度、自作していたかと思うとちょっと反省。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-6470850317967190214?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://docwiki.embarcadero.com/VCL/ja/Math.SameValue' title='SameValue関数'/><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/6470850317967190214/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=6470850317967190214' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/6470850317967190214'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/6470850317967190214'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2010/05/samevalue.html' title='SameValue関数'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-8062064305553153764</id><published>2010-04-17T15:37:00.001+09:00</published><updated>2010-04-17T16:16:42.150+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='へなちょこTips'/><title type='text'>プロセスリストを表示する。</title><content type='html'>プロセスの一覧を表示するサンプルです。&lt;br /&gt;&lt;br /&gt;Toolhelp32(DelphではTlHelp32)が使える環境では&lt;br /&gt;比較的簡単ですが、&lt;br /&gt;&lt;br /&gt;&lt;pre class="delphi" name="code"&gt;procedure TForm1.Button2Click(Sender: TObject);&lt;br /&gt;var&lt;br /&gt; ProcEntry : TProcessEntry32W;&lt;br /&gt;   SanpshotHandle : THandle;&lt;br /&gt;begin&lt;br /&gt; //Toolhelp32を使用する例&lt;br /&gt;   SanpshotHandle := TlHelp32.CreateToolhelp32Snapshot(TlHelp32.TH32CS_SNAPPROCESS,0);&lt;br /&gt;   if (SanpshotHandle &lt;&gt; -1) then&lt;br /&gt;   begin&lt;br /&gt;    ListBox1.Items.Clear;&lt;br /&gt;    ProcEntry.dwSize := Sizeof(TProcessEntry32W);&lt;br /&gt;      if (TlHelp32.Process32First(SanpshotHandle, ProcEntry)) Then&lt;br /&gt;      begin&lt;br /&gt;         repeat&lt;br /&gt;          ListBox1.Items.Add(ProcEntry.szExeFile);&lt;br /&gt;         until (TlHelp32.Process32Next(SanpshotHandle,ProcEntry) = false);&lt;br /&gt;      end;&lt;br /&gt;   end;&lt;br /&gt;   CloseHandle(SanpshotHandle);&lt;br /&gt;&lt;br /&gt;end;&lt;br /&gt;&lt;/Pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;使えない環境(といいても、4.0以下のNTだけですが・・・）だと&lt;br /&gt;大変です。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="delphi" name="code"&gt;procedure TForm1.Button1Click(Sender: TObject);&lt;br /&gt;var&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; cb : Cardinal;&lt;br /&gt;&amp;nbsp;&amp;nbsp; elements : Cardinal;&lt;br /&gt;&amp;nbsp;&amp;nbsp; Needs : Cardinal;&lt;br /&gt;&amp;nbsp;&amp;nbsp; ProcIdArray : Array of DWORD;&lt;br /&gt;&amp;nbsp;&amp;nbsp; Win32Ret : LongBool;&lt;br /&gt;&amp;nbsp;&amp;nbsp; i : Cardinal;&lt;br /&gt;&amp;nbsp;&amp;nbsp; ProcHandle : THandle;&lt;br /&gt;&amp;nbsp;&amp;nbsp; OpenMode : THandle;&lt;br /&gt;&amp;nbsp;&amp;nbsp; ProcessName : String;&lt;br /&gt;&lt;br /&gt;begin&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //プロセス数がいくつあるか解らないので大きめにとっておく&lt;br /&gt;&amp;nbsp;&amp;nbsp; elements := 128;&lt;br /&gt;&amp;nbsp;&amp;nbsp; Needs := elements * Sizeof(DWORD);&lt;br /&gt;&amp;nbsp;&amp;nbsp; cb := 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp; while (cb &amp;lt;= Needs) do&lt;br /&gt;&amp;nbsp;&amp;nbsp; begin&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; SetLength(ProcIdArray, elements);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; cb := Length(ProcIdArray) * Sizeof(DWORD);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Needs := 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Win32Ret := PsApi.EnumProcesses(PDWORD(ProcIdArray),cb,Needs);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //APIが失敗したら抜ける&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (not(Win32Ret)) then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; begin&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //領域が足りなかったときに備えて倍にする。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; elements := elements * 2;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; end;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; if (Win32Ret) then&lt;br /&gt;&amp;nbsp;&amp;nbsp; begin&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ListBox1.Items.Clear;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; OpenMode := Windows.PROCESS_QUERY_INFORMATION or Windows.PROCESS_VM_READ;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; elements := Needs div Sizeof(DWORD);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; for i := 0 to elements - 1 do&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; begin&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; //プロセスIDから情報をえる&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ProcHandle := Windows.OpenProcess(OpenMode,FALSE,ProcIdArray[i]);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (ProcHandle &amp;lt;&amp;gt; 0) then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; begin&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ProcessName := GetProcessName(ProcHandle);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (Length(ProcessName) &amp;gt; 0) then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; begin&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ListBox1.Items.Add(ProcessName);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Windows.CloseHandle(ProcHandle);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;br /&gt;&amp;nbsp;&amp;nbsp; end;&lt;br /&gt;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;function TForm1.GetProcessName(ProcessHandle: THandle): String;&lt;br /&gt;var&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; cb : Cardinal;&lt;br /&gt;&amp;nbsp;&amp;nbsp; elements : Cardinal;&lt;br /&gt;&amp;nbsp;&amp;nbsp; Needs : Cardinal;&lt;br /&gt;&amp;nbsp;&amp;nbsp; ModuleHandleArray : Array of THandle;&lt;br /&gt;&amp;nbsp;&amp;nbsp; Win32Ret : LongBool;&lt;br /&gt;&amp;nbsp;&amp;nbsp; i : longint;&lt;br /&gt;&amp;nbsp;&amp;nbsp; ModuleHandle: THandle;&lt;br /&gt;&amp;nbsp;&amp;nbsp; ModuleName : WideString;&lt;br /&gt;&amp;nbsp;&amp;nbsp; ModeleNameLength : Integer;&lt;br /&gt;&amp;nbsp;&amp;nbsp; ProcessName : String;&lt;br /&gt;&amp;nbsp;&amp;nbsp; FileExt : String;&lt;br /&gt;begin&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Result := '';&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //モジュール数数がいくつあるか解らないので大きめにとっておく&lt;br /&gt;&amp;nbsp;&amp;nbsp; elements := 128;&lt;br /&gt;&amp;nbsp;&amp;nbsp; Needs := elements * Sizeof(DWORD);&lt;br /&gt;&amp;nbsp;&amp;nbsp; cb := 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp; while (cb &amp;lt;= Needs) do&lt;br /&gt;&amp;nbsp;&amp;nbsp; begin&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; SetLength(ModuleHandleArray, elements);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; cb := Length(ModuleHandleArray) * Sizeof(DWORD);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Needs := 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Win32Ret := PsApi.EnumProcessModules(ProcessHandle,PDWORD(ModuleHandleArray),cb,Needs);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //APIが失敗したら抜ける&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (not(Win32Ret)) then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; begin&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //領域が足りなかったときに備えて倍にする。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; elements := elements * 2;&lt;br /&gt;&amp;nbsp;&amp;nbsp; end;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; if (Win32Ret) then&lt;br /&gt;&amp;nbsp;&amp;nbsp; begin&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ModeleNameLength := 255;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SetLength(ModuleName,ModeleNameLength);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; elements := Needs div Sizeof(DWORD);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; for i := 0 to elements - 1 do&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; begin&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ModuleHandle := ModuleHandleArray[i];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ModeleNameLength := PsApi.GetModuleBaseName(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ProcessHandle,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ModuleHandle,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PWideChar(ModuleName),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ModeleNameLength);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (ModeleNameLength &amp;gt; 0) then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; begin&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; //モジュール名がExeファイルであればプロセスとみなす。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; SetLength(ModuleName,ModeleNameLength);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ProcessName := ModuleName;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FileExt := ExtractFileExt(ProcessName);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (CompareText(FileExt,'.EXE') = 0)&amp;nbsp; then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; begin&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Result :=&amp;nbsp; ProcessName;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;br /&gt;&amp;nbsp;&amp;nbsp; end;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-8062064305553153764?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/8062064305553153764/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=8062064305553153764' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/8062064305553153764'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/8062064305553153764'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2010/04/blog-post.html' title='プロセスリストを表示する。'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-2571705593575690897</id><published>2009-10-26T21:55:00.003+09:00</published><updated>2009-10-26T22:42:55.992+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='へなちょこTips'/><title type='text'>IOUtilsユニットをつかってみる（その1)</title><content type='html'>Delphi2010で追加されたIOUtilsユニットを使ってファイルリスト&lt;br /&gt;（正確にはファイル名のリスト）を取得するだけであれば、&lt;br /&gt;&lt;br /&gt;TDirectory.GetFilesメソッドで簡単に取得できます。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://oldtpfun-dotnet-memo.blogspot.com/2009/10/blog-post.html"&gt;Delphi Prism(.Net版）とほぼ同じ形でかけます&lt;/a&gt;。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;GetFilesメソッドはいくつかOverLoadの定義がありますが、&lt;br /&gt;&lt;br /&gt;今回は、&lt;br /&gt;&lt;br /&gt;function GetFiles(const Path: string;&lt;br /&gt; const SearchPattern: string;&lt;br /&gt; const SearchOption: TSearchOption): TStringDynArray; overload; static;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;を使用した簡単なサンプルを作ってみました。&lt;br /&gt;&lt;br /&gt;ここで、Pathは検索パス&lt;br /&gt;　　　　SearchPatternは、検索パターン(全検索は'*')&lt;br /&gt;　     SearchOptionは、&lt;br /&gt;　　　　　サブディレクトリも検索するときはsoAllDirectories&lt;br /&gt;　　　　　指定したディレクトリのみを検索するときは、soTopDirectoryOnly&lt;br /&gt;を指定します。&lt;br /&gt;&lt;br /&gt;以下、サンプルプログラム&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="delphi"&gt;&lt;br /&gt;procedure TForm1.ButtonExecGetFileClick(Sender: TObject);&lt;br /&gt;var&lt;br /&gt;MyDir : IOUtils.TDirectory;&lt;br /&gt; FileList : TStringDynArray;&lt;br /&gt; FileName : String;&lt;br /&gt;begin&lt;br /&gt;&lt;br /&gt;ListBox1.Clear;&lt;br /&gt;&lt;br /&gt;if Self.CheckBoxFindSubDir.Checked then&lt;br /&gt; begin&lt;br /&gt; FileList := MyDir.GetFiles(EditStartPath.Text,'*',TSearchOption.soAllDirectories);&lt;br /&gt; end&lt;br /&gt; else&lt;br /&gt; begin&lt;br /&gt; FileList := MyDir.GetFiles(EditStartPath.Text,'*.XLS',TSearchOption.soTopDirectoryOnly);&lt;br /&gt; end;&lt;br /&gt;&lt;br /&gt; for FileName In FileList do&lt;br /&gt; begin&lt;br /&gt;  ListBox1.Items.Add(FileName);&lt;br /&gt; end;&lt;br /&gt;&lt;br /&gt;end;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;と結構簡単にかけます。&lt;br /&gt;（ただ、ファイル数が多いとなかなか帰ってこないです。)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-2571705593575690897?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/2571705593575690897/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=2571705593575690897' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/2571705593575690897'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/2571705593575690897'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2009/10/ioutils1.html' title='IOUtilsユニットをつかってみる（その1)'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-8222239904306683764</id><published>2009-10-24T08:24:00.002+09:00</published><updated>2009-10-24T08:27:40.476+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CodeGearブログWatch'/><title type='text'>Delphi 2010 Survey</title><content type='html'>http://wings-of-wind.com/2009/10/23/newsflash-the-official-delphi-2010-survey/&lt;br /&gt;&lt;br /&gt;によると、Delphi Surveyが始まったみたいだ。&lt;br /&gt;&lt;br /&gt;来週か、再来週には、日本語でできるのかな？&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-8222239904306683764?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/8222239904306683764/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=8222239904306683764' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/8222239904306683764'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/8222239904306683764'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2009/10/delphi-2010-survey.html' title='Delphi 2010 Survey'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-5167337169111053528</id><published>2009-10-07T22:29:00.002+09:00</published><updated>2009-10-07T22:42:51.546+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='へなちょこTips'/><category scheme='http://www.blogger.com/atom/ns#' term='2010'/><title type='text'>Rttiを使ってClientDataSetを作ってみる</title><content type='html'>以前、Team Japanのブログに&lt;a href="http://blogs.embarcadero.com/teamj/2009/08/07/686/"&gt;EmployeeクラスのインスタンスからInsert文を&lt;br /&gt;生成するサンプル&lt;/a&gt;のポストがありましたが、ちょっと改良してTClientDataSetを&lt;br /&gt;動的生成する例を書いてみた。（って使い道があるかちょっと疑問です。）&lt;br /&gt;&lt;br /&gt;一応ソースは、こんな感じ&lt;br /&gt;&lt;pre name="code" class="delphi"&gt;&lt;br /&gt;unit Unit3;&lt;br /&gt;&lt;br /&gt;interface&lt;br /&gt;&lt;br /&gt;uses&lt;br /&gt;　　DBClient;&lt;br /&gt;&lt;br /&gt;  type DataSetOperator = Record&lt;br /&gt;     function CreateDataSet(obj : TObject) : TClientDataSet;&lt;br /&gt;     function AddRecord(cds : TClientDataSet; obj : TObject) : Boolean;&lt;br /&gt;  End;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;implementation&lt;br /&gt;&lt;br /&gt;uses&lt;br /&gt; Rtti,TypInfo, DB, SysUtils;&lt;br /&gt;{ DataSetFactory }&lt;br /&gt;&lt;br /&gt;function DataSetOperator.AddRecord(cds: TClientDataSet; obj: TObject): Boolean;&lt;br /&gt;var&lt;br /&gt; ctx    : TRttiContext;&lt;br /&gt; rtp    : TRttiProperty;&lt;br /&gt; rtps   : TArray&lt;trttiproperty&gt;;&lt;br /&gt;begin&lt;br /&gt;&lt;br /&gt; ctx := TRttiContext.Create;&lt;br /&gt;&lt;br /&gt; rtps := ctx.FindType(obj.UnitName + '.' + obj.ClassName).GetProperties;&lt;br /&gt;  cds.Append;&lt;br /&gt; for rtp in rtps do&lt;br /&gt; begin&lt;br /&gt;   cds.FieldByName(rtp.Name).Value := rtp.GetValue(obj).AsVariant;&lt;br /&gt; end;&lt;br /&gt;  cds.UpdateRecord;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;function DataSetOperator.CreateDataSet(obj: TObject): TClientDataSet;&lt;br /&gt;var&lt;br /&gt; ctx    : TRttiContext;&lt;br /&gt; rtp    : TRttiProperty;&lt;br /&gt; rtps   : TArray&lt;trttiproperty&gt;;&lt;br /&gt; cds    : TClientDataSet;&lt;br /&gt; ft     : TFieldType;&lt;br /&gt;  fn     : String;&lt;br /&gt;  ftSize : Integer;&lt;br /&gt;  //ftdf : TFieldDef;&lt;br /&gt;begin&lt;br /&gt;&lt;br /&gt; cds := TClientDataSet.Create(nil);&lt;br /&gt;&lt;br /&gt; ctx := TRttiContext.Create;&lt;br /&gt;&lt;br /&gt; rtps := ctx.FindType(obj.UnitName + '.' + obj.ClassName).GetProperties;&lt;br /&gt;&lt;br /&gt; for rtp in rtps do&lt;br /&gt; begin&lt;br /&gt;   //ここがちょっとダサイかも&lt;br /&gt;     //DelphiのRTTIの型とDBの型のマッチング&lt;br /&gt;     ftSize := 0;&lt;br /&gt;     if CompareText(rtp.PropertyType.Name,'Integer') = 0 then ft := ftInteger;&lt;br /&gt;     if CompareText(rtp.PropertyType.Name,'String')  = 0 then&lt;br /&gt;     begin&lt;br /&gt;    ft := ftString;&lt;br /&gt;        ftSize := 50;&lt;br /&gt;     end;&lt;br /&gt;     if CompareText(rtp.PropertyType.Name,'TDateTime') = 0 then ft := ftDateTime;&lt;br /&gt;     if CompareText(rtp.PropertyType.Name,'Currency') = 0 then ft := ftCurrency;&lt;br /&gt;     //if CompareText(rtp.PropertyType.Name,'Currency') = 0 then ft := ftCurrency;&lt;br /&gt;&lt;br /&gt;     cds.FieldDefs.Add(rtp.Name,ft,ftSize);&lt;br /&gt;&lt;br /&gt; end;&lt;br /&gt;  cds.CreateDataSet;&lt;br /&gt;  Result := cds;&lt;br /&gt;  //cds.FieldDefs.Add();&lt;br /&gt;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;end.&lt;br /&gt;&lt;br /&gt;&lt;/trttiproperty&gt;&lt;/trttiproperty&gt;&lt;/pre&gt;DBのデータ型の列挙とRTTIのデータ型の列挙が微妙に違っているので&lt;br /&gt;そのマッピングを少々強引に行ってます。&lt;br /&gt;&lt;br /&gt;で、上のユニットを利用する例が&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="delphi"&gt;&lt;br /&gt;unit Unit1;&lt;br /&gt;&lt;br /&gt;interface&lt;br /&gt;&lt;br /&gt;uses&lt;br /&gt;  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,&lt;br /&gt;  Dialogs, StdCtrls, DB, Grids, DBGrids;&lt;br /&gt;&lt;br /&gt;type&lt;br /&gt;  TForm1 = class(TForm)&lt;br /&gt;    DBGrid1: TDBGrid;&lt;br /&gt;    DataSource1: TDataSource;&lt;br /&gt;    Button1: TButton;&lt;br /&gt;    procedure Button1Click(Sender: TObject);&lt;br /&gt;  private&lt;br /&gt;    { Private 宣言 }&lt;br /&gt;  public&lt;br /&gt;    { Public 宣言 }&lt;br /&gt;  end;&lt;br /&gt;&lt;br /&gt;var&lt;br /&gt;  Form1: TForm1;&lt;br /&gt;&lt;br /&gt;implementation&lt;br /&gt;&lt;br /&gt;uses Unit2, Unit3,DBClient;&lt;br /&gt;&lt;br /&gt;{$R *.dfm}&lt;br /&gt;&lt;br /&gt;procedure TForm1.Button1Click(Sender: TObject);&lt;br /&gt;var&lt;br /&gt; Emp : TEmployee;&lt;br /&gt;   DF  : DataSetOperator;&lt;br /&gt;   cds : TClientDataSet;&lt;br /&gt;begin&lt;br /&gt;&lt;br /&gt; Emp := TEmployee.Create;&lt;br /&gt;&lt;br /&gt;   cds := DF.CreateDataSet(Emp);&lt;br /&gt;   cds.Active := true;&lt;br /&gt; DataSource1.DataSet := cds;&lt;br /&gt;   //DataSource1.DataSet.Active := true;&lt;br /&gt;&lt;br /&gt;   Emp.EmpNo := 2;&lt;br /&gt;   Emp.FirstName := 'OldTPFun';&lt;br /&gt;   Emp.LastName := 'Delphi';&lt;br /&gt;   Emp.HireDate := StrToDate('2009/10/07');&lt;br /&gt;   Emp.Salary := 100000.00;&lt;br /&gt;   DF.AddRecord(cds,Emp);&lt;br /&gt;&lt;br /&gt;   Emp.Free;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;end.&lt;br /&gt;&lt;/Pre&gt;&lt;br /&gt;&lt;br /&gt;このプログラム上で使っているEmployee型の定義は以下のとおりです。&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="delphi"&gt;&lt;br /&gt;&lt;br /&gt;unit Unit2;&lt;br /&gt;&lt;br /&gt;interface&lt;br /&gt;&lt;br /&gt; type TEmployee = class&lt;br /&gt;   private&lt;br /&gt;    FEmpNo: Integer;&lt;br /&gt;    FFirstName: String;&lt;br /&gt;    FLastName: String;&lt;br /&gt;    FHireDate: TDateTime;&lt;br /&gt;    FSalary: Currency;&lt;br /&gt;    procedure SetEmpNo(const Value: Integer);&lt;br /&gt;    procedure SetFirstName(const Value: String);&lt;br /&gt;    procedure SetLastName(const Value: String);&lt;br /&gt;    procedure SetHireDate(const Value: TDateTime);&lt;br /&gt;    procedure SetSalary(const Value: Currency);&lt;br /&gt;   public&lt;br /&gt;    property EmpNo : Integer read FEmpNo write SetEmpNo;&lt;br /&gt;    property FirstName : String read FFirstName write SetFirstName;&lt;br /&gt;      property LastName : String read FLastName write SetLastName;&lt;br /&gt;      property HireDate : TDateTime read FHireDate write SetHireDate;&lt;br /&gt;      property Salary : Currency read FSalary write SetSalary;&lt;br /&gt;   end;&lt;br /&gt;implementation&lt;br /&gt;&lt;br /&gt;{ TEmployee }&lt;br /&gt;&lt;br /&gt;procedure TEmployee.SetEmpNo(const Value: Integer);&lt;br /&gt;begin&lt;br /&gt;  FEmpNo := Value;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;procedure TEmployee.SetFirstName(const Value: String);&lt;br /&gt;begin&lt;br /&gt;  FFirstName := Value;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;procedure TEmployee.SetHireDate(const Value: TDateTime);&lt;br /&gt;begin&lt;br /&gt;  FHireDate := Value;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;procedure TEmployee.SetLastName(const Value: String);&lt;br /&gt;begin&lt;br /&gt;  FLastName := Value;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;procedure TEmployee.SetSalary(const Value: Currency);&lt;br /&gt;begin&lt;br /&gt;  FSalary := Value;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;end.&lt;br /&gt;&lt;/Pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-5167337169111053528?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/5167337169111053528/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=5167337169111053528' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/5167337169111053528'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/5167337169111053528'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2009/10/rtticlientdataset.html' title='Rttiを使ってClientDataSetを作ってみる'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-176149825243824222</id><published>2009-09-03T21:41:00.002+09:00</published><updated>2009-09-03T21:52:27.313+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='へなちょこTips'/><category scheme='http://www.blogger.com/atom/ns#' term='2010'/><title type='text'>TValue型を試してみる</title><content type='html'>Rttiユニットで新たに定義されたTValue型は、汎用に使えるデータ型に&lt;br /&gt;なっていて、Delphiで使う基本的な型は、Implicit演算子が定義されており&lt;br /&gt;代入可能になっている。&lt;br /&gt;&lt;br /&gt;で、実験してみた。以下ソースコード&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="delphi"&gt;&lt;br /&gt;&lt;br /&gt;program Project1;&lt;br /&gt;{$APPTYPE CONSOLE}&lt;br /&gt;&lt;br /&gt;uses&lt;br /&gt;  SysUtils,&lt;br /&gt;  rtti,&lt;br /&gt;  typinfo;&lt;br /&gt;&lt;br /&gt;var&lt;br /&gt;  tv: TValue;&lt;br /&gt;  obj: TObject;&lt;br /&gt;  intary: Array of TValue;&lt;br /&gt;&lt;br /&gt;begin&lt;br /&gt;  try&lt;br /&gt;      { TODO -oUser -cConsole Main : ここにコードを記述してください }&lt;br /&gt;      // 先ずは何も入れない場合&lt;br /&gt;      if tv.IsEmpty then&lt;br /&gt;      begin&lt;br /&gt;          writeln('TValueはからです');&lt;br /&gt;      end;&lt;br /&gt;&lt;br /&gt;      tv := 100;&lt;br /&gt;      writeln('TValueは' + tv.TypeInfo.Name + 'です。');&lt;br /&gt;&lt;br /&gt;      tv := 100.0;&lt;br /&gt;      writeln('TValueは' + tv.TypeInfo.Name + 'です。');&lt;br /&gt;&lt;br /&gt;      tv := 'saka';&lt;br /&gt;&lt;br /&gt;      writeln('TValueは' + tv.TypeInfo.Name + 'です。');&lt;br /&gt;&lt;br /&gt;      obj := TObject.Create;&lt;br /&gt;      tv := obj;&lt;br /&gt;      writeln('TValueは' + tv.TypeInfo.Name + 'です。');&lt;br /&gt;&lt;br /&gt;      tv := obj.ClassType;&lt;br /&gt;      writeln('TValueは' + tv.TypeInfo.Name + 'です。');&lt;br /&gt;&lt;br /&gt;      obj.Free;&lt;br /&gt;&lt;br /&gt;end.&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;で実行した様子が下図。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_ga1vA17U6Hs/Sp-72XkJ_yI/AAAAAAAAACE/rzI8tRa9L24/s1600-h/%E7%84%A1%E9%A1%8C.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 234px;" src="http://4.bp.blogspot.com/_ga1vA17U6Hs/Sp-72XkJ_yI/AAAAAAAAACE/rzI8tRa9L24/s320/%E7%84%A1%E9%A1%8C.PNG" alt="" id="BLOGGER_PHOTO_ID_5377223022816657186" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-176149825243824222?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/176149825243824222/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=176149825243824222' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/176149825243824222'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/176149825243824222'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2009/09/tvalue.html' title='TValue型を試してみる'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_ga1vA17U6Hs/Sp-72XkJ_yI/AAAAAAAAACE/rzI8tRa9L24/s72-c/%E7%84%A1%E9%A1%8C.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-5783122197117145792</id><published>2009-08-29T23:11:00.003+09:00</published><updated>2009-09-01T05:37:48.846+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='へなちょこTips'/><category scheme='http://www.blogger.com/atom/ns#' term='2010'/><title type='text'>Rttiを試してみるその４</title><content type='html'>&lt;a href="http://nonothoughtman.blogspot.com/2009/08/rtti.html"&gt;以前のポストで&lt;/a&gt;、可視性がPrivateのメソッドは、読めないということを&lt;br /&gt;記述しましたが、実際には、&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 102, 0);font-size:130%;" &gt;自分で定義したメソッドであれば&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;コンパイラ指定{$RTTI EXPLICIT METHODS}で&lt;br /&gt;TRttiContextのGetMehtodで列挙する可視性を制御することが可能のようです。&lt;br /&gt;&lt;br /&gt;{$RTTI EXPLICIT METHODS([vcPublished,vcPublic,vcProtected,vcPrivate])}&lt;br /&gt;&lt;br /&gt;とすれば、すべての可視性の列挙が可能です。（正し、継承元のメソッドには&lt;br /&gt;可視性の制御は及ばない見たいです。）&lt;br /&gt;&lt;br /&gt;また、&lt;br /&gt;&lt;br /&gt;{$RTTI EXPLICIT METHODS([vcPrivate])}&lt;br /&gt;&lt;br /&gt;とすれば、Private可視性のメソッドの列挙が可能です。&lt;br /&gt;&lt;br /&gt;以下、検証ように使ったソースです。&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="delphi"&gt;&lt;br /&gt;unit Unit1;&lt;br /&gt;&lt;br /&gt;interface&lt;br /&gt;&lt;br /&gt;uses&lt;br /&gt; Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,&lt;br /&gt; Dialogs, StdCtrls, CheckLst;&lt;br /&gt;&lt;br /&gt;type&lt;br /&gt; TForm1 = class(TForm)&lt;br /&gt;   Button1: TButton;&lt;br /&gt;   CheckListBox1: TCheckListBox;&lt;br /&gt;   procedure Button1Click(Sender: TObject);&lt;br /&gt; private&lt;br /&gt;   { Private 宣言 }&lt;br /&gt; public&lt;br /&gt;   { Public 宣言 }&lt;br /&gt; end;&lt;br /&gt;&lt;br /&gt;var&lt;br /&gt; Form1: TForm1;&lt;br /&gt;&lt;br /&gt;implementation&lt;br /&gt;&lt;br /&gt;uses Rtti,Typinfo,Unit2;&lt;br /&gt;&lt;br /&gt;{$R *.dfm}&lt;br /&gt;&lt;br /&gt;procedure TForm1.Button1Click(Sender: TObject);&lt;br /&gt;var&lt;br /&gt; ctx : TRttiContext;&lt;br /&gt; rtmary : TArray&lt;rtti.trttimethod&gt;;&lt;br /&gt; rtm : TRttiMethod;&lt;br /&gt; obj : TObject;&lt;br /&gt; Args : Array of TValue;&lt;br /&gt; rtp : TRttiType;&lt;br /&gt; idx : Integer;&lt;br /&gt;begin&lt;br /&gt;&lt;br /&gt; ctx := TRttiContext.Create;&lt;br /&gt;&lt;br /&gt; //自分で定義したメソッドのみを取得するには、&lt;br /&gt; //GetDeclaredMethodsを使います。&lt;br /&gt; rtmary := ctx.GetType(Unit2.TSakaTest).GetDeclaredMethods;&lt;br /&gt; //rtmary := ctx.GetType(Unit2.TSakaTest).GetMethods();&lt;br /&gt;&lt;br /&gt; CheckListBox1.Clear;&lt;br /&gt;&lt;br /&gt; if rtmary &lt;&gt; nil then&lt;br /&gt; begin&lt;br /&gt;   for rtm in rtmary do&lt;br /&gt;   begin&lt;br /&gt;     idx := CheckListBox1.Items.Add(rtm.Name);&lt;br /&gt;     if rtm.Visibility = TMemberVisibility.mvPrivate then&lt;br /&gt;     begin&lt;br /&gt;         CheckListBox1.Checked[idx] := true;&lt;br /&gt;     end;&lt;br /&gt;&lt;br /&gt;   end;&lt;br /&gt;&lt;br /&gt; end;&lt;br /&gt;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;end.&lt;br /&gt;&lt;/rtti.trttimethod&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="delphi"&gt;&lt;br /&gt;&lt;br /&gt;unit Unit2;&lt;br /&gt;interface&lt;br /&gt;&lt;br /&gt;   uses classes;&lt;br /&gt;&lt;br /&gt;//   {$RTTI EXPLICIT METHODS([vcPublished,vcPublic,vcPrivate])}&lt;br /&gt;  {$RTTI EXPLICIT METHODS([vcPrivate])}&lt;br /&gt;  Type TSakaTest = Class(TObject)&lt;br /&gt;      private&lt;br /&gt;         function SayPrivateMessage : String;&lt;br /&gt;     public&lt;br /&gt;         function SayPublicMessage : String;&lt;br /&gt;  End;&lt;br /&gt;&lt;br /&gt;implementation&lt;br /&gt;&lt;br /&gt;{ TSakaTest }&lt;br /&gt;&lt;br /&gt;function TSakaTest.SayPrivateMessage: String;&lt;br /&gt;begin&lt;br /&gt;  Result := 'This is a Private Method';&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;function TSakaTest.SayPublicMessage: String;&lt;br /&gt;begin&lt;br /&gt;  Result := 'This is a Public Method';&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;end.&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-5783122197117145792?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/5783122197117145792/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=5783122197117145792' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/5783122197117145792'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/5783122197117145792'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2009/08/rtti_6746.html' title='Rttiを試してみるその４'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-6128932096453070058</id><published>2009-08-29T22:36:00.002+09:00</published><updated>2009-08-29T22:45:29.932+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='へなちょこTips'/><title type='text'>Rttiを試してみるその３</title><content type='html'>文字列で指定したクラスのインスタンスを作成する例を作ってみました。&lt;br /&gt;(Button3Click）&lt;br /&gt;試行錯誤のうえで作成したソースなので、とりあえず動きましたが&lt;br /&gt;正しいソースかどうかは、分かりません。もっと良い方法が&lt;br /&gt;あれば教えて下さい。&lt;br /&gt;&lt;br /&gt;この手の処理はActivatorクラスのある.Netのほうが簡単だと&lt;br /&gt;思います。&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="delphi"&gt;&lt;br /&gt;unit Unit1;&lt;br /&gt;&lt;br /&gt;interface&lt;br /&gt;&lt;br /&gt;uses&lt;br /&gt;  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,&lt;br /&gt;  Dialogs, StdCtrls, ExtCtrls,Unit2;&lt;br /&gt;&lt;br /&gt;type&lt;br /&gt;  TForm2 = class(TForm)&lt;br /&gt;    Button3: TButton;&lt;br /&gt;    LabeledEdit1: TLabeledEdit;&lt;br /&gt;    ListBox1: TListBox;&lt;br /&gt;    Button1: TButton;&lt;br /&gt;    Label1: TLabel;&lt;br /&gt;    procedure Button3Click(Sender: TObject);&lt;br /&gt;    procedure Button1Click(Sender: TObject);&lt;br /&gt;  private&lt;br /&gt;    { Private 宣言 }&lt;br /&gt;  protected&lt;br /&gt;  public&lt;br /&gt;    { Public 宣言 }&lt;br /&gt;&lt;br /&gt;  end;&lt;br /&gt;&lt;br /&gt;var&lt;br /&gt;  Form1: TForm2;&lt;br /&gt;implementation&lt;br /&gt;uses&lt;br /&gt;  Rtti,TypInfo;&lt;br /&gt;&lt;br /&gt;{$R *.dfm}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;procedure TForm2.Button1Click(Sender: TObject);&lt;br /&gt;var&lt;br /&gt;  LContext: TRttiContext;&lt;br /&gt;  LType: TRttiType;&lt;br /&gt;  LTypes:TArray&lt;TRttiType&gt;;&lt;br /&gt;&lt;br /&gt;begin&lt;br /&gt;&lt;br /&gt; LoadPackage('SakaPack.bpl');&lt;br /&gt;&lt;br /&gt;  { Obtain the RTTI context }&lt;br /&gt;  LContext := TRttiContext.Create;&lt;br /&gt;&lt;br /&gt;  { Obtain the second package (rtl140) }&lt;br /&gt;  LTypes := LContext.GetTypes();&lt;br /&gt;&lt;br /&gt;  { Enumerate all types in the rtl140 package }&lt;br /&gt;&lt;br /&gt;   //for LPackage in LPackages do&lt;br /&gt; //begin&lt;br /&gt;      for LType in LTypes do&lt;br /&gt;      begin&lt;br /&gt;         ListBox1.Items.Add(LType.QualifiedName);&lt;br /&gt;      end;&lt;br /&gt;   //end;&lt;br /&gt;   ListBox1.Items.SaveToFile('P.Txt');&lt;br /&gt;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;procedure TForm2.Button3Click(Sender: TObject);&lt;br /&gt;var&lt;br /&gt; ctx : TRttiContext;&lt;br /&gt; rtm : TRttiMethod;&lt;br /&gt; rst : TValue;&lt;br /&gt; SakaInf : ISakaTest;&lt;br /&gt;   rtt : TRttiType;&lt;br /&gt;   Args : Array of TValue;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;begin&lt;br /&gt;&lt;br /&gt;   //とりあえず別パッケージで動的ロード化とする&lt;br /&gt;   LoadPackage('SakaPack.bpl');&lt;br /&gt;&lt;br /&gt; ctx := TRttiContext.Create;&lt;br /&gt;&lt;br /&gt;   //文字列で型情報を探す場合は、FindTypeを使う&lt;br /&gt;   //完全一致なのでユニット名を含めて指定&lt;br /&gt;   rtt := ctx.FindType('Unit2.' + LabeledEdit1.Text);&lt;br /&gt;&lt;br /&gt;   //コンストラクタはとりあえずCreateであることが前提&lt;br /&gt;   rtm := rtt.GetMethod('Create');&lt;br /&gt;&lt;br /&gt; if rtm &lt;&gt; nil then&lt;br /&gt; begin&lt;br /&gt;      if rtm.IsConstructor then&lt;br /&gt;      begin&lt;br /&gt;         //1. クラスの場合は、TRttiInstanceTypeで戻ってくるのでキャスト&lt;br /&gt;         //2. MetaaclassTypeプロパティで実際のクラスがとれるみたい。&lt;br /&gt;         rst := rtm.Invoke(TRttiInstanceType(rtt).MetaclassType,Args);&lt;br /&gt;         if rst.IsObject Then&lt;br /&gt;         begin&lt;br /&gt;            SakaInf := TSakaTest(rst.AsObject) As ISakaTest;&lt;br /&gt;            Label1.Caption := SakaInf.SayMessage();&lt;br /&gt;         end;&lt;br /&gt;            //Label1.Caption := obj.ClassName;&lt;br /&gt;      end;&lt;br /&gt;   end;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;end.&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;でUnit2で使ったソースがこちら&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="delphi"&gt;&lt;br /&gt;&lt;br /&gt;unit Unit2;&lt;br /&gt;&lt;br /&gt;interface&lt;br /&gt; uses classes;&lt;br /&gt;&lt;br /&gt;   {$RTTI EXPLICIT METHODS([vcPublic])}&lt;br /&gt; Type ISakaTest = interface(IInterface)&lt;br /&gt;  ['{FAAA20A5-E078-4E22-96C2-139E7E57CBFB}']&lt;br /&gt;  function SayMessage : String;&lt;br /&gt; end;&lt;br /&gt;&lt;br /&gt;   {$RTTI EXPLICIT METHODS([vcPublished,vcPublic])}&lt;br /&gt;   Type TSakaTest = Class(TInterfacedPersistent, ISakaTest)&lt;br /&gt;    function SayMessage : String; virtual;&lt;br /&gt;   End;&lt;br /&gt;&lt;br /&gt;   {$RTTI EXPLICIT METHODS([vcPublished,vcPublic])}&lt;br /&gt; Type TSakaTest1 = Class(TSakaTest)&lt;br /&gt;      Public&lt;br /&gt;       function  SayMessage : String; override;&lt;br /&gt;   End;&lt;br /&gt;&lt;br /&gt;   {$RTTI EXPLICIT METHODS([vcPublished,vcPublic])}&lt;br /&gt; Type TSakaTest2 = Class(TSakaTest)&lt;br /&gt;    Public&lt;br /&gt;      function  SayMessage : String; override;&lt;br /&gt;   End;&lt;br /&gt;&lt;br /&gt;var&lt;br /&gt;  SakaTest : ISakaTest;&lt;br /&gt;&lt;br /&gt;implementation&lt;br /&gt;&lt;br /&gt;//uses&lt;br /&gt; //Classes;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;{ TSakaTest1 }&lt;br /&gt;&lt;br /&gt;function TSakaTest1.SayMessage: String;&lt;br /&gt;begin&lt;br /&gt; Result := 'Hello Delphi First';&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;{ TSakaTest2 }&lt;br /&gt;&lt;br /&gt;function TSakaTest2.SayMessage: String;&lt;br /&gt;begin&lt;br /&gt; Result := 'Hello Delphi Second';&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;{ TSakaTset }&lt;br /&gt;&lt;br /&gt;function TSakaTest.SayMessage: String;&lt;br /&gt;begin&lt;br /&gt; Result := '';&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;initialization&lt;br /&gt;   RegisterClass(TSakaTest);&lt;br /&gt;   RegisterClass(TSakaTest1);&lt;br /&gt;   RegisterClass(TSakaTest2);&lt;br /&gt;&lt;br /&gt;end.&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-6128932096453070058?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/6128932096453070058/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=6128932096453070058' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/6128932096453070058'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/6128932096453070058'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2009/08/rtti_2705.html' title='Rttiを試してみるその３'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-1496769962752609847</id><published>2009-08-29T14:14:00.000+09:00</published><updated>2009-08-29T14:15:08.847+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CodeGearブログWatch'/><title type='text'>Jedi VCL Versionアップ</title><content type='html'>Delphi 2010の対応です。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-1496769962752609847?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/1496769962752609847/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=1496769962752609847' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/1496769962752609847'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/1496769962752609847'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2009/08/jedi-vcl-version.html' title='Jedi VCL Versionアップ'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-9133463881652699129</id><published>2009-08-29T07:52:00.002+09:00</published><updated>2009-08-29T07:57:21.092+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='備忘録'/><category scheme='http://www.blogger.com/atom/ns#' term='2010'/><title type='text'>ユニットを使うダイアログ</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_ga1vA17U6Hs/Sphf5iRYuEI/AAAAAAAAAB8/kTKPnPN8ycM/s1600-h/Unit%E8%BF%BD%E5%8A%A0.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 298px;" src="http://1.bp.blogspot.com/_ga1vA17U6Hs/Sphf5iRYuEI/AAAAAAAAAB8/kTKPnPN8ycM/s320/Unit%E8%BF%BD%E5%8A%A0.JPG" alt="" id="BLOGGER_PHOTO_ID_5375151597323597890" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Unitの追加先を選択できるようになってたんだ。&lt;br /&gt;気づかなかった。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-9133463881652699129?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/9133463881652699129/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=9133463881652699129' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/9133463881652699129'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/9133463881652699129'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2009/08/blog-post_29.html' title='ユニットを使うダイアログ'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_ga1vA17U6Hs/Sphf5iRYuEI/AAAAAAAAAB8/kTKPnPN8ycM/s72-c/Unit%E8%BF%BD%E5%8A%A0.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-6535666355725747906</id><published>2009-08-29T00:10:00.004+09:00</published><updated>2009-09-01T22:00:23.860+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='へなちょこTips'/><title type='text'>Rttiを試して見るその２</title><content type='html'>前回のポストに引き続いて、メソッドの動的呼び出し。&lt;br /&gt;&lt;br /&gt;整数の足し算を行う例です。以下ソース&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="delphi"&gt;&lt;br /&gt;unit Unit1;&lt;br /&gt;&lt;br /&gt;interface&lt;br /&gt;&lt;br /&gt;uses&lt;br /&gt; Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,&lt;br /&gt; Dialogs, StdCtrls, ExtCtrls;&lt;br /&gt;&lt;br /&gt;type&lt;br /&gt; TForm1 = class(TForm)&lt;br /&gt;   Button3: TButton;&lt;br /&gt;   LabeledEdita: TLabeledEdit;&lt;br /&gt;   Label1: TLabel;&lt;br /&gt;   LabeledEditb: TLabeledEdit;&lt;br /&gt;   Label2: TLabel;&lt;br /&gt;   LabelResult: TLabel;&lt;br /&gt;   procedure Button3Click(Sender: TObject);&lt;br /&gt; private&lt;br /&gt;   { Private 宣言 }&lt;br /&gt; protected&lt;br /&gt; public&lt;br /&gt;   { Public 宣言 }&lt;br /&gt;   function Sakasum(a,b : Integer) : Integer;&lt;br /&gt;&lt;br /&gt; end;&lt;br /&gt;&lt;br /&gt;var&lt;br /&gt; Form1: TForm1;&lt;br /&gt;&lt;br /&gt;implementation&lt;br /&gt;uses&lt;br /&gt; Rtti,TypInfo;&lt;br /&gt;&lt;br /&gt;{$R *.dfm}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;procedure TForm1.Button3Click(Sender: TObject);&lt;br /&gt;var&lt;br /&gt; ctx : TRttiContext;&lt;br /&gt; rtm : TRttiMethod;&lt;br /&gt; Args : Array of Rtti.TValue;&lt;br /&gt; rst : TValue;&lt;br /&gt;begin&lt;br /&gt; //&lt;br /&gt; ctx := TRttiContext.Create;&lt;br /&gt; rtm := ctx.GetType(Self.ClassType).GetMethod('SakaSum');&lt;br /&gt;&lt;br /&gt; if rtm &lt;&gt; nil then&lt;br /&gt; begin&lt;br /&gt;   SetLength(Args,2);&lt;br /&gt;   //TValueは、演算子Implicitが定義されているので基本的な型は&lt;br /&gt;   //変換による代入が可能&lt;br /&gt;   Args[0] := StrToInt(LabeledEdita.Text);&lt;br /&gt;   Args[1] := StrToInt(LabeledEditb.Text);&lt;br /&gt;   rst := rtm.Invoke(Self,Args);&lt;br /&gt;   //結果はAsXXXXX関数を使って取り出せる。&lt;br /&gt;   Self.LabelResult.Caption := IntToStr(rst.AsInteger);&lt;br /&gt; end;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;function TForm1.Sakasum(a, b: Integer): Integer;&lt;br /&gt;begin&lt;br /&gt; Result := a + b;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;end.&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;TValueの使い方が分からなくて結構悩みました。&lt;br /&gt;&lt;br /&gt;で、ソースをみたら基本的な型については、&lt;br /&gt;Implicit演算子のオーバーロードが&lt;br /&gt;定義されているのね。&lt;br /&gt;&lt;br /&gt;このへんはHelpに書いといて欲しかったです。&lt;br /&gt;(C++ のHELPには書いてあります。）&lt;br /&gt;&lt;br /&gt;（英語版のDoc Wikiがメンテナンス中だったので&lt;br /&gt;日本語版でのみ書いていないのかはちょっと不明です。）&lt;br /&gt;&lt;br /&gt;また、&lt;a href="http://oldtpfun-dotnet-memo.blogspot.com/2009/08/rtti.html"&gt;こちらにDelphi Prismで上記と同様な処理を&lt;br /&gt;記述しました&lt;/a&gt;。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-6535666355725747906?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/6535666355725747906/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=6535666355725747906' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/6535666355725747906'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/6535666355725747906'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2009/08/rtti_29.html' title='Rttiを試して見るその２'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-1230110965215229116</id><published>2009-08-28T00:41:00.004+09:00</published><updated>2009-08-28T01:20:20.038+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='へなちょこTips'/><title type='text'>Rttiを試して見る</title><content type='html'>動的にメソッドを読み出す簡単なプログラムを作ってみました。&lt;br /&gt;プログラムそのものには意味はありません。&lt;br /&gt;&lt;br /&gt;プレビュー会に説明があったようにprivateなメソッドは読めませんでした。&lt;br /&gt;メソッドの可視属性を示す型があったので読めてもよいと思ったのですが・・・&lt;br /&gt;&lt;br /&gt;また、GetDeclaredMethodsをつかうと自分が宣言したメソッドのみ&lt;br /&gt;リストできます。&lt;br /&gt;&lt;br /&gt;以下ソースです。&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="delphi"&gt;&lt;br /&gt;unit Unit1;&lt;br /&gt;&lt;br /&gt;interface&lt;br /&gt;&lt;br /&gt;uses&lt;br /&gt; Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,&lt;br /&gt; Dialogs, StdCtrls, ExtCtrls;&lt;br /&gt;&lt;br /&gt;type&lt;br /&gt; TForm1 = class(TForm)&lt;br /&gt;   Button1: TButton;&lt;br /&gt;   LabeledEdit1: TLabeledEdit;&lt;br /&gt;   Button2: TButton;&lt;br /&gt;   ListBox1: TListBox;&lt;br /&gt;   procedure Button1Click(Sender: TObject);&lt;br /&gt;   procedure Button2Click(Sender: TObject);&lt;br /&gt; private&lt;br /&gt;   { Private 宣言 }&lt;br /&gt;   //procedure SakaTest2;&lt;br /&gt; protected&lt;br /&gt;   //procedure SakaTest1;&lt;br /&gt;   procedure SakaTest2;&lt;br /&gt; public&lt;br /&gt;   { Public 宣言 }&lt;br /&gt;   procedure SakaTest2;&lt;br /&gt;   procedure SakaTest1;&lt;br /&gt; end;&lt;br /&gt;&lt;br /&gt;var&lt;br /&gt; Form1: TForm1;&lt;br /&gt;&lt;br /&gt;implementation&lt;br /&gt;uses&lt;br /&gt; Rtti,TypInfo;&lt;br /&gt;&lt;br /&gt;{$R *.dfm}&lt;br /&gt;&lt;br /&gt;procedure TForm1.Button1Click(Sender: TObject);&lt;br /&gt;var&lt;br /&gt; ctx : TRttiContext;&lt;br /&gt; rtm : Rtti.TRttiMethod;&lt;br /&gt; obj : TObject;&lt;br /&gt; Args : Array of TValue;&lt;br /&gt;begin&lt;br /&gt; //&lt;br /&gt; ctx := TRttiContext.Create;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; //rtm := ctx.GetType(obj).GetMethod(LabeledEdit1.Text);&lt;br /&gt;&lt;br /&gt; rtm := ctx.GetType(Self.ClassType).GetMethod(LabeledEdit1.Text);&lt;br /&gt;&lt;br /&gt; if rtm &lt;&gt; nil then&lt;br /&gt; begin&lt;br /&gt;   //obj := Self;&lt;br /&gt;   rtm.Invoke(Self,Args);&lt;br /&gt; end;&lt;br /&gt;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;procedure TForm1.Button2Click(Sender: TObject);&lt;br /&gt;var&lt;br /&gt; ctx : TRttiContext;&lt;br /&gt; rtmary : TArray&lt;rtti.trttimethod&gt;;&lt;br /&gt; rtm : TRttiMethod;&lt;br /&gt; obj : TObject;&lt;br /&gt; Args : Array of TValue;&lt;br /&gt; rtp : TRttiType;&lt;br /&gt;begin&lt;br /&gt;&lt;br /&gt; ctx := TRttiContext.Create;&lt;br /&gt;&lt;br /&gt; //rtm := ctx.GetType(obj).GetMethod(LabeledEdit1.Text);&lt;br /&gt; //ctx.FindType()&lt;br /&gt; //rtp := ctx.GetType(Self.ClassType);&lt;br /&gt; //rtp.IsPublicType := false;&lt;br /&gt;&lt;br /&gt; rtmary := ctx.GetType(Self.ClassType).GetDeclaredMethods;&lt;br /&gt;&lt;br /&gt; ListBox1.Clear;&lt;br /&gt;&lt;br /&gt; if rtmary &lt;&gt; nil then&lt;br /&gt; begin&lt;br /&gt;   for rtm in rtmary do&lt;br /&gt;   begin&lt;br /&gt;     ListBox1.Items.Add(rtm.Name);&lt;br /&gt;     if rtm.Name = LabeledEdit1.Text then&lt;br /&gt;     begin&lt;br /&gt;       rtm.Invoke(Self,Args);&lt;br /&gt;     end;&lt;br /&gt;&lt;br /&gt;   end;&lt;br /&gt;&lt;br /&gt; end;&lt;br /&gt;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;procedure TForm1.SakaTest1;&lt;br /&gt;begin&lt;br /&gt; Application.MessageBox('Hello Delphi','First Text');&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;procedure TForm1.SakaTest2;&lt;br /&gt;begin&lt;br /&gt; Application.MessageBox('Hello Delphi','Second Text');&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;end.&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;引数つきのメソッドコールはまた次回&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-1230110965215229116?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/1230110965215229116/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=1230110965215229116' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/1230110965215229116'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/1230110965215229116'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2009/08/rtti.html' title='Rttiを試して見る'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-1315671744973991616</id><published>2009-08-26T22:54:00.002+09:00</published><updated>2009-08-26T22:56:39.267+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='勝手な意見'/><title type='text'>サポートプログラムの配布方法</title><content type='html'>サポートプログラムの配布方法が&lt;br /&gt;メールによるキー送付に変わった。&lt;br /&gt;&lt;br /&gt;いち早く、使用できるのは良いが&lt;br /&gt;やっぱりメディアもあったほうが&lt;br /&gt;良いと思う。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-1315671744973991616?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/1315671744973991616/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=1315671744973991616' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/1315671744973991616'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/1315671744973991616'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2009/08/blog-post_26.html' title='サポートプログラムの配布方法'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-2953237465611533429</id><published>2009-08-25T21:41:00.003+09:00</published><updated>2009-08-27T22:04:26.475+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='備忘録'/><category scheme='http://www.blogger.com/atom/ns#' term='おばか'/><title type='text'>プログラマがマニュアル読まなくどうするの</title><content type='html'>タイトルだけみて、気分を悪くされた方すみません。&lt;br /&gt;&lt;br /&gt;これは、あくまでも自分への戒めのためのタイトルです。&lt;br /&gt;&lt;br /&gt;DEKO様はじめ、先日、ご助言頂いた方々どうもありがとうございました。&lt;br /&gt;なお、コメントは非公開と致しますのでご了承願います。&lt;br /&gt;&lt;br /&gt;DelphiのHelpがWikiかされたので、ちょっとのぞいていたら&lt;br /&gt;書いてあるんですわ。オブジェクトインスペクタの動作が・・・&lt;br /&gt;&lt;br /&gt;&lt;a href="http://docwiki.embarcadero.com/RADStudio/ja/%E3%83%97%E3%83%AD%E3%83%91%E3%83%86%E3%82%A3%E3%82%A8%E3%83%87%E3%82%A3%E3%82%BF%EF%BC%9A%E3%82%A4%E3%83%B3%E3%83%87%E3%83%83%E3%82%AF%E3%82%B9"&gt;ここに&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;大澤の親分の張本さんに&lt;span style="font-size:180%;"&gt;大喝&lt;/span&gt;を食らったうえに&lt;br /&gt;タイトルの台詞で叱咤されそうですわ。&lt;br /&gt;&lt;br /&gt;しばらくは、懺悔と精進の日々です。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-2953237465611533429?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/2953237465611533429/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=2953237465611533429' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/2953237465611533429'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/2953237465611533429'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2009/08/blog-post_25.html' title='プログラマがマニュアル読まなくどうするの'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-1213210686660198824</id><published>2009-08-25T21:17:00.002+09:00</published><updated>2009-08-25T21:25:30.353+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CodeGearブログWatch'/><title type='text'>Rad Stduio 2010発売</title><content type='html'>正式発表があった見たいですね。&lt;br /&gt;&lt;br /&gt;とりあえず、値段が据え置きでよかったです。&lt;br /&gt;（スタンダードサポートの更新料も据え置きのようです。）&lt;br /&gt;&lt;br /&gt;日本の公式サイトもエンバカデロドメインに移るようで&lt;br /&gt;しばらくはばたばたしそうですね。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-1213210686660198824?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/1213210686660198824/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=1213210686660198824' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/1213210686660198824'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/1213210686660198824'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2009/08/rad-stduio-2010.html' title='Rad Stduio 2010発売'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-6015541296548911023</id><published>2009-08-23T22:03:00.003+09:00</published><updated>2009-08-24T01:02:13.338+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CodeGearブログWatch'/><category scheme='http://www.blogger.com/atom/ns#' term='勝手な意見'/><title type='text'>Delphiのウィルスについて思うこと</title><content type='html'>遅ればせながらひとこと。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blogs.embarcadero.com/teamj/2009/08/21/767/"&gt;エンバカデロさんからは、ウィルスに関する(対策）情報を&lt;br /&gt;出す準備をしているとのこと&lt;/a&gt;であり、コミュニティ方々も&lt;br /&gt;いろいろな情報を出している。&lt;br /&gt;&lt;br /&gt;しかし、現状、ウィルスに狙われているバージョンは4～7で、&lt;br /&gt;&lt;a href="http://support.embarcadero.com/article/37740"&gt;エンバカデロさんのサポート情報&lt;/a&gt;によれば、すべて&lt;br /&gt;サポート終了バージョンになっている。&lt;br /&gt;（将来的には、新しいバージョンがターゲットになるかも&lt;br /&gt;しれません。）&lt;br /&gt;&lt;br /&gt;従って、Delphi4～7については、エンバカデロさんが&lt;br /&gt;対策をしないと言ったとしても、僕らは、文句を言うことは&lt;br /&gt;できないと思う。（言ってみるのは良いと思うが取り合って&lt;br /&gt;くれない可能性のほうが高い。）&lt;br /&gt;&lt;br /&gt;僕らにできることは、通常のウィルス対策と一緒のことですが&lt;br /&gt;Delphiを最新の状態に保つこと。&lt;br /&gt;すなわち、メーカのサポート中のバージョンの最新アップデートに&lt;br /&gt;することだと思う。&lt;br /&gt;&lt;br /&gt;ただ、開発言語（環境）で難しいのは、その環境の&lt;br /&gt;過去バージョンで作ったアプリのサポートが必要だと&lt;br /&gt;思う。&lt;br /&gt;&lt;br /&gt;Versionを上げることは、Versionアップそのものの作業と&lt;br /&gt;それに伴う動作検証に多大な労力がかかり、なおかつ&lt;br /&gt;DelphiのVersionアップ料で多大な費用がかかることになる。&lt;br /&gt;&lt;br /&gt;Delphiの開発元がBorland→Codegear-&gt;Embarcaderoと&lt;br /&gt;変わる間にすくなくとも日本では、値段が高くなり&lt;br /&gt;個人ユーザにはものすごい負担になると思う。&lt;br /&gt;&lt;br /&gt;また、既にDelphiでの開発を止めている企業さんも多いと思う。&lt;br /&gt;これらの企業さんは、メンテナンス用に古いバージョンを&lt;br /&gt;保持しているとは思うが、いまさら新バージョン投資するかどうかは、&lt;br /&gt;怪しいと思う。&lt;br /&gt;&lt;br /&gt;ただし、個人的には、上記のような理由があっても、セキュアな&lt;br /&gt;システムを提供するためにはVerupは提供する側の責任で&lt;br /&gt;あると思う。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-6015541296548911023?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/6015541296548911023/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=6015541296548911023' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/6015541296548911023'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/6015541296548911023'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2009/08/delphi.html' title='Delphiのウィルスについて思うこと'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-973647520724226457</id><published>2009-08-18T06:49:00.001+09:00</published><updated>2009-08-18T06:53:27.233+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='お詫び'/><category scheme='http://www.blogger.com/atom/ns#' term='お礼'/><category scheme='http://www.blogger.com/atom/ns#' term='おばか'/><title type='text'>穴があったら入りたい。</title><content type='html'>コメント頂いた皆様ありがとうございました。&lt;br /&gt;&lt;br /&gt;あまりのショボさに前のエントリーを非表示と致しました。&lt;br /&gt;&lt;br /&gt;前のエントリーについては、期間をおいてなんらかの形で&lt;br /&gt;復活させたいと思います。&lt;br /&gt;&lt;br /&gt;しかし、１０年以上使っててこんな初歩的なことを&lt;br /&gt;しらなかったなんて・・・・&lt;br /&gt;&lt;br /&gt;正に、穴があったら入りたい気分です。（穴はかなり深い穴が良いです。）&lt;br /&gt;&lt;br /&gt;もう一回基本を固めて出直しです。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-973647520724226457?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/973647520724226457/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=973647520724226457' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/973647520724226457'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/973647520724226457'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2009/08/blog-post_18.html' title='穴があったら入りたい。'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-5504512728970041049</id><published>2009-08-14T22:02:00.004+09:00</published><updated>2009-08-16T18:56:32.883+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='へなちょこTips'/><category scheme='http://www.blogger.com/atom/ns#' term='勝手な意見'/><category scheme='http://www.blogger.com/atom/ns#' term='おばか'/><title type='text'>IDEの配置（その１)</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_ga1vA17U6Hs/SoVgjH6gCbI/AAAAAAAAAB0/xBMAGd-9lCo/s1600-h/IDE%E9%85%8D%E7%BD%AE.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 266px;" src="http://4.bp.blogspot.com/_ga1vA17U6Hs/SoVgjH6gCbI/AAAAAAAAAB0/xBMAGd-9lCo/s320/IDE%E9%85%8D%E7%BD%AE.JPG" alt="" id="BLOGGER_PHOTO_ID_5369804287245289906" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;上の図は、自分のIDEの配置です。&lt;br /&gt;Visual Studioでオブジェクトインスペクタが右にあるのに&lt;br /&gt;なれちゃったのでオブジェクトインスペクタは右側に&lt;br /&gt;配置しています。&lt;br /&gt;&lt;br /&gt;また、ツールパレットなど、構造ペインなども右側に&lt;br /&gt;持っています。&lt;br /&gt;&lt;br /&gt;これは、自分が右利きだからです。&lt;br /&gt;&lt;br /&gt;意外に便利な配置なので、右利きの人は&lt;br /&gt;良かったら試して下さい。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-5504512728970041049?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/5504512728970041049/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=5504512728970041049' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/5504512728970041049'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/5504512728970041049'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2009/08/ide_14.html' title='IDEの配置（その１)'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_ga1vA17U6Hs/SoVgjH6gCbI/AAAAAAAAAB0/xBMAGd-9lCo/s72-c/IDE%E9%85%8D%E7%BD%AE.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-3114153137356709509</id><published>2009-08-14T10:24:00.004+09:00</published><updated>2009-08-14T22:10:13.136+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CodeGearブログWatch'/><category scheme='http://www.blogger.com/atom/ns#' term='その他'/><title type='text'>Rad Studio 2010の値段（米国）</title><content type='html'>&lt;a href="http://www.infoworld.com/d/developer-world/embarcadero-upgrading-former-borland-tools-431"&gt;Info Worldの記事&lt;/a&gt;によれば、エンプラ版のRad Studio 2010の米国での値段は&lt;br /&gt;2799ドル(日本円で約26万7千円）だそうです。&lt;br /&gt;&lt;br /&gt;さて、日本での値段はいくらになるのでしょうか？&lt;br /&gt;ちょっと心配&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-3114153137356709509?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/3114153137356709509/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=3114153137356709509' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/3114153137356709509'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/3114153137356709509'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2009/08/rad-studio-2010.html' title='Rad Studio 2010の値段（米国）'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-2685611224468696023</id><published>2009-08-11T07:10:00.001+09:00</published><updated>2009-08-11T07:12:58.586+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='勝手な意見'/><category scheme='http://www.blogger.com/atom/ns#' term='おばか'/><category scheme='http://www.blogger.com/atom/ns#' term='思いつき'/><title type='text'>思いつき</title><content type='html'>Delphi2010では、マウスジェスチャーがサポートされています。&lt;br /&gt;&lt;br /&gt;これとWilリモコンを組み合わせたら、オモシロイことが出来そうですね。&lt;br /&gt;（具体案は浮かばないので単なる思いつきですが・・・）&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-2685611224468696023?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/2685611224468696023/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=2685611224468696023' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/2685611224468696023'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/2685611224468696023'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2009/08/blog-post_11.html' title='思いつき'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-6387394909648356470</id><published>2009-08-11T05:20:00.002+09:00</published><updated>2009-08-11T05:49:46.120+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CodeGearブログWatch'/><category scheme='http://www.blogger.com/atom/ns#' term='勝手な意見'/><title type='text'>使い勝手にこだわれること</title><content type='html'>エンバカデロさんのサイト、フィールドテスターの皆様、ブロガーの皆様から&lt;br /&gt;Delphi 2010に関する情報がいろいろ出てきてます。&lt;br /&gt;&lt;br /&gt;これらを読むにつれて、地味だけど、かなり使い勝手を重視した機能を&lt;br /&gt;盛り込んでいると思う。&lt;br /&gt;&lt;br /&gt;これで、サクサク動けば、言うことなしなのですが、プレビュー会のビデオや&lt;br /&gt;プレビュー動画を見る限りでは問題無さそうなのですが・・・&lt;br /&gt;&lt;br /&gt;個人的には、使い勝手にこだわった開発が出来ているときは、&lt;br /&gt;非常に良い状態で開発が出来ていると思います。&lt;br /&gt;&lt;br /&gt;Delphi8から始まった製品の品質に関する混乱は完全に収束しつつある&lt;br /&gt;といった状況と勝手に推測しています。&lt;br /&gt;&lt;br /&gt;Delphi8の発売が2004年(本国は2003年11月）であることを考えると&lt;br /&gt;会社自体の混乱もありましたが、品質を立て直すのに5年を要しています。&lt;br /&gt;&lt;br /&gt;この間に失った信頼を取り戻すのは容易ではないかと思いますが、&lt;br /&gt;現在の状態、（メーカさんとユーザさんとで適切にコミュニケーションが&lt;br /&gt;とれている状態）であれば、なんとかなっていくのではないかと思います。&lt;br /&gt;&lt;br /&gt;個人的には、発売前の情報で買いたいと思えるバージョンなのですが&lt;br /&gt;問題は、価格ですね。（最近、Ver Upの度に価格があがっていますので・・・）&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-6387394909648356470?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/6387394909648356470/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=6387394909648356470' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/6387394909648356470'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/6387394909648356470'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2009/08/blog-post.html' title='使い勝手にこだわれること'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-3248885518817831789</id><published>2009-08-06T20:31:00.003+09:00</published><updated>2009-08-06T20:44:48.827+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='備忘録'/><category scheme='http://www.blogger.com/atom/ns#' term='CodeGearブログWatch'/><title type='text'>Delphi 2010 プレビュー会</title><content type='html'>仕事で参加できなかったかつ社内ネットワークから&lt;br /&gt;中継が見れなかったので、とりあえずTwitterをROM&lt;br /&gt;&lt;br /&gt;気になった点を以下列挙&lt;br /&gt;&lt;br /&gt;1) RTTIの機能強化 Private メンバーは見れないみたいですね。&lt;br /&gt;　  Protectメンバーが見れれば良いのだけど、どうなんでしょう？&lt;br /&gt;&lt;br /&gt;2) C++ 系で******_S系の関数が追加されたのはGoodです。&lt;br /&gt;&lt;br /&gt;3) midasのソースコード有るんだ？ちょっとびっくりです。&lt;br /&gt;&lt;br /&gt;参加者の皆さんお疲れ様でした。&lt;br /&gt;&lt;br /&gt;今頃は、場所を変えて第２段かな？&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-3248885518817831789?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/3248885518817831789/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=3248885518817831789' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/3248885518817831789'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/3248885518817831789'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2009/08/delphi-2010_06.html' title='Delphi 2010 プレビュー会'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-5509586889007257670</id><published>2009-08-06T06:56:00.002+09:00</published><updated>2009-08-06T07:07:32.553+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='備忘録'/><category scheme='http://www.blogger.com/atom/ns#' term='CodeGearブログWatch'/><title type='text'>Delphi 2010 の情報へのブックマーク</title><content type='html'>&lt;a href="http://blogs.embarcadero.com/nickhodges/2009/08/05/39270"&gt;Nick Hodgesさんのブログポスト&lt;/a&gt;が&lt;br /&gt;&lt;br /&gt;Delphi2010の情報のブックマークになっています。&lt;br /&gt;&lt;br /&gt;とりあえず、備忘録としてリンク&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blogs.embarcadero.com/"&gt;EmbarcderoのBlog&lt;/a&gt;でも、Radstudio 2010に関する記事が&lt;br /&gt;ものすごい勢いで公開されています。&lt;br /&gt;&lt;br /&gt;ついてくのがちょっと大変（(^_^;))&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-5509586889007257670?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/5509586889007257670/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=5509586889007257670' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/5509586889007257670'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/5509586889007257670'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2009/08/delphi-2010.html' title='Delphi 2010 の情報へのブックマーク'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-6078009633166079658</id><published>2009-08-05T20:10:00.001+09:00</published><updated>2009-08-05T20:13:07.763+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='備忘録'/><category scheme='http://www.blogger.com/atom/ns#' term='CodeGearブログWatch'/><title type='text'>Win32でリフレクション</title><content type='html'>&lt;a href="http://itpro.nikkeibp.co.jp/article/NEWS/20090805/335174/"&gt;日経ソフトウェアの記事&lt;/a&gt;によれば&lt;br /&gt;&lt;br /&gt;Delphi2010では、.Netのリフレクション並にRTTIが強化される&lt;br /&gt;見たいです。&lt;br /&gt;&lt;br /&gt;これは楽しみ&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-6078009633166079658?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/6078009633166079658/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=6078009633166079658' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/6078009633166079658'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/6078009633166079658'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2009/08/win32.html' title='Win32でリフレクション'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-1627891643846282366</id><published>2009-08-05T00:09:00.003+09:00</published><updated>2009-08-05T20:13:28.448+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='備忘録'/><category scheme='http://www.blogger.com/atom/ns#' term='CodeGearブログWatch'/><title type='text'>DbExpress Firebird Driver</title><content type='html'>Delphi Feed経由の情報です。&lt;br /&gt;&lt;br /&gt;次期Delphi2010でサポート予定のFirebirdですが、&lt;br /&gt;&lt;br /&gt;&lt;a href="http://chee-yang.blogspot.com/"&gt;Chee Yang Chau&lt;/a&gt;さんがDelphi2007, 2009対応の&lt;br /&gt;&lt;br /&gt;FirebirdのDbExpressドライバを開発されました。&lt;br /&gt;&lt;br /&gt;Firebird用のDbExpressドライバを探していたので&lt;br /&gt;一度テストしてみる価値はありそうです。&lt;br /&gt;&lt;br /&gt;開発者のChee Yang Chauさんに感謝です。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-1627891643846282366?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://groups.google.com/group/dbxfirebird/browse_thread/thread/e628d57251fab1fd' title='DbExpress Firebird Driver'/><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/1627891643846282366/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=1627891643846282366' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/1627891643846282366'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/1627891643846282366'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2009/08/dbexpress-firebird-driver.html' title='DbExpress Firebird Driver'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-1214095504555663808</id><published>2009-08-04T23:09:00.003+09:00</published><updated>2009-08-05T06:12:38.791+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='備忘録'/><category scheme='http://www.blogger.com/atom/ns#' term='CodeGearブログWatch'/><category scheme='http://www.blogger.com/atom/ns#' term='勝手な意見'/><title type='text'>IDEインサイトは便利そう</title><content type='html'>&lt;a href="http://www.embarcadero.com/rad-studio-2010/"&gt;次期Delphi(delphi2010)のPreview Videoが公開された&lt;/a&gt;ので&lt;br /&gt;早速みてみた。&lt;br /&gt;&lt;br /&gt;以下覚え書き（内容はVideoの要旨にも書かれてます。）&lt;br /&gt;&lt;br /&gt;IDEインサートは、IDEの状況に応じて、専用のダイアログを使って&lt;br /&gt;ショートカットを提供する機能で、Videoでは、IDEインサートから&lt;br /&gt;Component名を入れてフォームに貼り付けるデモをしていた。&lt;br /&gt;&lt;br /&gt;コンポーネント名さえ覚えていれば、コンポーネントパレットを&lt;br /&gt;探さなくても（今までは、コンポーネントパレット内での検索可）&lt;br /&gt;コンポーネントをフォームに貼れるので大変便利だ。&lt;br /&gt;&lt;br /&gt;また、IDEでCode Formatterをサポートするようだ。&lt;br /&gt;これは、DevCampでもリクエストがあった機能だ。&lt;br /&gt;&lt;br /&gt;また、スレッドのデバッグ、TStringsのViewerなど&lt;br /&gt;デバッグ時に便利な機能が追加されている。&lt;br /&gt;&lt;br /&gt;細かいところでは、オブジェクトインスペクタの２値の設定が&lt;br /&gt;チェックでできるようになっているみたいだ。&lt;br /&gt;&lt;br /&gt;Videoの内容だけで判断すると2010はものすごく使い勝手に&lt;br /&gt;こだわったVersionのような気がします。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;でも、もっとも気になったなのはDavid Iの服の色目かな（冗談です。）&lt;br /&gt;&lt;br /&gt;2009/08/05 追記&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blogs.embarcadero.com/nickhodges/2009/08/04/39261"&gt;Nick Hodges氏もdelphi2010でIDEに新搭載の機能&lt;/a&gt;のブログを&lt;br /&gt;POSTしています。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-1214095504555663808?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/1214095504555663808/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=1214095504555663808' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/1214095504555663808'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/1214095504555663808'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2009/08/ide.html' title='IDEインサイトは便利そう'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-2398947210337373315</id><published>2009-07-18T07:57:00.003+09:00</published><updated>2009-07-19T00:54:45.078+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CodeGearブログWatch'/><title type='text'>Delphi2006 販売停止</title><content type='html'>&lt;a href="http://dmagin.wordpress.com/2009/07/17/delphi-2006-not-available-anymore/"&gt;Daniel Magin’s Weblogさんのblog Psotによれば&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;エンバカデロさんは、2009年08月末日にDelphi2006の販売を&lt;br /&gt;停止（ダウンロード販売も停止）するそうです。&lt;br /&gt;&lt;br /&gt;2009/07/19 追記&lt;br /&gt;自分のところにもメールがきてました。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-2398947210337373315?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/2398947210337373315/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=2398947210337373315' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/2398947210337373315'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/2398947210337373315'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2009/07/delphi2006.html' title='Delphi2006 販売停止'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-9079588204090735079</id><published>2009-07-11T09:33:00.003+09:00</published><updated>2009-07-11T09:40:18.588+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CodeGearブログWatch'/><title type='text'>HELP UPDATE!!</title><content type='html'>Delphi2009 と C++ Builder の HELP UPDATE3&lt;br /&gt;がリリースされています。&lt;br /&gt;(日本語のHELPはUPDATE2相当です。）&lt;br /&gt;&lt;br /&gt;以下リンク&lt;br /&gt;&lt;br /&gt;http://blogs.embarcadero.com/nickhodges/2009/07/10/39253&lt;br /&gt;&lt;br /&gt;http://edn.embarcadero.com/jp/article/39661&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-9079588204090735079?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/9079588204090735079/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=9079588204090735079' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/9079588204090735079'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/9079588204090735079'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2009/07/help-update.html' title='HELP UPDATE!!'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-4326038770714704051</id><published>2009-06-30T22:06:00.000+09:00</published><updated>2009-06-30T22:08:43.751+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='その他'/><title type='text'>第13回エンバカデロデベロッパーキャンプ</title><content type='html'>出席します。（予定）&lt;br /&gt;&lt;br /&gt;POKEN持ってますので&lt;br /&gt;よかったらハイタッチ&lt;br /&gt;してやって下さい。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-4326038770714704051?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/4326038770714704051/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=4326038770714704051' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/4326038770714704051'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/4326038770714704051'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2009/06/13.html' title='第13回エンバカデロデベロッパーキャンプ'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-6743317559904583943</id><published>2009-06-24T21:48:00.003+09:00</published><updated>2009-06-24T21:57:05.583+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CodeGearブログWatch'/><title type='text'>Delphiのクロスプラットフォーム化</title><content type='html'>こちらの&lt;a href="http://www.itjoblog.co.uk/2009/06/native-codes.html"&gt;Wayne Williams氏へのインタビュー記事&lt;/a&gt;によれば&lt;br /&gt;Delphiのクロスプラットフォーム化は、現在の最重要課題との&lt;br /&gt;ことで、来年早々にはお目見えの予定だそうです。&lt;br /&gt;&lt;br /&gt;また、この記事ではNative Codeに対するエンバカデロの&lt;br /&gt;考え方についても答えていて、&lt;a href="http://www.delphifeeds.com/go/s/57462"&gt;この件については、&lt;br /&gt;マルコ氏もコメント&lt;/a&gt;を出しています。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-6743317559904583943?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/6743317559904583943/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=6743317559904583943' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/6743317559904583943'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/6743317559904583943'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2009/06/delphi.html' title='Delphiのクロスプラットフォーム化'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-4161164714434584680</id><published>2009-06-20T07:16:00.004+09:00</published><updated>2009-06-20T07:52:36.141+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='備忘録'/><category scheme='http://www.blogger.com/atom/ns#' term='CodeGearブログWatch'/><title type='text'>オンライン販売</title><content type='html'>Delphi および RadStudioのダウンロード版が&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.value-press.com/pressrelease.php?article_id=40905&amp;amp;php_value_press_session=13cc0fe9fdaab7922d9d1e5cda0cd608"&gt;ComponentSource社から発売されることになった。&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.value-press.com/pressrelease.php?article_id=40905&amp;amp;php_value_press_session=13cc0fe9fdaab7922d9d1e5cda0cd608"&gt;プレスリリースによると&lt;/a&gt;、&lt;br /&gt;&lt;br /&gt;TeeChart, QuickReport,  Develper Express VCL Subxcription&lt;br /&gt;などのコンポーネントがバンドルされた製品も購入可能&lt;br /&gt;のようです。（&lt;a href="http://www.componentsource.co.jp/products/codegear-rad-studio-j/index.html"&gt;ComponentSourecさんのサイトでも&lt;br /&gt;購入&lt;/a&gt;が可能になっていました。）&lt;br /&gt;&lt;br /&gt;日本で、商用のコンポーネントを買うのは結構大変なので&lt;br /&gt;こういったサービスがあるのは良いよ思う。&lt;br /&gt;&lt;br /&gt;また、バンドル版のほうが安いので、ちょっと&lt;br /&gt;お買い得感が出ているかも。&lt;br /&gt;&lt;br /&gt;ただ、ComponentSourecさんの説明を良く読むと&lt;br /&gt;コンポーネントを同時に購入しろと書いてあるので、&lt;br /&gt;実際の費用は、&lt;br /&gt;&lt;br /&gt;バンドル版　+ 　コンポーネント&lt;br /&gt;&lt;br /&gt;になるみたいですね。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-4161164714434584680?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/4161164714434584680/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=4161164714434584680' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/4161164714434584680'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/4161164714434584680'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2009/06/blog-post_20.html' title='オンライン販売'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-5710402703939455359</id><published>2009-06-15T23:32:00.002+09:00</published><updated>2009-06-15T23:33:14.906+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='備忘録'/><category scheme='http://www.blogger.com/atom/ns#' term='CodeGearブログWatch'/><title type='text'>コンポーネント</title><content type='html'>&lt;pre wrap=""&gt;SourceForge.Netで良さげなコンポーネントを&lt;br /&gt;見つけたのでブックマーク&lt;br /&gt;&lt;br /&gt;１つは、TCy components pack for Delphi 7 to 2009&lt;br /&gt;(&lt;a class="moz-txt-link-freetext" href="http://sourceforge.net/projects/tcycomponents/"&gt;http://sourceforge.net/projects/tcycomponents/&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;結構カラフルなGUI作れそうです。&lt;br /&gt;&lt;br /&gt;もう一つは、Delphi2009には対応してないのですが&lt;br /&gt;Alcinoe(&lt;a class="moz-txt-link-freetext" href="http://sourceforge.net/projects/alcinoe/"&gt;http://sourceforge.net/projects/alcinoe/&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;のっぺりしたＧＵＩが作れそうなのと、Firebirdの&lt;br /&gt;UDEFがあったりといろいろな機能がありそうです。&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-5710402703939455359?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/5710402703939455359/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=5710402703939455359' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/5710402703939455359'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/5710402703939455359'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2009/06/blog-post_15.html' title='コンポーネント'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-948816163852495909</id><published>2009-06-12T21:38:00.003+09:00</published><updated>2009-06-12T21:46:06.778+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='備忘録'/><category scheme='http://www.blogger.com/atom/ns#' term='CodeGearブログWatch'/><title type='text'>Alt + (team)</title><content type='html'>知っている人は知ってると思うけど&lt;br /&gt;Delphi(Rad Studio)のバージョン画面を開いて&lt;br /&gt;Altキーを押しながらteamと入力すると&lt;br /&gt;制作に関わった方々のクレジットがでます。&lt;br /&gt;&lt;br /&gt;ちなみに私は、&lt;a href="http://stackoverflow.com/questions/102254/hidden-features-of-delphi"&gt;Stack OverflowのHidden Features of Delphi&lt;/a&gt;で&lt;br /&gt;知りました。&lt;br /&gt;&lt;br /&gt;手元の環境で試したところDelphi7,Delphi2007,Delphi2009は&lt;br /&gt;クレジットが出ました。&lt;br /&gt;&lt;br /&gt;あとの環境では確認していないのでクレジットが表示されるか&lt;br /&gt;どうかは不明です。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-948816163852495909?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/948816163852495909/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=948816163852495909' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/948816163852495909'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/948816163852495909'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2009/06/alt-team.html' title='Alt + (team)'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-8460085779811398393</id><published>2009-06-06T07:22:00.002+09:00</published><updated>2009-06-06T07:40:12.507+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CodeGearブログWatch'/><category scheme='http://www.blogger.com/atom/ns#' term='勝手な意見'/><title type='text'>Bold For Delphi2009</title><content type='html'>Embarcadero(Codegear)さんがRad Studioで.NETのサポートを&lt;br /&gt;止めたことなどがあってECOがバンドルされなくなった。&lt;br /&gt;&lt;br /&gt;で、ECOの代わりにBOLDを統合しようという動きがあるようです。&lt;br /&gt;（元ネタは、&lt;a href="http://stackoverflow.com/questions/236656/any-active-bold-for-delphi-users"&gt;Any active Bold for Delphi users ?&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;ただ、いろいろあって、作業はしているようなのですが、&lt;br /&gt;実現はまだまだのようです。&lt;br /&gt;（元ネタは、&lt;a href="https://forums.codegear.com/thread.jspa?threadID=1630"&gt;Embarcadero Discussion Forums : Bold for delphi 2009&lt;/a&gt; あたり）&lt;br /&gt;（明示的なロードマップのアナウンスがないためなんとも&lt;br /&gt;言えないのですが・・・）&lt;br /&gt;&lt;br /&gt;個人的には、次期Delphiで実現して欲しいと思う。&lt;br /&gt;でもって、プロ版でも使用可能にして頂きたいと思う。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-8460085779811398393?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/8460085779811398393/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=8460085779811398393' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/8460085779811398393'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/8460085779811398393'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2009/06/bold-for-delphi2009.html' title='Bold For Delphi2009'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-6446538575850539265</id><published>2009-06-05T00:07:00.003+09:00</published><updated>2009-06-05T00:40:03.860+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='備忘録'/><category scheme='http://www.blogger.com/atom/ns#' term='CodeGearブログWatch'/><category scheme='http://www.blogger.com/atom/ns#' term='勝手な意見'/><title type='text'>Devgems DataModeler</title><content type='html'>Devgems DataModelerは、&lt;a href="http://www.devgems.com/"&gt;Devgems社&lt;/a&gt;から発売されている&lt;br /&gt;DB構築用のツールです。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.tmssoftware.com/site/"&gt;TMS Software&lt;/a&gt;で&lt;a href="http://www.tmssoftware.com/site/tmsdmlib.asp"&gt;Devgems DataModeler用のライブラリー&lt;/a&gt;が&lt;br /&gt;リリースされていたのがきっかけで本ツールの存在をしりました。&lt;br /&gt;&lt;br /&gt;Devgems社から30日のトライアル版が出ていたので&lt;br /&gt;ちょっと試用してみました。&lt;br /&gt;&lt;br /&gt;試用の感想ですが、非常に軽いです。&lt;br /&gt;Firebirdの2に対応していて、&lt;br /&gt;ビジュアルにテーブル・リレーションシップが&lt;br /&gt;作成できるので、ものぐさな自分には有用に&lt;br /&gt;感じました。&lt;br /&gt;&lt;br /&gt;値段も99ユーロ（日本円で約15000円）なので&lt;br /&gt;個人的には安いと思います。&lt;br /&gt;（他のERツールが高すぎだと思うのですが・・・(^_^;))&lt;br /&gt;&lt;br /&gt;Firebirdの他はSql Serverの2000/2005に&lt;br /&gt;対応しています。&lt;br /&gt;&lt;br /&gt;これに、&lt;br /&gt;&lt;br /&gt;&lt;a href="http://kuronekosoft.ewinds.net/sqlstudio.aspx"&gt;黒猫SQLStudio&lt;/a&gt;,&lt;br /&gt;&lt;a href="http://www.wind.sannet.ne.jp/m_matsu/developer/a5m2/"&gt;A5:SQL MK-2&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;があれば、自分に必要なことのほとんどが&lt;br /&gt;対応可能です。&lt;br /&gt;&lt;br /&gt;興味があったら一度試して見て下さい。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-6446538575850539265?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.devgems.com/data-modeler.php' title='Devgems DataModeler'/><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/6446538575850539265/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=6446538575850539265' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/6446538575850539265'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/6446538575850539265'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2009/06/devgems-datamodeler.html' title='Devgems DataModeler'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-5471629396140796363</id><published>2009-06-04T23:32:00.003+09:00</published><updated>2009-06-04T23:56:27.777+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='備忘録'/><category scheme='http://www.blogger.com/atom/ns#' term='CodeGearブログWatch'/><title type='text'>入手可能なコンポーネント</title><content type='html'>Stack Overflowで、&lt;br /&gt;&lt;br /&gt;&lt;a href="http://stackoverflow.com/questions/139684/delphi-free-and-open-source-components-that-are-still-maintained"&gt;入手可能なOpenSourceのコンポーネントは？&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://stackoverflow.com/questions/147795/delphi-active-commercial-components"&gt;入手可能な商用のコンポーネントは？&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://stackoverflow.com/questions/902738/your-favourite-third-party-components"&gt;お気に入りのコンポーネントは？&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;という質問に対して、様々な回答がよせられている。&lt;br /&gt;&lt;br /&gt;コンポーネントのブックマークとして&lt;br /&gt;忘れないウチにメモメモっと。。。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-5471629396140796363?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/5471629396140796363/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=5471629396140796363' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/5471629396140796363'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/5471629396140796363'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2009/06/blog-post.html' title='入手可能なコンポーネント'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-6568341016426348708</id><published>2009-05-16T09:01:00.002+09:00</published><updated>2009-05-16T09:04:57.334+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='備忘録'/><category scheme='http://www.blogger.com/atom/ns#' term='CodeGearブログWatch'/><category scheme='http://www.blogger.com/atom/ns#' term='勝手な意見'/><title type='text'>Delphiの次期バージョン</title><content type='html'>現在アメリカで開催中のDelphi liveで次期Ｖｅｒｓｉｏｎの概要（実施予定の項目）が&lt;br /&gt;公開されている。&lt;br /&gt;&lt;br /&gt;個人的には、DbExpressでのFirebirdのNative Supportに注目&lt;br /&gt;&lt;br /&gt;これ、Ent版ではなくPro版で実現されると良いのですが・・・・&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-6568341016426348708?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/6568341016426348708/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=6568341016426348708' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/6568341016426348708'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/6568341016426348708'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2009/05/delphi.html' title='Delphiの次期バージョン'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-1211940909501463875</id><published>2009-04-28T05:08:00.002+09:00</published><updated>2009-04-28T05:27:13.130+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CodeGearブログWatch'/><category scheme='http://www.blogger.com/atom/ns#' term='勝手な意見'/><title type='text'>Getting Started with Delphi and C++Builder 2009</title><content type='html'>エンバカデロさんのブログで、Dee Ellingさんから&lt;br /&gt;&lt;a href="http://blogs.embarcadero.com/deeelling/2009/04/27/38303"&gt;Getting Started with Delphi and C++Builder 2009の&lt;br /&gt;案内&lt;/a&gt;が出ています。&lt;br /&gt;&lt;br /&gt;製本したものは、Lulu.comから購入可能で、PDF版が&lt;br /&gt;&lt;a href="http://docs.embarcadero.com/products/rad_studio/"&gt;ドキュメントサイト&lt;/a&gt;からダウンロード可能です。&lt;br /&gt;&lt;br /&gt;内容は、初めてRad Studioを使うた人のための&lt;br /&gt;IDEの使い方のガイドとなっています。&lt;br /&gt;&lt;br /&gt;HELPはなんだかんだ言って、読み物としては&lt;br /&gt;読みにくいものなので、このようなものがあると&lt;br /&gt;大変助かります。&lt;br /&gt;&lt;br /&gt;日本語版も是非欲しいところです。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-1211940909501463875?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://blogs.embarcadero.com/deeelling/2009/04/27/38303' title='Getting Started with Delphi and C++Builder 2009'/><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/1211940909501463875/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=1211940909501463875' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/1211940909501463875'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/1211940909501463875'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2009/04/getting-started-with-delphi-and.html' title='Getting Started with Delphi and C++Builder 2009'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-1922343445334927968</id><published>2009-04-12T21:30:00.005+09:00</published><updated>2009-04-12T23:15:46.333+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='その他'/><title type='text'>僕の使っている言語でもできるんです。（その１）</title><content type='html'>遅ればせながら『More Joel On Software』をよんでいます。&lt;br /&gt;&lt;br /&gt;そのなかで、「君のプログラミング言語で、これ、できる？」と&lt;br /&gt;題して、無名関数をあつかっていたのでDelphi2009で書いてみました。&lt;br /&gt;今回はその前半部分です。&lt;br /&gt;&lt;br /&gt;話の流れは、『More Joel On Software』を参照にしてください。&lt;br /&gt;&lt;br /&gt;まづは、関数を使わない例&lt;br /&gt;&lt;br /&gt;&lt;p style="background-color:#FFFFFF;color:#000000;font-size:9pt;font-family:ＭＳ ゴシック;"&gt;0001&amp;nbsp;&lt;span style="color:#000000;font-weight:bold;"&gt;program&lt;/span&gt;&amp;nbsp;Project1&lt;span style="color:#000000;"&gt;;&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0002&lt;br&gt;&lt;br /&gt;0003&amp;nbsp;&lt;span style="color:#008000;"&gt;{$APPTYPE&amp;nbsp;CONSOLE}&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0004&lt;br&gt;&lt;br /&gt;0005&amp;nbsp;&lt;span style="color:#000000;font-weight:bold;"&gt;uses&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0006&amp;nbsp;&amp;nbsp;&amp;nbsp;SysUtils&lt;span style="color:#000000;"&gt;;&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0007&lt;br&gt;&lt;br /&gt;0008&amp;nbsp;&lt;span style="color:#000000;font-weight:bold;"&gt;begin&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0009&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#000000;font-weight:bold;"&gt;try&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0010&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#000080;font-style:italic;"&gt;{&amp;nbsp;TODO&amp;nbsp;-oUser&amp;nbsp;-cConsole&amp;nbsp;Main&amp;nbsp;:&amp;nbsp;ここにコードを記述してください&amp;nbsp;}&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0011&amp;nbsp;&amp;nbsp;&amp;nbsp;WriteLn&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#000080;"&gt;'スパゲッティが食べたい!'&lt;/span&gt;&lt;span style="color:#000000;"&gt;);&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0012&amp;nbsp;&amp;nbsp;&amp;nbsp;WriteLn&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#000080;"&gt;'チョコレートムースが食べたい!'&lt;/span&gt;&lt;span style="color:#000000;"&gt;);&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0013&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#000000;font-weight:bold;"&gt;except&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0014&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;on&amp;nbsp;E&lt;span style="color:#000000;"&gt;:&lt;/span&gt;Exception&amp;nbsp;&lt;span style="color:#000000;font-weight:bold;"&gt;do&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0015&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Writeln&lt;span style="color:#000000;"&gt;(&lt;/span&gt;E&lt;span style="color:#000000;"&gt;.&lt;/span&gt;Classname&lt;span style="color:#000000;"&gt;,&lt;/span&gt;&amp;nbsp;&lt;span style="color:#000080;"&gt;':&amp;nbsp;'&lt;/span&gt;&lt;span style="color:#000000;"&gt;,&lt;/span&gt;&amp;nbsp;E&lt;span style="color:#000000;"&gt;.&lt;/span&gt;Message&lt;span style="color:#000000;"&gt;);&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0016&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#000000;font-weight:bold;"&gt;end&lt;/span&gt;;&lt;br&gt;&lt;br /&gt;0017&amp;nbsp;&lt;span style="color:#000000;font-weight:bold;"&gt;end&lt;/span&gt;.&lt;br&gt;&lt;br /&gt;0018&lt;br&gt;&lt;br /&gt;0019&lt;br&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;食べたいが一緒だから関数化して&lt;br /&gt;&lt;br /&gt;&lt;p style="background-color:#FFFFFF;color:#000000;font-size:9pt;font-family:ＭＳ ゴシック;"&gt;0001&amp;nbsp;&lt;span style="color:#000000;font-weight:bold;"&gt;program&lt;/span&gt;&amp;nbsp;Project2&lt;span style="color:#000000;"&gt;;&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0002&lt;br&gt;&lt;br /&gt;0003&amp;nbsp;&lt;span style="color:#008000;"&gt;{$APPTYPE&amp;nbsp;CONSOLE}&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0004&lt;br&gt;&lt;br /&gt;0005&amp;nbsp;&lt;span style="color:#000000;font-weight:bold;"&gt;uses&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0006&amp;nbsp;&amp;nbsp;&amp;nbsp;SysUtils&lt;span style="color:#000000;"&gt;;&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0007&lt;br&gt;&lt;br /&gt;0008&amp;nbsp;&lt;span style="color:#000000;font-weight:bold;"&gt;procedure&lt;/span&gt;&amp;nbsp;SwedishChef&lt;span style="color:#000000;"&gt;(&lt;/span&gt;food&amp;nbsp;&lt;span style="color:#000000;"&gt;:&lt;/span&gt;&amp;nbsp;string&lt;span style="color:#000000;"&gt;);&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0009&amp;nbsp;&lt;span style="color:#000000;font-weight:bold;"&gt;begin&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0010&amp;nbsp;&amp;nbsp;&amp;nbsp;WriteLn&lt;span style="color:#000000;"&gt;(&lt;/span&gt;food&amp;nbsp;&lt;span style="color:#000000;"&gt;+&lt;/span&gt;&amp;nbsp;&lt;span style="color:#000080;"&gt;'が食べたい'&lt;/span&gt;&lt;span style="color:#000000;"&gt;);&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0011&amp;nbsp;&lt;span style="color:#000000;font-weight:bold;"&gt;end&lt;/span&gt;;&lt;br&gt;&lt;br /&gt;0012&lt;br&gt;&lt;br /&gt;0013&amp;nbsp;&lt;span style="color:#000000;font-weight:bold;"&gt;begin&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0014&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#000000;font-weight:bold;"&gt;try&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0015&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#000080;font-style:italic;"&gt;{&amp;nbsp;TODO&amp;nbsp;-oUser&amp;nbsp;-cConsole&amp;nbsp;Main&amp;nbsp;:&amp;nbsp;ここにコードを記述してください&amp;nbsp;}&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0016&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SwedishChef&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#000080;"&gt;'スパゲッティ'&lt;/span&gt;&lt;span style="color:#000000;"&gt;);&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0017&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SwedishChef&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#000080;"&gt;'チョコレートムース'&lt;/span&gt;&lt;span style="color:#000000;"&gt;);&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0018&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#000000;font-weight:bold;"&gt;except&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0019&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;on&amp;nbsp;E&lt;span style="color:#000000;"&gt;:&lt;/span&gt;Exception&amp;nbsp;&lt;span style="color:#000000;font-weight:bold;"&gt;do&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0020&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Writeln&lt;span style="color:#000000;"&gt;(&lt;/span&gt;E&lt;span style="color:#000000;"&gt;.&lt;/span&gt;Classname&lt;span style="color:#000000;"&gt;,&lt;/span&gt;&amp;nbsp;&lt;span style="color:#000080;"&gt;':&amp;nbsp;'&lt;/span&gt;&lt;span style="color:#000000;"&gt;,&lt;/span&gt;&amp;nbsp;E&lt;span style="color:#000000;"&gt;.&lt;/span&gt;Message&lt;span style="color:#000000;"&gt;);&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0021&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#000000;font-weight:bold;"&gt;end&lt;/span&gt;;&lt;br&gt;&lt;br /&gt;0022&amp;nbsp;&lt;span style="color:#000000;font-weight:bold;"&gt;end&lt;/span&gt;.&lt;br&gt;&lt;br /&gt;0023&lt;br&gt;&lt;br /&gt;0024&lt;br&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;ここまでは、今までのDelphiでも可能です。&lt;br /&gt;&lt;br /&gt;従来の手続き型で呼び出す関数を切り替えて&lt;br /&gt;&lt;br /&gt;&lt;p style="background-color:#000080;color:#FFFF00;font-size:9pt;font-family:ＭＳ ゴシック;"&gt;0001&amp;nbsp;&lt;span style="color:#FFFFFF;"&gt;program&lt;/span&gt;&amp;nbsp;Project3_1&lt;span style="color:#FFFF00;"&gt;;&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0002&lt;br&gt;&lt;br /&gt;0003&amp;nbsp;&lt;span style="color:#FFFF00;"&gt;{$APPTYPE&amp;nbsp;CONSOLE}&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0004&lt;br&gt;&lt;br /&gt;0005&amp;nbsp;&lt;span style="color:#FFFFFF;"&gt;uses&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0006&amp;nbsp;&amp;nbsp;&amp;nbsp;SysUtils&lt;span style="color:#FFFF00;"&gt;;&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0007&lt;br&gt;&lt;br /&gt;0008&amp;nbsp;&lt;span style="color:#FFFFFF;"&gt;Type&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0009&amp;nbsp;&amp;nbsp;&amp;nbsp;TTakeSometingProc&amp;nbsp;&lt;span style="color:#FFFF00;"&gt;=&lt;/span&gt;&amp;nbsp;procedure&lt;span style="color:#FFFF00;"&gt;(&lt;/span&gt;&amp;nbsp;S&amp;nbsp;&lt;span style="color:#FFFF00;"&gt;:&lt;/span&gt;&amp;nbsp;String&lt;span style="color:#FFFF00;"&gt;);&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0010&lt;br&gt;&lt;br /&gt;0011&amp;nbsp;&lt;span style="color:#FFFFFF;"&gt;procedure&lt;/span&gt;&amp;nbsp;PutInPot&lt;span style="color:#FFFF00;"&gt;(&lt;/span&gt;food&amp;nbsp;&lt;span style="color:#FFFF00;"&gt;:&lt;/span&gt;&amp;nbsp;string&lt;span style="color:#FFFF00;"&gt;);&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0012&amp;nbsp;&lt;span style="color:#FFFFFF;"&gt;begin&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0013&amp;nbsp;&amp;nbsp;&amp;nbsp;Writeln&lt;span style="color:#FFFF00;"&gt;(&lt;/span&gt;food&lt;span style="color:#FFFF00;"&gt;);&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0014&amp;nbsp;&lt;span style="color:#FFFFFF;"&gt;end&lt;/span&gt;;&lt;br&gt;&lt;br /&gt;0015&lt;br&gt;&lt;br /&gt;0016&amp;nbsp;&lt;span style="color:#FFFFFF;"&gt;procedure&lt;/span&gt;&amp;nbsp;BoomBoom&lt;span style="color:#FFFF00;"&gt;(&lt;/span&gt;food&amp;nbsp;&lt;span style="color:#FFFF00;"&gt;:&lt;/span&gt;&amp;nbsp;string&lt;span style="color:#FFFF00;"&gt;);&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0017&amp;nbsp;&lt;span style="color:#FFFFFF;"&gt;begin&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0018&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Writeln&lt;span style="color:#FFFF00;"&gt;(&lt;/span&gt;food&lt;span style="color:#FFFF00;"&gt;);&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0019&amp;nbsp;&lt;span style="color:#FFFFFF;"&gt;end&lt;/span&gt;;&lt;br&gt;&lt;br /&gt;0020&lt;br&gt;&lt;br /&gt;0021&amp;nbsp;&lt;span style="color:#FFFFFF;"&gt;procedure&lt;/span&gt;&amp;nbsp;Cook&lt;span style="color:#FFFF00;"&gt;(&lt;/span&gt;food1&lt;span style="color:#FFFF00;"&gt;,&lt;/span&gt;food2&amp;nbsp;&lt;span style="color:#FFFF00;"&gt;:&lt;/span&gt;&amp;nbsp;String&lt;span style="color:#FFFF00;"&gt;;&lt;/span&gt;&amp;nbsp;aTakeSometingProc&amp;nbsp;&lt;span style="color:#FFFF00;"&gt;:&lt;/span&gt;&amp;nbsp;TTakeSometingProc&lt;span style="color:#FFFF00;"&gt;);&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0022&amp;nbsp;&lt;span style="color:#FFFFFF;"&gt;begin&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0023&amp;nbsp;&amp;nbsp;&amp;nbsp;Writeln&lt;span style="color:#FFFF00;"&gt;(&lt;/span&gt;food1&amp;nbsp;&lt;span style="color:#FFFF00;"&gt;+&lt;/span&gt;&amp;nbsp;&lt;span style="color:#FFFF00;"&gt;'を取る'&lt;/span&gt;&lt;span style="color:#FFFF00;"&gt;);&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0024&amp;nbsp;&amp;nbsp;&amp;nbsp;aTakeSometingProc&lt;span style="color:#FFFF00;"&gt;(&lt;/span&gt;food1&lt;span style="color:#FFFF00;"&gt;);&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0025&amp;nbsp;&amp;nbsp;&amp;nbsp;aTakeSometingProc&lt;span style="color:#FFFF00;"&gt;(&lt;/span&gt;food2&lt;span style="color:#FFFF00;"&gt;);&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0026&amp;nbsp;&lt;span style="color:#FFFFFF;"&gt;end&lt;/span&gt;;&lt;br&gt;&lt;br /&gt;0027&lt;br&gt;&lt;br /&gt;0028&amp;nbsp;&lt;span style="color:#FFFFFF;"&gt;begin&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0029&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#FFFFFF;"&gt;try&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0030&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#C0C0C0;"&gt;{&amp;nbsp;TODO&amp;nbsp;-oUser&amp;nbsp;-cConsole&amp;nbsp;Main&amp;nbsp;:&amp;nbsp;ここにコードを記述してください&amp;nbsp;}&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0031&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Cook&lt;span style="color:#FFFF00;"&gt;(&lt;/span&gt;&lt;span style="color:#FFFF00;"&gt;'ロブスター'&lt;/span&gt;&lt;span style="color:#FFFF00;"&gt;,&lt;/span&gt;&lt;span style="color:#FFFF00;"&gt;'水'&lt;/span&gt;&lt;span style="color:#FFFF00;"&gt;,&lt;/span&gt;PutInPot&lt;span style="color:#FFFF00;"&gt;);&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0032&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Cook&lt;span style="color:#FFFF00;"&gt;(&lt;/span&gt;&lt;span style="color:#FFFF00;"&gt;'チキン'&lt;/span&gt;&lt;span style="color:#FFFF00;"&gt;,&lt;/span&gt;&lt;span style="color:#FFFF00;"&gt;'ココナッツ'&lt;/span&gt;&lt;span style="color:#FFFF00;"&gt;,&lt;/span&gt;BoomBoom&lt;span style="color:#FFFF00;"&gt;);&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0033&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#FFFFFF;"&gt;except&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0034&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;on&amp;nbsp;E&lt;span style="color:#FFFF00;"&gt;:&lt;/span&gt;Exception&amp;nbsp;&lt;span style="color:#FFFFFF;"&gt;do&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0035&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Writeln&lt;span style="color:#FFFF00;"&gt;(&lt;/span&gt;E&lt;span style="color:#FFFF00;"&gt;.&lt;/span&gt;Classname&lt;span style="color:#FFFF00;"&gt;,&lt;/span&gt;&amp;nbsp;&lt;span style="color:#FFFF00;"&gt;':&amp;nbsp;'&lt;/span&gt;&lt;span style="color:#FFFF00;"&gt;,&lt;/span&gt;&amp;nbsp;E&lt;span style="color:#FFFF00;"&gt;.&lt;/span&gt;Message&lt;span style="color:#FFFF00;"&gt;);&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0036&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#FFFFFF;"&gt;end&lt;/span&gt;;&lt;br&gt;&lt;br /&gt;0037&amp;nbsp;&lt;span style="color:#FFFFFF;"&gt;end&lt;/span&gt;.&lt;br&gt;&lt;br /&gt;0038&lt;br&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;これも問題なくうごきます。&lt;br /&gt;&lt;br /&gt;手続き型を無名メソッドの宣言に書き換えて&lt;br /&gt;&lt;br /&gt;&lt;p style="background-color:#000080;color:#FFFF00;font-size:9pt;font-family:ＭＳ ゴシック;"&gt;0001&amp;nbsp;&lt;span style="color:#FFFFFF;"&gt;program&lt;/span&gt;&amp;nbsp;Project3_2&lt;span style="color:#FFFF00;"&gt;;&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0002&lt;br&gt;&lt;br /&gt;0003&amp;nbsp;&lt;span style="color:#FFFF00;"&gt;{$APPTYPE&amp;nbsp;CONSOLE}&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0004&lt;br&gt;&lt;br /&gt;0005&amp;nbsp;&lt;span style="color:#FFFFFF;"&gt;uses&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0006&amp;nbsp;&amp;nbsp;&amp;nbsp;SysUtils&lt;span style="color:#FFFF00;"&gt;;&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0007&lt;br&gt;&lt;br /&gt;0008&amp;nbsp;&lt;span style="color:#FFFFFF;"&gt;Type&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0009&amp;nbsp;&amp;nbsp;&amp;nbsp;TTakeSometingProc&amp;nbsp;&lt;span style="color:#FFFF00;"&gt;=&lt;/span&gt;&amp;nbsp;reference&amp;nbsp;&lt;span style="color:#FFFFFF;"&gt;to&lt;/span&gt;&amp;nbsp;&lt;span style="color:#FFFFFF;"&gt;procedure&lt;/span&gt;&amp;nbsp;&lt;span style="color:#FFFF00;"&gt;(&lt;/span&gt;&amp;nbsp;s&amp;nbsp;&lt;span style="color:#FFFF00;"&gt;:&lt;/span&gt;&amp;nbsp;String&lt;span style="color:#FFFF00;"&gt;);&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0010&lt;br&gt;&lt;br /&gt;0011&lt;br&gt;&lt;br /&gt;0012&amp;nbsp;&lt;span style="color:#FFFFFF;"&gt;procedure&lt;/span&gt;&amp;nbsp;PutInPot&lt;span style="color:#FFFF00;"&gt;(&lt;/span&gt;food&amp;nbsp;&lt;span style="color:#FFFF00;"&gt;:&lt;/span&gt;&amp;nbsp;string&lt;span style="color:#FFFF00;"&gt;);&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0013&amp;nbsp;&lt;span style="color:#FFFFFF;"&gt;begin&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0014&amp;nbsp;&amp;nbsp;&amp;nbsp;Writeln&lt;span style="color:#FFFF00;"&gt;(&lt;/span&gt;food&lt;span style="color:#FFFF00;"&gt;);&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0015&amp;nbsp;&lt;span style="color:#FFFFFF;"&gt;end&lt;/span&gt;;&lt;br&gt;&lt;br /&gt;0016&lt;br&gt;&lt;br /&gt;0017&amp;nbsp;&lt;span style="color:#FFFFFF;"&gt;procedure&lt;/span&gt;&amp;nbsp;BoomBoom&lt;span style="color:#FFFF00;"&gt;(&lt;/span&gt;food&amp;nbsp;&lt;span style="color:#FFFF00;"&gt;:&lt;/span&gt;&amp;nbsp;string&lt;span style="color:#FFFF00;"&gt;);&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0018&amp;nbsp;&lt;span style="color:#FFFFFF;"&gt;begin&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0019&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Writeln&lt;span style="color:#FFFF00;"&gt;(&lt;/span&gt;food&lt;span style="color:#FFFF00;"&gt;);&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0020&amp;nbsp;&lt;span style="color:#FFFFFF;"&gt;end&lt;/span&gt;;&lt;br&gt;&lt;br /&gt;0021&lt;br&gt;&lt;br /&gt;0022&amp;nbsp;&lt;span style="color:#FFFFFF;"&gt;procedure&lt;/span&gt;&amp;nbsp;Cook&lt;span style="color:#FFFF00;"&gt;(&lt;/span&gt;food1&lt;span style="color:#FFFF00;"&gt;,&lt;/span&gt;food2&amp;nbsp;&lt;span style="color:#FFFF00;"&gt;:&lt;/span&gt;&amp;nbsp;String&lt;span style="color:#FFFF00;"&gt;;&lt;/span&gt;&amp;nbsp;aTakeSometingProc&amp;nbsp;&lt;span style="color:#FFFF00;"&gt;:&lt;/span&gt;&amp;nbsp;TTakeSometingProc&lt;span style="color:#FFFF00;"&gt;);&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0023&amp;nbsp;&lt;span style="color:#FFFFFF;"&gt;begin&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0024&amp;nbsp;&amp;nbsp;&amp;nbsp;Writeln&lt;span style="color:#FFFF00;"&gt;(&lt;/span&gt;food1&amp;nbsp;&lt;span style="color:#FFFF00;"&gt;+&lt;/span&gt;&amp;nbsp;&lt;span style="color:#FFFF00;"&gt;'を取る'&lt;/span&gt;&lt;span style="color:#FFFF00;"&gt;);&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0025&amp;nbsp;&amp;nbsp;&amp;nbsp;aTakeSometingProc&lt;span style="color:#FFFF00;"&gt;(&lt;/span&gt;food1&lt;span style="color:#FFFF00;"&gt;);&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0026&amp;nbsp;&amp;nbsp;&amp;nbsp;aTakeSometingProc&lt;span style="color:#FFFF00;"&gt;(&lt;/span&gt;food1&lt;span style="color:#FFFF00;"&gt;);&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0027&amp;nbsp;&lt;span style="color:#FFFFFF;"&gt;end&lt;/span&gt;;&lt;br&gt;&lt;br /&gt;0028&lt;br&gt;&lt;br /&gt;0029&amp;nbsp;&lt;span style="color:#FFFFFF;"&gt;begin&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0030&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#FFFFFF;"&gt;try&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0031&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#C0C0C0;"&gt;{&amp;nbsp;TODO&amp;nbsp;-oUser&amp;nbsp;-cConsole&amp;nbsp;Main&amp;nbsp;:&amp;nbsp;ここにコードを記述してください&amp;nbsp;}&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0032&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Cook&lt;span style="color:#FFFF00;"&gt;(&lt;/span&gt;&lt;span style="color:#FFFF00;"&gt;'ロブスター'&lt;/span&gt;&lt;span style="color:#FFFF00;"&gt;,&lt;/span&gt;&lt;span style="color:#FFFF00;"&gt;'水'&lt;/span&gt;&lt;span style="color:#FFFF00;"&gt;,&lt;/span&gt;PutInPot&lt;span style="color:#FFFF00;"&gt;);&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0033&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Cook&lt;span style="color:#FFFF00;"&gt;(&lt;/span&gt;&lt;span style="color:#FFFF00;"&gt;'チキン'&lt;/span&gt;&lt;span style="color:#FFFF00;"&gt;,&lt;/span&gt;&lt;span style="color:#FFFF00;"&gt;'ココナッツ'&lt;/span&gt;&lt;span style="color:#FFFF00;"&gt;,&lt;/span&gt;BoomBoom&lt;span style="color:#FFFF00;"&gt;);&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0034&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#FFFFFF;"&gt;except&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0035&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;on&amp;nbsp;E&lt;span style="color:#FFFF00;"&gt;:&lt;/span&gt;Exception&amp;nbsp;&lt;span style="color:#FFFFFF;"&gt;do&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0036&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Writeln&lt;span style="color:#FFFF00;"&gt;(&lt;/span&gt;E&lt;span style="color:#FFFF00;"&gt;.&lt;/span&gt;Classname&lt;span style="color:#FFFF00;"&gt;,&lt;/span&gt;&amp;nbsp;&lt;span style="color:#FFFF00;"&gt;':&amp;nbsp;'&lt;/span&gt;&lt;span style="color:#FFFF00;"&gt;,&lt;/span&gt;&amp;nbsp;E&lt;span style="color:#FFFF00;"&gt;.&lt;/span&gt;Message&lt;span style="color:#FFFF00;"&gt;);&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0037&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#FFFFFF;"&gt;end&lt;/span&gt;;&lt;br&gt;&lt;br /&gt;0038&amp;nbsp;&lt;span style="color:#FFFFFF;"&gt;end&lt;/span&gt;.&lt;br&gt;&lt;br /&gt;0039&lt;br&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;手続き型の仮引数に対する本引数をコードブロックにすると&lt;br /&gt;&lt;br /&gt;&lt;p style="background-color:#00FFFF;color:#0000FF;font-size:9pt;font-family:ＭＳ ゴシック;"&gt;0001&amp;nbsp;&lt;span style="color:#000000;font-weight:bold;"&gt;program&lt;/span&gt;&amp;nbsp;Project4_1&lt;span style="color:#000000;"&gt;;&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0002&lt;br&gt;&lt;br /&gt;0003&amp;nbsp;&lt;span style="color:#000000;"&gt;{$APPTYPE&amp;nbsp;CONSOLE}&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0004&lt;br&gt;&lt;br /&gt;0005&amp;nbsp;&lt;span style="color:#000000;font-weight:bold;"&gt;uses&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0006&amp;nbsp;&amp;nbsp;&amp;nbsp;SysUtils&lt;span style="color:#000000;"&gt;;&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0007&lt;br&gt;&lt;br /&gt;0008&amp;nbsp;&lt;span style="color:#000000;font-weight:bold;"&gt;Type&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0009&amp;nbsp;&amp;nbsp;&amp;nbsp;TTakeSometingProc&amp;nbsp;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&amp;nbsp;procedure&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&amp;nbsp;S&amp;nbsp;&lt;span style="color:#000000;"&gt;:&lt;/span&gt;&amp;nbsp;String&lt;span style="color:#000000;"&gt;);&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0010&lt;br&gt;&lt;br /&gt;0011&amp;nbsp;&lt;span style="color:#000000;font-weight:bold;"&gt;procedure&lt;/span&gt;&amp;nbsp;PutInPot&lt;span style="color:#000000;"&gt;(&lt;/span&gt;food&amp;nbsp;&lt;span style="color:#000000;"&gt;:&lt;/span&gt;&amp;nbsp;string&lt;span style="color:#000000;"&gt;);&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0012&amp;nbsp;&lt;span style="color:#000000;font-weight:bold;"&gt;begin&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0013&amp;nbsp;&amp;nbsp;&amp;nbsp;Writeln&lt;span style="color:#000000;"&gt;(&lt;/span&gt;food&lt;span style="color:#000000;"&gt;);&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0014&amp;nbsp;&lt;span style="color:#000000;font-weight:bold;"&gt;end&lt;/span&gt;;&lt;br&gt;&lt;br /&gt;0015&lt;br&gt;&lt;br /&gt;0016&amp;nbsp;&lt;span style="color:#000000;font-weight:bold;"&gt;procedure&lt;/span&gt;&amp;nbsp;BoomBoom&lt;span style="color:#000000;"&gt;(&lt;/span&gt;food&amp;nbsp;&lt;span style="color:#000000;"&gt;:&lt;/span&gt;&amp;nbsp;string&lt;span style="color:#000000;"&gt;);&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0017&amp;nbsp;&lt;span style="color:#000000;font-weight:bold;"&gt;begin&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0018&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Writeln&lt;span style="color:#000000;"&gt;(&lt;/span&gt;food&lt;span style="color:#000000;"&gt;);&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0019&amp;nbsp;&lt;span style="color:#000000;font-weight:bold;"&gt;end&lt;/span&gt;;&lt;br&gt;&lt;br /&gt;0020&lt;br&gt;&lt;br /&gt;0021&amp;nbsp;&lt;span style="color:#000000;font-weight:bold;"&gt;procedure&lt;/span&gt;&amp;nbsp;Cook&lt;span style="color:#000000;"&gt;(&lt;/span&gt;food1&lt;span style="color:#000000;"&gt;,&lt;/span&gt;food2&amp;nbsp;&lt;span style="color:#000000;"&gt;:&lt;/span&gt;&amp;nbsp;String&lt;span style="color:#000000;"&gt;;&lt;/span&gt;&amp;nbsp;aTakeSometingProc&amp;nbsp;&lt;span style="color:#000000;"&gt;:&lt;/span&gt;&amp;nbsp;TTakeSometingProc&lt;span style="color:#000000;"&gt;);&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0022&amp;nbsp;&lt;span style="color:#000000;font-weight:bold;"&gt;begin&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0023&amp;nbsp;&amp;nbsp;&amp;nbsp;Writeln&lt;span style="color:#000000;"&gt;(&lt;/span&gt;food1&amp;nbsp;&lt;span style="color:#000000;"&gt;+&lt;/span&gt;&amp;nbsp;&lt;span style="color:#800080;"&gt;'を取る'&lt;/span&gt;&lt;span style="color:#000000;"&gt;);&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0024&amp;nbsp;&amp;nbsp;&amp;nbsp;aTakeSometingProc&lt;span style="color:#000000;"&gt;(&lt;/span&gt;food1&lt;span style="color:#000000;"&gt;);&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0025&amp;nbsp;&amp;nbsp;&amp;nbsp;aTakeSometingProc&lt;span style="color:#000000;"&gt;(&lt;/span&gt;food2&lt;span style="color:#000000;"&gt;);&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0026&amp;nbsp;&lt;span style="color:#000000;font-weight:bold;"&gt;end&lt;/span&gt;;&lt;br&gt;&lt;br /&gt;0027&lt;br&gt;&lt;br /&gt;0028&amp;nbsp;&lt;span style="color:#000000;font-weight:bold;"&gt;begin&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0029&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#000000;font-weight:bold;"&gt;try&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0030&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#008080;font-style:italic;"&gt;{&amp;nbsp;TODO&amp;nbsp;-oUser&amp;nbsp;-cConsole&amp;nbsp;Main&amp;nbsp;:&amp;nbsp;ここにコードを記述してください&amp;nbsp;}&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0031&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Cook&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#800080;"&gt;'ロブスター'&lt;/span&gt;&lt;span style="color:#000000;"&gt;,&lt;/span&gt;&lt;span style="color:#800080;"&gt;'水'&lt;/span&gt;&lt;span style="color:#000000;"&gt;,&lt;/span&gt;PutInPot&lt;span style="color:#000000;"&gt;);&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0032&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Cook&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#800080;"&gt;'チキン'&lt;/span&gt;&lt;span style="color:#000000;"&gt;,&lt;/span&gt;&lt;span style="color:#800080;"&gt;'ココナッツ'&lt;/span&gt;&lt;span style="color:#000000;"&gt;,&lt;/span&gt;BoomBoom&lt;span style="color:#000000;"&gt;);&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0033&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#000000;font-weight:bold;"&gt;except&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0034&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;on&amp;nbsp;E&lt;span style="color:#000000;"&gt;:&lt;/span&gt;Exception&amp;nbsp;&lt;span style="color:#000000;font-weight:bold;"&gt;do&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0035&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Writeln&lt;span style="color:#000000;"&gt;(&lt;/span&gt;E&lt;span style="color:#000000;"&gt;.&lt;/span&gt;Classname&lt;span style="color:#000000;"&gt;,&lt;/span&gt;&amp;nbsp;&lt;span style="color:#800080;"&gt;':&amp;nbsp;'&lt;/span&gt;&lt;span style="color:#000000;"&gt;,&lt;/span&gt;&amp;nbsp;E&lt;span style="color:#000000;"&gt;.&lt;/span&gt;Message&lt;span style="color:#000000;"&gt;);&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0036&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#000000;font-weight:bold;"&gt;end&lt;/span&gt;;&lt;br&gt;&lt;br /&gt;0037&amp;nbsp;&lt;span style="color:#000000;font-weight:bold;"&gt;end&lt;/span&gt;.&lt;br&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;これは、コンパイルエラーになります。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_ga1vA17U6Hs/SeHprUG-JII/AAAAAAAAABc/3oxqLNsrB78/s1600-h/Err_4_1.bmp"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: Left; cursor: pointer; width: 320px; height: 187px;" src="http://3.bp.blogspot.com/_ga1vA17U6Hs/SeHprUG-JII/AAAAAAAAABc/3oxqLNsrB78/s320/Err_4_1.bmp" alt="" id="BLOGGER_PHOTO_ID_5323793164870231170" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;無名メソッド型を使えば、コンパイルがとおります。&lt;br /&gt;&lt;br /&gt;&lt;p style="background-color:#FFFFFF;color:#000000;font-size:9pt;font-family:ＭＳ ゴシック;"&gt;0001&amp;nbsp;&lt;span style="color:#0000FF;"&gt;program&lt;/span&gt;&amp;nbsp;Project4_2&lt;span style="color:#000000;"&gt;;&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0002&lt;br&gt;&lt;br /&gt;0003&amp;nbsp;&lt;span style="color:#0000FF;"&gt;{$APPTYPE&amp;nbsp;CONSOLE}&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0004&lt;br&gt;&lt;br /&gt;0005&amp;nbsp;&lt;span style="color:#0000FF;"&gt;uses&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0006&amp;nbsp;&amp;nbsp;&amp;nbsp;SysUtils&lt;span style="color:#000000;"&gt;;&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0007&lt;br&gt;&lt;br /&gt;0008&amp;nbsp;&lt;span style="color:#0000FF;"&gt;Type&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0009&amp;nbsp;&amp;nbsp;&amp;nbsp;TTakeSometingProc&amp;nbsp;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&amp;nbsp;reference&amp;nbsp;&lt;span style="color:#0000FF;"&gt;to&lt;/span&gt;&amp;nbsp;&lt;span style="color:#0000FF;"&gt;procedure&lt;/span&gt;&amp;nbsp;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&amp;nbsp;s&amp;nbsp;&lt;span style="color:#000000;"&gt;:&lt;/span&gt;&amp;nbsp;String&lt;span style="color:#000000;"&gt;);&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0010&lt;br&gt;&lt;br /&gt;0011&lt;br&gt;&lt;br /&gt;0012&amp;nbsp;&lt;span style="color:#0000FF;"&gt;procedure&lt;/span&gt;&amp;nbsp;Cook&lt;span style="color:#000000;"&gt;(&lt;/span&gt;food1&lt;span style="color:#000000;"&gt;,&lt;/span&gt;food2&amp;nbsp;&lt;span style="color:#000000;"&gt;:&lt;/span&gt;&amp;nbsp;String&lt;span style="color:#000000;"&gt;;&lt;/span&gt;&amp;nbsp;aTakeSometingProc&amp;nbsp;&lt;span style="color:#000000;"&gt;:&lt;/span&gt;&amp;nbsp;TTakeSometingProc&lt;span style="color:#000000;"&gt;);&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0013&amp;nbsp;&lt;span style="color:#0000FF;"&gt;begin&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0014&amp;nbsp;&amp;nbsp;&amp;nbsp;Writeln&lt;span style="color:#000000;"&gt;(&lt;/span&gt;food1&amp;nbsp;&lt;span style="color:#000000;"&gt;+&lt;/span&gt;&amp;nbsp;&lt;span style="color:#000000;"&gt;'を取る'&lt;/span&gt;&lt;span style="color:#000000;"&gt;);&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0015&amp;nbsp;&amp;nbsp;&amp;nbsp;aTakeSometingProc&lt;span style="color:#000000;"&gt;(&lt;/span&gt;food1&lt;span style="color:#000000;"&gt;);&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0016&amp;nbsp;&amp;nbsp;&amp;nbsp;aTakeSometingProc&lt;span style="color:#000000;"&gt;(&lt;/span&gt;food2&lt;span style="color:#000000;"&gt;);&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0017&amp;nbsp;&lt;span style="color:#0000FF;"&gt;end&lt;/span&gt;;&lt;br&gt;&lt;br /&gt;0018&lt;br&gt;&lt;br /&gt;0019&amp;nbsp;&lt;span style="color:#0000FF;"&gt;begin&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0020&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000FF;"&gt;try&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0021&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#008000;"&gt;{&amp;nbsp;TODO&amp;nbsp;-oUser&amp;nbsp;-cConsole&amp;nbsp;Main&amp;nbsp;:&amp;nbsp;ここにコードを記述してください&amp;nbsp;}&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0022&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Cook&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;'ロブスター'&lt;/span&gt;&lt;span style="color:#000000;"&gt;,&lt;/span&gt;&lt;span style="color:#000000;"&gt;'水'&lt;/span&gt;&lt;span style="color:#000000;"&gt;,&lt;/span&gt;procedure&lt;span style="color:#000000;"&gt;(&lt;/span&gt;food&amp;nbsp;&lt;span style="color:#000000;"&gt;:&lt;/span&gt;&amp;nbsp;string&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0023&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000FF;"&gt;begin&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0024&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WriteLn&lt;span style="color:#000000;"&gt;(&lt;/span&gt;food&amp;nbsp;&lt;span style="color:#000000;"&gt;+&lt;/span&gt;&amp;nbsp;&lt;span style="color:#000000;"&gt;'を鍋に入れる'&lt;/span&gt;&lt;span style="color:#000000;"&gt;);&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0025&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000FF;"&gt;end&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0026&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#000000;"&gt;);&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0027&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Cook&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;'チキン'&lt;/span&gt;&lt;span style="color:#000000;"&gt;,&lt;/span&gt;&lt;span style="color:#000000;"&gt;'ココナッツ'&lt;/span&gt;&lt;span style="color:#000000;"&gt;,&lt;/span&gt;procedure&lt;span style="color:#000000;"&gt;(&lt;/span&gt;food&amp;nbsp;&lt;span style="color:#000000;"&gt;:&lt;/span&gt;&amp;nbsp;string&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0028&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000FF;"&gt;begin&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0029&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WriteLn&lt;span style="color:#000000;"&gt;(&lt;/span&gt;food&amp;nbsp;&lt;span style="color:#000000;"&gt;+&lt;/span&gt;&amp;nbsp;&lt;span style="color:#000000;"&gt;'を撃つ'&lt;/span&gt;&lt;span style="color:#000000;"&gt;);&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0030&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000FF;"&gt;end&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0031&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#000000;"&gt;);&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0032&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000FF;"&gt;except&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0033&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;on&amp;nbsp;E&lt;span style="color:#000000;"&gt;:&lt;/span&gt;Exception&amp;nbsp;&lt;span style="color:#0000FF;"&gt;do&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0034&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Writeln&lt;span style="color:#000000;"&gt;(&lt;/span&gt;E&lt;span style="color:#000000;"&gt;.&lt;/span&gt;Classname&lt;span style="color:#000000;"&gt;,&lt;/span&gt;&amp;nbsp;&lt;span style="color:#000000;"&gt;':&amp;nbsp;'&lt;/span&gt;&lt;span style="color:#000000;"&gt;,&lt;/span&gt;&amp;nbsp;E&lt;span style="color:#000000;"&gt;.&lt;/span&gt;Message&lt;span style="color:#000000;"&gt;);&lt;/span&gt;&lt;br&gt;&lt;br /&gt;0035&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000FF;"&gt;end&lt;/span&gt;;&lt;br&gt;&lt;br /&gt;0036&amp;nbsp;&lt;span style="color:#0000FF;"&gt;end&lt;/span&gt;.&lt;br&gt;&lt;br /&gt;0037&lt;br&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-1922343445334927968?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/1922343445334927968/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=1922343445334927968' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/1922343445334927968'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/1922343445334927968'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2009/04/blog-post_12.html' title='僕の使っている言語でもできるんです。（その１）'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_ga1vA17U6Hs/SeHprUG-JII/AAAAAAAAABc/3oxqLNsrB78/s72-c/Err_4_1.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-6283706205346967107</id><published>2009-04-11T08:14:00.003+09:00</published><updated>2009-04-12T22:26:11.755+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CodeGearブログWatch'/><title type='text'>コンバータ</title><content type='html'>RemObjects社が、&lt;a href="http://www.delphifeeds.com/go/s/55147"&gt;C#のコードをDelphi Prism(Oxygen)のコードに&lt;br /&gt;コンバートするツール&lt;/a&gt;を作ったようです。（最初のバージョンがリリース&lt;br /&gt;されたようです。）&lt;a href="http://www.delphifeeds.com/go/s/55131"&gt;&lt;br /&gt;&lt;br /&gt;また、SVN Repsostoriesを公開したようです&lt;/a&gt;。&lt;br /&gt;&lt;br /&gt;追伸 &lt;a href="http://www.delphifeeds.com/"&gt;Delphi FeedのLook&lt;/a&gt;が変わっています。&lt;br /&gt;&lt;a href="http://stackoverflow.com/questions/tagged/delphi"&gt;Stack OverFlow&lt;/a&gt;のようなLookになっています。&lt;br /&gt;個人的には、新しいLookは良いと思います。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-6283706205346967107?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/6283706205346967107/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=6283706205346967107' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/6283706205346967107'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/6283706205346967107'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2009/04/blog-post_780.html' title='コンバータ'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-558840044002862955</id><published>2009-04-11T08:01:00.004+09:00</published><updated>2009-04-11T08:12:08.723+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ちょっとした疑問'/><category scheme='http://www.blogger.com/atom/ns#' term='勝手な意見'/><title type='text'>新書版かペーパバック版が欲しいです。</title><content type='html'>遅くなりましたがDelphi 2009 Handbook日本語版を&lt;br /&gt;読みました。&lt;br /&gt;&lt;br /&gt;この手の本は、実際にコードを打ち込んだり、&lt;br /&gt;サンプルで動作を確認しながら読むのが&lt;br /&gt;筋だと思うが、個人的には通勤電車の中で&lt;br /&gt;読むことが多い。&lt;br /&gt;&lt;br /&gt;その時に、気になるのが本の大きさ。&lt;br /&gt;一般的な大きさではありますが、&lt;br /&gt;満員電車のなかでたったまま頁を&lt;br /&gt;送るにはちょっとつらいです。&lt;br /&gt;&lt;br /&gt;そこで、値段は同じか高くても良いから&lt;br /&gt;新書版かペーパバック版の&lt;br /&gt;Delphi 2009 Handbookがあったら良いな&lt;br /&gt;と思ったりします。&lt;br /&gt;&lt;br /&gt;そもそも、満員電車で読むなと言う話も&lt;br /&gt;ありますので、こんなことを思うのは&lt;br /&gt;自分だけかな？&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-558840044002862955?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/558840044002862955/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=558840044002862955' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/558840044002862955'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/558840044002862955'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2009/04/blog-post_11.html' title='新書版かペーパバック版が欲しいです。'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-6005384994723533775</id><published>2009-04-10T23:11:00.002+09:00</published><updated>2009-04-10T23:26:25.423+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='備忘録'/><category scheme='http://www.blogger.com/atom/ns#' term='CodeGearブログWatch'/><category scheme='http://www.blogger.com/atom/ns#' term='その他'/><title type='text'>ほんとかな？</title><content type='html'>C#の機能に関するブログですが、&lt;a href="http://d.hatena.ne.jp/haruyutaka/20090309/p1"&gt;このブログ&lt;/a&gt;によれば、&lt;br /&gt;&lt;br /&gt;DelphiのほうがVC++より優れているのがMSの公式見解らしいです。&lt;br /&gt;&lt;br /&gt;まあ、Delphi2が発売されてからしばらくの間の"凄まじい”ほどの&lt;br /&gt;引き抜き工作を見ればなんとなく明らかなんですが・・・・&lt;br /&gt;&lt;br /&gt;&lt;a href="http://d.hatena.ne.jp/beta_magnus/20090312/1236877041"&gt;こういった、感想をもたれたかたもいるみたいですし&lt;/a&gt;&lt;br /&gt;（Action Listはヘジルスバーグさんがいなくなってから&lt;br /&gt;実装された機能）&lt;br /&gt;&lt;br /&gt;個人的には、Delphiは過小評価されている製品だと思うので&lt;br /&gt;もっと正当な評価がされるべきだと思う&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-6005384994723533775?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://d.hatena.ne.jp/haruyutaka/20090309/p1' title='ほんとかな？'/><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/6005384994723533775/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=6005384994723533775' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/6005384994723533775'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/6005384994723533775'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2009/04/blog-post_10.html' title='ほんとかな？'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-623298515056630679</id><published>2009-04-10T23:05:00.001+09:00</published><updated>2009-04-10T23:08:30.548+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CodeGearブログWatch'/><category scheme='http://www.blogger.com/atom/ns#' term='その他'/><title type='text'>偶然見つけた記事</title><content type='html'>2chはあまり詳しくはありませんが&lt;br /&gt;&lt;br /&gt;&lt;a href="http://gigazine.net/index.php?/news/comments/20090410_jane_interview"&gt;こういった、Delphi製のアプリケーション&lt;/a&gt;が&lt;br /&gt;大々的に紹介されることは良いことだと思います。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-623298515056630679?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://gigazine.net/index.php?/news/comments/20090410_jane_interview' title='偶然見つけた記事'/><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/623298515056630679/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=623298515056630679' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/623298515056630679'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/623298515056630679'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2009/04/blog-post.html' title='偶然見つけた記事'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-2659804475430619660</id><published>2009-03-19T23:13:00.002+09:00</published><updated>2009-03-19T23:16:51.647+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='その他'/><title type='text'>ブログのタイトル変えます。</title><content type='html'>買収成立時からずっと迷ってけど、日本法人さんも&lt;br /&gt;名実ともにEmbarcaderoさんに変わったようなので&lt;br /&gt;これを気にブログのタイトルを変更致します。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-2659804475430619660?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/2659804475430619660/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=2659804475430619660' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/2659804475430619660'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/2659804475430619660'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2009/03/blog-post_19.html' title='ブログのタイトル変えます。'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-5096345337342589726</id><published>2009-03-13T03:38:00.002+09:00</published><updated>2009-03-13T03:42:46.306+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='備忘録'/><category scheme='http://www.blogger.com/atom/ns#' term='CodeGearブログWatch'/><title type='text'>Delphi Prism 2009 February Release</title><content type='html'>Delphi Prism 2009 February ReleaseがCodeCentralに&lt;br /&gt;アップされたとのことです。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-5096345337342589726?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/5096345337342589726/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=5096345337342589726' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/5096345337342589726'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/5096345337342589726'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2009/03/delphi-prism-2009-february-release.html' title='Delphi Prism 2009 February Release'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-3255013120434937207</id><published>2009-03-05T14:40:00.001+09:00</published><updated>2009-03-05T14:42:36.591+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='備忘録'/><category scheme='http://www.blogger.com/atom/ns#' term='CodeGearブログWatch'/><title type='text'>Delphi PHP Survey</title><content type='html'>がはじまってまして、日本語のページもできてます。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-3255013120434937207?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/3255013120434937207/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=3255013120434937207' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/3255013120434937207'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/3255013120434937207'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2009/03/delphi-php-survey.html' title='Delphi PHP Survey'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-3221707008197031443</id><published>2009-03-04T22:31:00.002+09:00</published><updated>2009-03-04T22:52:07.454+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='勝手な意見'/><category scheme='http://www.blogger.com/atom/ns#' term='昔の思い出'/><title type='text'>爆速コンパイラ</title><content type='html'>ブログでは、いろいろ不満も書いていますが&lt;br /&gt;&lt;br /&gt;自分がDelphiを使い続ける１番の理由は、&lt;br /&gt;Turbo Pascal からの爆速コンパイラです。&lt;br /&gt;&lt;br /&gt;自分がBorland(現Embacadero）のPascal処理系&lt;br /&gt;を本格的に使い出したのはTrubo Pascal 5.5&lt;br /&gt;からです（最初に使ったのは学校のコンピュータ&lt;br /&gt;の授業でのTrubo Pascal3.0)が、それまでは&lt;br /&gt;プログラムを組んだことも無かったので&lt;br /&gt;爆速コンパイラが特別だとは思いませんでした。&lt;br /&gt;&lt;br /&gt;その後、会社でN88, MS-C,Turbo-C,など&lt;br /&gt;いろいろな処理系を使いましたが、&lt;br /&gt;これらの処理系を使えば、使うほど&lt;br /&gt;Delphi(Trubo pascal)の爆速コンパイラが&lt;br /&gt;特別であることを実感しました。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-3221707008197031443?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/3221707008197031443/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=3221707008197031443' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/3221707008197031443'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/3221707008197031443'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2009/03/blog-post_04.html' title='爆速コンパイラ'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-8769490666793554155</id><published>2009-03-04T22:07:00.002+09:00</published><updated>2009-03-04T22:15:02.843+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CodeGearブログWatch'/><category scheme='http://www.blogger.com/atom/ns#' term='勝手な意見'/><title type='text'>エンバカデロオールアクセス</title><content type='html'>ったった高いです。&lt;br /&gt;&lt;br /&gt;378000～って、うちのようなソフトがメインではない&lt;br /&gt;弱小企業では、稟議すら通らないです。(T_T)&lt;br /&gt;&lt;br /&gt;このような、大企業様向けのサービスよりも&lt;br /&gt;もっと、個人開発者や、弱小企業にも&lt;br /&gt;優しくして欲しいと思う。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-8769490666793554155?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/8769490666793554155/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=8769490666793554155' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/8769490666793554155'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/8769490666793554155'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2009/03/blog-post.html' title='エンバカデロオールアクセス'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-2473501892424127040</id><published>2009-03-03T05:33:00.003+09:00</published><updated>2009-03-03T05:53:40.172+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CodeGearブログWatch'/><category scheme='http://www.blogger.com/atom/ns#' term='勝手な意見'/><title type='text'>VS2010のFLOATINGサポート</title><content type='html'>&lt;a href="http://blog.marcocantu.com/blog/vs2010_floating_embedded.html"&gt;Marco氏のBlogポストによれば&lt;/a&gt;、Visual Studio2010のIDEは、&lt;br /&gt;Floating Designerをサポートするとのことだ。&lt;br /&gt;&lt;br /&gt;DelphiのIDEでは、Floating Designerが無くなるかもしれないが、&lt;br /&gt;上記のことが今後のIDEのFeatureの方針に何らかの影響を&lt;br /&gt;与えるかも&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-2473501892424127040?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://blog.marcocantu.com/blog/vs2010_floating_embedded.html' title='VS2010のFLOATINGサポート'/><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/2473501892424127040/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=2473501892424127040' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/2473501892424127040'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/2473501892424127040'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2009/03/vs2010floating.html' title='VS2010のFLOATINGサポート'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-810212384391166594</id><published>2009-02-18T23:15:00.001+09:00</published><updated>2009-02-18T23:16:53.591+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ちょっとした疑問'/><title type='text'>エンバカデロデベロッパーネットワーク</title><content type='html'>CDNがEDNに変わっていた。&lt;br /&gt;&lt;br /&gt;ログオンしようとすると認証エラーがでるのだけど&lt;br /&gt;&lt;br /&gt;これって、自分のPC(FireFox)だけかな？&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-810212384391166594?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/810212384391166594/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=810212384391166594' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/810212384391166594'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/810212384391166594'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2009/02/blog-post_18.html' title='エンバカデロデベロッパーネットワーク'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-6031489941468032101</id><published>2009-02-18T23:02:00.002+09:00</published><updated>2009-02-18T23:17:16.649+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CodeGearブログWatch'/><category scheme='http://www.blogger.com/atom/ns#' term='勝手な意見'/><title type='text'>セキュリティ関係のセミナに行ってきた。</title><content type='html'>で、思ったのだけど&lt;br /&gt;DelphiというかVCLの脆弱性の話題って&lt;br /&gt;あまり聞いたことがない。&lt;br /&gt;&lt;br /&gt;実は、気づかないだけで、Quality Centralには&lt;br /&gt;あがっているのかな？&lt;br /&gt;&lt;br /&gt;もしそうであれば、アラートが欲しいものだ。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-6031489941468032101?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/6031489941468032101/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=6031489941468032101' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/6031489941468032101'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/6031489941468032101'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2009/02/blog-post.html' title='セキュリティ関係のセミナに行ってきた。'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-1582780048860769621</id><published>2009-02-17T21:01:00.003+09:00</published><updated>2009-02-17T22:12:33.186+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CodeGearブログWatch'/><category scheme='http://www.blogger.com/atom/ns#' term='勝手な意見'/><title type='text'>第12回エンバカデロデブキャンプに行ってきた。</title><content type='html'>ということで、以下感想および気になったことなどを雑記&lt;br /&gt;&lt;br /&gt;・オンデマンドラインセンス&lt;br /&gt;&lt;br /&gt;　　エンバカデロさんがオンデマンドライセンスを&lt;br /&gt;　　始めるとのこと。&lt;br /&gt;&lt;br /&gt;　　内容は、エンバカデロさんに一定金額払うと&lt;br /&gt;　　エンバカデロさんのすべての製品をを使用できるとのこと。&lt;br /&gt;&lt;br /&gt;　　期間は、明記が無かったがたぶん１年後のと年契約に&lt;br /&gt;　　なるのではないかと思う。&lt;br /&gt;　&lt;br /&gt;　　１ライセンスあたりの金額は３製品買うとお釣りが&lt;br /&gt;　　来るぐらいに設定すると言っていた。&lt;br /&gt;　　&lt;br /&gt;　　同様なライセンスを持つDelphi PrisimのEnt版3本分で&lt;br /&gt;　　考えると50万円前後にになるので、このあたりの&lt;br /&gt;　　金額設定ではないかと想像します。&lt;br /&gt;&lt;br /&gt;　　でも、これがRad Studio Arc版３本分だったら・・・・&lt;br /&gt;&lt;br /&gt;　　ちょっと怖いです。&lt;br /&gt;&lt;br /&gt;・Delphi For PHP&lt;br /&gt;&lt;br /&gt;　　今回は、開発者のホセさんがスピーカーとして来日て講演&lt;br /&gt;　　デモを見る限りでは、使いやすくて拡張しやすそう。&lt;br /&gt;　　今のところWEB系をあつかう案件はないのだか、案件が&lt;br /&gt;　　来たときには、使用を検討してみよう。&lt;br /&gt;　　&lt;br /&gt;　　ところで、スピーカさんがデモをやっているのを見ると&lt;br /&gt;　　大変簡単に思えるのだが実際やってみるとなかなかできなので&lt;br /&gt;　　デモのチュートリアルが欲しいのですが・・・&lt;br /&gt;　　&lt;br /&gt;・Delphi for Win32&lt;br /&gt;&lt;br /&gt;　　DBGRIDの使い方は大変参考になった。&lt;br /&gt;　　こういった、ものをまとめたWhite Paperあると良いと&lt;br /&gt;　　感じた。&lt;br /&gt;　　&lt;br /&gt;・Delphi Prism&lt;br /&gt;&lt;br /&gt;　　容易に書かれた日本語の情報があまりないので、今回の&lt;br /&gt;　　資料は大変有用だと思った。&lt;br /&gt;　　&lt;br /&gt;　　MSのVC#がMONOをサポートするとは思えないので&lt;br /&gt;　　商用でサポートのあるDelphi Prismは大変魅力だ。&lt;br /&gt;　　&lt;br /&gt;　　Design by Contract周りの機能(Require/Ensure)は&lt;br /&gt;　　是非ともDelphi for Win32に入れて欲しい。&lt;br /&gt;　　&lt;br /&gt;・トークセッション&lt;br /&gt;&lt;br /&gt;　　話を聞いていて思ったことは、&lt;br /&gt;　　&lt;br /&gt;　　どっかで一時期『三昧』になる次期が必要&lt;br /&gt;&lt;br /&gt;　　作るべきかどうかの判断が重要&lt;br /&gt;　　（市場から調達可能であれば逢えてつくる必要はない）&lt;br /&gt;　　作るのであれば最後までやりきることが重要&lt;br /&gt;　　&lt;br /&gt;　　自分はできそうなメドが立ったらできた気になって&lt;br /&gt;　　しまうので成長しない（飛躍しない）のだろう(^_^;)&lt;br /&gt;　　&lt;br /&gt;　　アンケートに対する自分の回答は以下のとおり&lt;br /&gt;　　&lt;br /&gt;　　0)ビールが好きかSAKEが好きか？&lt;br /&gt;　　　　無回答&lt;br /&gt;　　　　理由）下戸だから&lt;br /&gt;　　　　　　　（今までアルコールをうまいと&lt;br /&gt;　　　　　　　思ったことがない。）&lt;br /&gt;　　　　&lt;br /&gt;　　1)初めて使った言語がDelphi? OTHER&lt;br /&gt;　　　　最初にさわったのはSharpのポケコンBASIC&lt;br /&gt;　　　　PCではTurbo Pascal 3.0&lt;br /&gt;　　　　&lt;br /&gt;　　　　ちなみにDelphiを選択した理由は、&lt;br /&gt;　　　　Delphiが日本でのTurbo Pascal 6.0の&lt;br /&gt;　　　　次のVersionだったことです。&lt;br /&gt;　　　　（そこに特にドラマは無いです。）&lt;br /&gt;　　　　&lt;br /&gt;　　2)問題が会ったときは自決する? 自決&lt;br /&gt;　　　　ネットでの検索も含めて自決&lt;br /&gt;　　　　理由）Delphiユーザは事務所内で自分だけなので&lt;br /&gt;　　　　　　　聞けない。&lt;br /&gt;　　　　　　　以前、ネットで質問してひどい目にあったのが&lt;br /&gt;　　　　　　　トラウマになりネットでは質問できない。&lt;br /&gt;　　　　　　　（恐れ多くて聞けない。）&lt;br /&gt;　　　　　　　&lt;br /&gt;　　3)自分の方法は標準だと思うか？&lt;br /&gt;　　　　思わない。&lt;br /&gt;　　　　理由）標準の定義がよくわからないのと&lt;br /&gt;　　　　　　　他人と比べたことがないので&lt;br /&gt;　　　　　　　&lt;br /&gt;　　4)次回のこのセッションはトーク？飲み会？&lt;br /&gt;　　　　トーク&lt;br /&gt;　　　　理由）人見知りがひどいので・・・&lt;br /&gt;　　　　　　　また恐れ多くて発言なんてとてもとても&lt;br /&gt;　　　　　　　&lt;br /&gt;　　5)飲み会であれば、会費でも良いか？&lt;br /&gt;　　　　会費がよい。&lt;br /&gt;　　　　理由）もっと他のことにお金をつかって欲しい&lt;br /&gt;　　　　&lt;br /&gt;　　6)Delphiのフィールドテストに参加する意志はあるか？&lt;br /&gt;　　　　無い。&lt;br /&gt;　　　　理由）NDAを守れる自信がない&lt;br /&gt;　&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-1582780048860769621?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/1582780048860769621/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=1582780048860769621' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/1582780048860769621'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/1582780048860769621'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2009/02/12.html' title='第12回エンバカデロデブキャンプに行ってきた。'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-6125646369304025867</id><published>2009-01-28T22:46:00.002+09:00</published><updated>2009-01-28T23:13:49.927+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='備忘録'/><category scheme='http://www.blogger.com/atom/ns#' term='CodeGearブログWatch'/><category scheme='http://www.blogger.com/atom/ns#' term='勝手な意見'/><title type='text'>コンパイラの将来を読んで思うこと</title><content type='html'>このポストはあくまでも私見であり、自分な勝手&lt;br /&gt;思い込みで書いてますので、疑いながら&lt;br /&gt;読んでいただければと思います。&lt;br /&gt;&lt;br /&gt;CDN上に&lt;a href="http://dn.codegear.com/jp/article/39242"&gt;将来のDelphiコンパイラの概要を&lt;br /&gt;示す論文&lt;/a&gt;がアップされていた。&lt;br /&gt;&lt;br /&gt;この論文でNickが言いたかったことは&lt;br /&gt;&lt;br /&gt;『中間ファイルを通してフロントエンドと&lt;br /&gt;バックエンドを交換可能な構造にする』&lt;br /&gt;&lt;br /&gt;ということではないだろうかと思う。&lt;br /&gt;&lt;br /&gt;Nick氏が以前のデベロッパーキャンプで&lt;br /&gt;64bitコンパイラはクロスコンパイラにする&lt;br /&gt;予定だと言っていた。&lt;br /&gt;&lt;br /&gt;この64bitコンパイラ作成の作業では、当然の&lt;br /&gt;ことながら、32Bitコンパイラと生成する&lt;br /&gt;機械語を変える必要がある。&lt;br /&gt;&lt;br /&gt;この作業の過程でコンパイラのフロントエンド&lt;br /&gt;とバックエンドの切り離しのメドが立ったのでは&lt;br /&gt;ないだろうか？&lt;br /&gt;&lt;br /&gt;『中間ファイルを通してフロントエンドと&lt;br /&gt;バックエンドを交換可能な構造にする』&lt;br /&gt;&lt;br /&gt;って考え方は.NetのCLRと基本的には&lt;br /&gt;同じだと思う。エンバカデロさんは&lt;br /&gt;これをネイティブで実施しようということ&lt;br /&gt;でしょうか？&lt;br /&gt;&lt;br /&gt;Linuxのクロスコンパイラも考えている&lt;br /&gt;ようなことをNickが言っていた記憶が&lt;br /&gt;あるのでWindows64Bitコンパイラを&lt;br /&gt;足ががかりにその他の環境にも手を&lt;br /&gt;広げる予定なのだろうか？&lt;br /&gt;&lt;br /&gt;とすれば、Delphi Prismの意味が&lt;br /&gt;なくなってしまうような・・・&lt;br /&gt;（もちろんASP.NETでは意味がありますが・・・）&lt;br /&gt;&lt;br /&gt;.NetもWin32 Or Win64 のNativeコンパイラ&lt;br /&gt;を用意する計画があるようなので.Netより&lt;br /&gt;前にしないとインパクトとしてはちょっと&lt;br /&gt;弱くなっちゃうかな？&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-6125646369304025867?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://dn.codegear.com/jp/article/39242' title='コンパイラの将来を読んで思うこと'/><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/6125646369304025867/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=6125646369304025867' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/6125646369304025867'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/6125646369304025867'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2009/01/blog-post_28.html' title='コンパイラの将来を読んで思うこと'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-3695306032074546855</id><published>2009-01-20T22:07:00.005+09:00</published><updated>2009-01-21T22:27:52.432+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CodeGearブログWatch'/><category scheme='http://www.blogger.com/atom/ns#' term='勝手な意見'/><title type='text'>年貢方式に変えるのかな？</title><content type='html'>&lt;p&gt;3rd Rail 2.0の日本語版が発売になりました。&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;でこの製品の売り方がこれまでと変わっていて&lt;/p&gt;&lt;p&gt;一年間限定のライセンスで19,800円となっている。&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;一年間の間は、常に最新のバージョンにアップする&lt;/p&gt;&lt;p&gt;権利がありるとのことなのだが、使用権については&lt;/p&gt;&lt;p&gt;どうなんだろう？一年毎に更新料がいるのかな？&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;気になって価格表を確認してみるとDelphi Prismも&lt;/p&gt;&lt;p&gt;同様なライセンスになっている。&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;ということは、今後、エンバカデロさんは１年間継続&lt;/p&gt;&lt;p&gt;ライセンスに移行するつもりなのだろか？&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;メーカさんからしてみれば、２～３年に一度&lt;/p&gt;&lt;p&gt;大きなお金が入るよりも年間一定額入るほうが&lt;/p&gt;&lt;p&gt;事業計画が立てやすいと思う。&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;年間契約がよいか？メジャーバージョン内有効の&lt;/p&gt;&lt;p&gt;契約が良いか？は個人によって判断が分かれる&lt;/p&gt;&lt;p&gt;ところであるとおもうが、それは『中抜けOK』での&lt;/p&gt;&lt;p&gt;話だと思う。&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;現状のスタンダードサポートのように&lt;/p&gt;&lt;p&gt;『中抜けだめよ！』の契約（中抜けしたときは&lt;/p&gt;&lt;p&gt;中抜け期間分の金額も払わないと更新できない。）&lt;/p&gt;&lt;p&gt;であれば、エンバカデロから年間契約に値する&lt;/p&gt;&lt;p&gt;ロードマップを提供されなければ、使用者にとっての&lt;/p&gt;&lt;p&gt;メリットは少ないと個人的には思う。&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;今後エンバカデロさんがどのような製品体系（価格体系）&lt;/p&gt;&lt;p&gt;を構成してゆくのかは要経過観察が必要だ。&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;2009/01/21 追記&lt;/p&gt;&lt;p&gt;&lt;a href="http://blogs.itmedia.co.jp/barbaro/2009/01/delphi-c266.html"&gt;藤井さんのブログによれば&lt;/a&gt;、3rdRailは、ウィルスバスターと同様な&lt;/p&gt;&lt;p&gt;年貢方式のライセンスのようです。&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-3695306032074546855?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/3695306032074546855/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=3695306032074546855' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/3695306032074546855'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/3695306032074546855'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2009/01/blog-post.html' title='年貢方式に変えるのかな？'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-973060771638614393</id><published>2009-01-08T22:01:00.001+09:00</published><updated>2009-01-08T22:03:26.841+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CodeGearブログWatch'/><category scheme='http://www.blogger.com/atom/ns#' term='勝手な意見'/><title type='text'>Delphi 2009 Handbook日本語版</title><content type='html'>エンバカデロさんで翻訳中です。&lt;br /&gt;実際に出版されるのを楽しみにしよう。&lt;br /&gt;それにしても1週間で半分も訳すなんて&lt;br /&gt;凄過ぎです。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-973060771638614393?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://blogs.itmedia.co.jp/barbaro/2009/01/delphi-c266.html' title='Delphi 2009 Handbook日本語版'/><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/973060771638614393/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=973060771638614393' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/973060771638614393'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/973060771638614393'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2009/01/delphi-2009-handbook.html' title='Delphi 2009 Handbook日本語版'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-4198828496297425107</id><published>2008-12-26T01:25:00.002+09:00</published><updated>2008-12-26T01:31:28.776+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='その他'/><title type='text'>年貢の季節が・・・</title><content type='html'>Rad Studio のスタンダードサポートの更新案内が今年もやってきた。&lt;br /&gt;製品本体の価格の上昇につれてサポート費用も上がっているので&lt;br /&gt;支払いがだんだんつらくなります。(T_T)&lt;br /&gt;&lt;br /&gt;来年は、バージョンアップがあるのだろうか？・・・&lt;br /&gt;&lt;br /&gt;メジャーバージョンアップがあれば、元がとれるので&lt;br /&gt;来年のバージョンアップに期待しよう。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-4198828496297425107?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/4198828496297425107/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=4198828496297425107' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/4198828496297425107'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/4198828496297425107'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2008/12/blog-post_26.html' title='年貢の季節が・・・'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-4051277693556879290</id><published>2008-12-12T23:12:00.002+09:00</published><updated>2008-12-12T23:17:32.507+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='備忘録'/><category scheme='http://www.blogger.com/atom/ns#' term='CodeGearブログWatch'/><title type='text'>DelphiでDesign Patterns</title><content type='html'>TDelphiHobbyistさんが、&lt;a href="http://tdelphihobbyist.blogspot.com/2008/12/design-patterns-in-delphi-resources.html"&gt;Delphiで書かれたDesign Patternの解説・サンプルの&lt;br /&gt;ブックマーク&lt;/a&gt;をBlogにポストしています。&lt;br /&gt;&lt;br /&gt;これは、良いブックマークだ。&lt;br /&gt;&lt;br /&gt;自分もブックマークしておこう。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-4051277693556879290?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://tdelphihobbyist.blogspot.com/2008/12/design-patterns-in-delphi-resources.html' title='DelphiでDesign Patterns'/><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/4051277693556879290/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=4051277693556879290' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/4051277693556879290'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/4051277693556879290'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2008/12/delphidesign-patterns.html' title='DelphiでDesign Patterns'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-121797213159110373</id><published>2008-12-10T20:35:00.002+09:00</published><updated>2008-12-10T20:50:10.825+09:00</updated><title type='text'>Using New Delphi Coding Styles and Architectures</title><content type='html'>&lt;a href="http://blogs.codegear.com/nickhodges/2008/12/08/39159"&gt;Nickさんのブログ記事&lt;/a&gt;で、CDN記事&lt;a href="http://dn.codegear.com/article/39076"&gt;Using New Delphi Coding Styles and Architectures&lt;/a&gt;が&lt;br /&gt;紹介されていた。&lt;br /&gt;&lt;br /&gt;これは、Delphiw2009で追加された新機能のコーディングスタイルのガイドラインのようだ。&lt;br /&gt;&lt;br /&gt;現状参考にしている&lt;a href="http://dn.codegear.com/article/10280"&gt;Object Pascal Style Guide&lt;/a&gt;が1999年のものなので&lt;br /&gt;一度、現状のすべての機能踏まえたスタイルガイドラインが、欲しいとこだ。&lt;br /&gt;（あくまでも他力本願です。(^_^;)）&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-121797213159110373?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://dn.codegear.com/article/39076' title='Using New Delphi Coding Styles and Architectures'/><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/121797213159110373/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=121797213159110373' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/121797213159110373'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/121797213159110373'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2008/12/using-new-delphi-coding-styles-and.html' title='Using New Delphi Coding Styles and Architectures'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-7985282920474387546</id><published>2008-12-07T01:37:00.002+09:00</published><updated>2008-12-07T01:57:11.981+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CodeGearブログWatch'/><title type='text'>Pascal Script Ver Up</title><content type='html'>RemObjectsのPascal ScriptがVersionアップされています。&lt;br /&gt;今度のリリースは、インストーラーがDelphi IDEにコンポーネントを&lt;br /&gt;登録します。&lt;br /&gt;&lt;br /&gt;これでやっとDelphi2009で試せます。（とりあえず、RemObjects添付の&lt;br /&gt;サンプルは動いたみたいです。）&lt;br /&gt;&lt;br /&gt;OxygeneのコマンドラインEditonもFreeでダウンロードできます。&lt;br /&gt;&lt;br /&gt;また、Delphi Prismの壁紙も用意されています。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-7985282920474387546?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/7985282920474387546/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=7985282920474387546' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/7985282920474387546'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/7985282920474387546'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2008/12/pascal-script-ver-up.html' title='Pascal Script Ver Up'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-620393098054005160</id><published>2008-12-05T23:54:00.003+09:00</published><updated>2008-12-05T23:58:46.747+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CodeGearブログWatch'/><title type='text'>Delphi 2009 Handbook</title><content type='html'>Code CentralでDelphi2009の登録ユーザ向けに&lt;br /&gt;マルコさんのDelphi2009 HandbookのPDF版が&lt;br /&gt;公開されていたので早速ダウンロード&lt;br /&gt;&lt;br /&gt;ざっと見たけどUnicode周りだけで100頁弱ありました。&lt;br /&gt;しばらくは、辞書と格闘しながら読んでみよう。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-620393098054005160?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/620393098054005160/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=620393098054005160' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/620393098054005160'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/620393098054005160'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2008/12/delphi-2009-handbook.html' title='Delphi 2009 Handbook'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-3470806629484559797</id><published>2008-12-03T21:54:00.003+09:00</published><updated>2008-12-03T22:36:34.500+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CodeGearブログWatch'/><category scheme='http://www.blogger.com/atom/ns#' term='勝手な意見'/><title type='text'>エンバカデロデベロッパーキャンプに行ってきた。</title><content type='html'>以下感想&lt;br /&gt;&lt;br /&gt;今回は、アドバルーン的な派手な発表はなかったが&lt;br /&gt;線香花火のように地味ながら非常に有益な情報が&lt;br /&gt;多かった。&lt;br /&gt;&lt;br /&gt;トークセッションについて・・・&lt;br /&gt;&lt;br /&gt;自分は、ガリレオの組み込み環境派です。&lt;br /&gt;業務ではもっぱらVSを使うのであまりMDI形式の&lt;br /&gt;環境には違和感を感じないのです。&lt;br /&gt;それよりもエディターの行末のフリーカーソルON/OFF&lt;br /&gt;編集行の下線表示（強調表示をしてくれるのですが&lt;br /&gt;個人的には下線表示が良いです。）とか、逆方向検索機能&lt;br /&gt;のキーの割り当てなど、ソースエディタの使い勝手を改善&lt;br /&gt;して欲しいと思います。&lt;br /&gt;&lt;br /&gt;スクリプト（インタープリター）については質問者の方が&lt;br /&gt;何を意図しているのかによって扱いが違ってくるので&lt;br /&gt;この辺をまずはっきりさせたほうが良いかと思った。&lt;br /&gt;&lt;br /&gt;(1)自前のアプリケーションに組み込むのか、&lt;br /&gt;(2)ちょっとした動作検証を行うのか&lt;br /&gt;&lt;br /&gt;で随分意味合いが変わってくるので&lt;br /&gt;&lt;br /&gt;(2)の場合であれば、Delphiのコンパイル速度の&lt;br /&gt;早さもあって個人的には必要性を感じないです。&lt;br /&gt;&lt;br /&gt;(1)の場合は、仕事柄、ビルの各フロワーの電力使用量の&lt;br /&gt;加算など、実行時に処理を変えたいので、実行時バイナリで&lt;br /&gt;スクリプトを動かせることは非常魅力をかんじますが&lt;br /&gt;この場合は、有用なコンポーネントが数多くあるので&lt;br /&gt;これらを利用すれば良いと思う。&lt;br /&gt;&lt;br /&gt;PDFを希望したのは、自分だったりするのですが&lt;br /&gt;紙には紙の良さがあり、電子媒体にはその良さが&lt;br /&gt;あるので、紙とPDFのセットというのが良いかと&lt;br /&gt;思います。&lt;br /&gt;&lt;br /&gt;その他・・・&lt;br /&gt;&lt;br /&gt;今回は、日頃ネットでお世話になっている方々が講師を&lt;br /&gt;されていたのでちょっとビックリというのか、このような&lt;br /&gt;すごい方々と接していたかと思うと永遠の初心者の自分&lt;br /&gt;には恐れ多いなと思ってしまいました。&lt;br /&gt;&lt;br /&gt;それにしてもViperさん名前のとおり毒舌でしたね。&lt;br /&gt;でも、"安くしてよ"っというのはそのとおりで&lt;br /&gt;Rad Studioの一番高いのなんて50万円ですものね。&lt;br /&gt;普通には買えないですよ。(T_T)&lt;br /&gt;ソフトウェアアシュランスを使えば良いと言っても&lt;br /&gt;エンバカデロさんの場合は最初に製品を&lt;br /&gt;買わないといけないのでこの点がね・・・・&lt;br /&gt;せめて製品＋アシュランスのセットで半額にする&lt;br /&gt;などしないと結構苦しいのではと思います。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-3470806629484559797?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/3470806629484559797/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=3470806629484559797' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/3470806629484559797'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/3470806629484559797'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2008/12/blog-post.html' title='エンバカデロデベロッパーキャンプに行ってきた。'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-1000158379324245063</id><published>2008-11-21T21:37:00.003+09:00</published><updated>2008-11-21T21:53:39.405+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='勝手な意見'/><title type='text'>サブスクリプション通知</title><content type='html'>エンバカデロさんからサブスクリプションの案内が来た。&lt;br /&gt;&lt;br /&gt;前回メール便で物議を醸したこともあり、今回は事前に&lt;br /&gt;連絡すれば宅急便で送付してくれるとのことだ。&lt;br /&gt;&lt;br /&gt;こういった姿勢は、ボーランドさんでは見られなかった&lt;br /&gt;ことだ。&lt;br /&gt;&lt;br /&gt;こういった、前回の問題となった点を改善してくれた&lt;br /&gt;ことは非常に好感がもてますね。&lt;br /&gt;&lt;br /&gt;クレームは、起こったことよりもその後どうするかが&lt;br /&gt;非常に大事だと思います。&lt;br /&gt;&lt;br /&gt;ある意味、接客を生業とする自分もこういった姿勢は&lt;br /&gt;見習いたいと思います。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-1000158379324245063?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/1000158379324245063/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=1000158379324245063' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/1000158379324245063'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/1000158379324245063'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2008/11/blog-post_21.html' title='サブスクリプション通知'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-5758114159603682329</id><published>2008-11-08T11:21:00.002+09:00</published><updated>2008-11-08T11:25:50.396+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CodeGearブログWatch'/><title type='text'>非公認パッチ</title><content type='html'>&lt;a href="http://andy.jgknet.de/blog/"&gt;Andy&lt;/a&gt;さんがDelphi2009の非公認パッチを公開しています。&lt;br /&gt;&lt;br /&gt;パッチはQC#66892に関するものです。&lt;br /&gt;&lt;br /&gt;これって日本語を扱った場合でもOKかな？&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-5758114159603682329?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/5758114159603682329/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=5758114159603682329' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/5758114159603682329'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/5758114159603682329'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2008/11/blog-post.html' title='非公認パッチ'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-2176958765289953406</id><published>2008-11-07T22:12:00.003+09:00</published><updated>2008-11-07T22:22:58.413+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='勝手な意見'/><title type='text'>25周年</title><content type='html'>Turbo Pascal 1.0が世に出てから今年で25周年ということで&lt;br /&gt;David Iがブログにいろいろ記事を載っけている。&lt;br /&gt;&lt;br /&gt;自分は、学生の時に触ったFMR50用のTurbo pascal Ver3が最初&lt;br /&gt;（確かサザンパシフィック版だったと思う）&lt;br /&gt;&lt;br /&gt;本格的に使い出したのはTubro pascal 5.5からで、もう15年も&lt;br /&gt;使っているのだけど、一向に上達しないんだなこれが・・・(T_T)&lt;br /&gt;&lt;br /&gt;にしても、会社が変わりながらでも、同一もコンパイラが&lt;br /&gt;25年もつづくのはすごいことだと思う。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-2176958765289953406?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/2176958765289953406/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=2176958765289953406' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/2176958765289953406'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/2176958765289953406'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2008/11/25.html' title='25周年'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-3770116245383764752</id><published>2008-11-03T21:04:00.008+09:00</published><updated>2008-11-03T22:09:04.625+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='へなちょこTips'/><title type='text'>Pascal Scriptを使ってみた</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_ga1vA17U6Hs/SQ71gMqOaYI/AAAAAAAAABA/UkU4B25S564/s1600-h/Demo1.JPG"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 306px; height: 320px;" src="http://3.bp.blogspot.com/_ga1vA17U6Hs/SQ71gMqOaYI/AAAAAAAAABA/UkU4B25S564/s320/Demo1.JPG" alt="" id="BLOGGER_PHOTO_ID_5264414947945638274" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Delphi Prismの関係でRemObjectsのWEBサイトを見たところPascal Scriptが&lt;br /&gt;Freeと書いてあったのインストール。&lt;br /&gt;&lt;br /&gt;Delphi2009にインストールしてみたけど、コンパイルエラーが・・・&lt;br /&gt;内容を良く調べてみるとUnicode化に伴うエラーコードっぽい。&lt;br /&gt;&lt;br /&gt;自分の手ではちょっと直しようがないので（パーサー周りポインターが&lt;br /&gt;多くなるのでちょっとつらいかな？）とりあえずDelphi 2007で試用&lt;br /&gt;&lt;br /&gt;サンプルは右図のメモにコードを入力して、結果をラベルに表示する簡単なものです。&lt;br /&gt;&lt;br /&gt;ソースコードは、こんな感じ。&lt;br /&gt;&lt;br /&gt;&lt;pre class="sourcecode"&gt;&lt;br /&gt;&lt;code class="keyword"&gt;unit&lt;/code&gt; Unit1;&lt;br /&gt;&lt;br /&gt;&lt;code class="keyword"&gt;interface&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code class="keyword"&gt;uses&lt;/code&gt;&lt;br /&gt;Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,&lt;br /&gt;Dialogs, StdCtrls, uPSComponent;&lt;br /&gt;&lt;br /&gt;&lt;code class="keyword"&gt;type&lt;/code&gt;&lt;br /&gt;TForm1 = &lt;code class="keyword"&gt;class&lt;/code&gt;(TForm)&lt;br /&gt;  Memo1: TMemo;&lt;br /&gt;  Button1: TButton;&lt;br /&gt;  Label1: TLabel;&lt;br /&gt;  PSScript1: TPSScript;&lt;br /&gt;  &lt;code class="keyword"&gt;procedure&lt;/code&gt; Button1Click(Sender: TObject);&lt;br /&gt;  &lt;code class="keyword"&gt;procedure&lt;/code&gt; PSScript1Compile(Sender: TPSScript);&lt;br /&gt;&lt;code class="keyword"&gt;private&lt;/code&gt;&lt;br /&gt;  &lt;code class="comment"&gt;{ Private declarations }&lt;/code&gt;&lt;br /&gt;  &lt;code class="keyword"&gt;procedure&lt;/code&gt; DsWrite(s: &lt;code class="keyword"&gt;string&lt;/code&gt;);&lt;br /&gt;&lt;code class="keyword"&gt;public&lt;/code&gt;&lt;br /&gt;  &lt;code class="comment"&gt;{ Public declarations }&lt;/code&gt;&lt;br /&gt;&lt;code class="keyword"&gt;end&lt;/code&gt;;&lt;br /&gt;&lt;br /&gt;&lt;code class="keyword"&gt;var&lt;/code&gt;&lt;br /&gt;Form1: TForm1;&lt;br /&gt;&lt;br /&gt;&lt;code class="keyword"&gt;implementation&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code class="comment"&gt;{$R *.dfm}&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code class="keyword"&gt;procedure&lt;/code&gt; TForm1.Button1Click(Sender: TObject);&lt;br /&gt;&lt;code class="keyword"&gt;begin&lt;/code&gt;&lt;br /&gt;Self.PSScript1.Script.Assign(Self.Memo1.Lines);&lt;br /&gt;Self.PSScript1.Compile;&lt;br /&gt;Self.PSScript1.Execute;&lt;br /&gt;&lt;code class="keyword"&gt;end&lt;/code&gt;;&lt;br /&gt;&lt;br /&gt;&lt;code class="keyword"&gt;procedure&lt;/code&gt; TForm1.DsWrite(s: &lt;code class="keyword"&gt;string&lt;/code&gt;);&lt;br /&gt;&lt;code class="keyword"&gt;begin&lt;/code&gt;&lt;br /&gt;Label1.Caption := s;&lt;br /&gt;&lt;code class="keyword"&gt;end&lt;/code&gt;;&lt;br /&gt;&lt;br /&gt;&lt;code class="keyword"&gt;procedure&lt;/code&gt; TForm1.PSScript1Compile(Sender: TPSScript);&lt;br /&gt;&lt;code class="keyword"&gt;begin&lt;/code&gt;&lt;br /&gt;  Sender.AddMethod(Self,@TForm1.DsWrite, &lt;code class="quote"&gt;'procedure Writeln(s: string);'&lt;/code&gt;);&lt;br /&gt;&lt;code class="keyword"&gt;end&lt;/code&gt;;&lt;br /&gt;&lt;br /&gt;&lt;code class="keyword"&gt;end&lt;/code&gt;.&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Pascal ScriptのコンパイラとDelphiのコードを結びつけることができるので&lt;br /&gt;以外に応用範囲が広いかも・・・・&lt;br /&gt;&lt;br /&gt;また、上の例ではやってないが、Pascal Scriptでコンパイル済みのストリーム&lt;br /&gt;データの読み書きもできるので、自作のアプリケーションにちょっとした演算を&lt;br /&gt;組み込むには便利かも？&lt;br /&gt;&lt;br /&gt;もうちょっと深く突っ込んでみよう。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-3770116245383764752?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/3770116245383764752/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=3770116245383764752' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/3770116245383764752'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/3770116245383764752'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2008/11/pascal-script.html' title='Pascal Scriptを使ってみた'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_ga1vA17U6Hs/SQ71gMqOaYI/AAAAAAAAABA/UkU4B25S564/s72-c/Demo1.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-6612072271047875495</id><published>2008-10-28T22:04:00.003+09:00</published><updated>2008-10-28T23:02:33.332+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CodeGearブログWatch'/><category scheme='http://www.blogger.com/atom/ns#' term='勝手な意見'/><title type='text'>ありがとうVCL.NETそしてさよならだ</title><content type='html'>エンバカデロさんのサイトにDelphi Prismの概要が公開された。&lt;br /&gt;&lt;br /&gt;FAQによれば、Delphi PrismではVCL.NETは提供されない。&lt;br /&gt;（原文は、deprecatedとなっているのでVCL.NETは廃止予定と考えられる）&lt;br /&gt;&lt;br /&gt;VCL.NETは、Win32から.NETへ手間をかけずに移行するのが目的だったので&lt;br /&gt;既にその役目は終えたのでしょう。&lt;br /&gt;&lt;br /&gt;実際(ここはあえて）Borlandさんの.Net戦略のまずさやdelphi 8(ガリレオVer2)の&lt;br /&gt;できばえの悪さに足を引っ張られたので、十分に役目を果たしたとはちょっと&lt;br /&gt;言い難いですが・・・&lt;br /&gt;&lt;br /&gt;もともと、Borlandさんも新規.NetソリューションはVCL.NETを使わないで&lt;br /&gt;というアナウンスをしていたので妥当といえば妥当でしょう。&lt;br /&gt;&lt;br /&gt;ただ、Borland→Codegear→Embarcaderoと変わっていく中で&lt;br /&gt;.Netに関する方針がかなり右往左往したので、今後はあまり軸の&lt;br /&gt;ぶれない方針でお願いしたいです。&lt;br /&gt;&lt;br /&gt;追伸・・・&lt;br /&gt;本記事のタイトルは、某アニメから引用しました。&lt;br /&gt;出典がわかる方はかなりのアニメ通ですね。(^_^;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-6612072271047875495?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/6612072271047875495/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=6612072271047875495' title='1 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/6612072271047875495'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/6612072271047875495'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2008/10/vclnet.html' title='ありがとうVCL.NETそしてさよならだ'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-4668533719452474518</id><published>2008-10-28T05:48:00.002+09:00</published><updated>2008-10-28T05:57:32.552+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CodeGearブログWatch'/><title type='text'>Delphi Prism In PDC</title><content type='html'>PDCでDelphi Prismが発表されました。&lt;br /&gt;CodegearさんのウェブサイトにもDelphi Prismのページが&lt;br /&gt;アップされています。（まだ英語のみ）&lt;a href="http://blog.marcocantu.com/blog/light_on_delphi_prism_oxygene.html"&gt;&lt;br /&gt;Marco Cantu&lt;/a&gt;によればRemobjects社から&lt;br /&gt;Oxygeneのライセンスの提供をうけた&lt;br /&gt;共同開発の製品だとのことです。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-4668533719452474518?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/4668533719452474518/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=4668533719452474518' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/4668533719452474518'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/4668533719452474518'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2008/10/delphi-prism-in-pdc.html' title='Delphi Prism In PDC'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-8611605070897895318</id><published>2008-10-04T12:30:00.002+09:00</published><updated>2008-10-04T12:32:52.477+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CodeGearブログWatch'/><title type='text'>Delphi Prism Beta</title><content type='html'>&lt;a href="http://blogs.codegear.com/chrispattinson/2008/10/03/38898/"&gt;次期Delphi.Netのテストが始まったようです&lt;/a&gt;。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-8611605070897895318?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/8611605070897895318/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=8611605070897895318' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/8611605070897895318'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/8611605070897895318'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2008/10/delphi-prism-beta.html' title='Delphi Prism Beta'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-4109559891703595527</id><published>2008-09-25T06:03:00.002+09:00</published><updated>2008-09-25T06:08:49.009+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CodeGearブログWatch'/><title type='text'>ジェネリックの例</title><content type='html'>&lt;a href="http://blogs.teamb.com/craigstuntz/2008/09/24/37838"&gt;Craig StuntzさんがGenericを使ったstatistics library&lt;/a&gt;を&lt;br /&gt;ブログで紹介している。&lt;br /&gt;&lt;br /&gt;面白そうな例なので、とりあえずブックマーク&lt;br /&gt;&lt;br /&gt;じっくり読読むのは週末かな？&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-4109559891703595527?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/4109559891703595527/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=4109559891703595527' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/4109559891703595527'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/4109559891703595527'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2008/09/blog-post_25.html' title='ジェネリックの例'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-5733528567703190081</id><published>2008-09-20T23:37:00.004+09:00</published><updated>2008-09-21T00:07:27.754+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CodeGearブログWatch'/><category scheme='http://www.blogger.com/atom/ns#' term='勝手な意見'/><title type='text'>Delphiの復権</title><content type='html'>&lt;a href="http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html"&gt;TIOBE SoftwareさんのCommunity Report&lt;/a&gt;というものが&lt;br /&gt;&lt;a href="http://blogs.codegear.com/andreanolanusse/2008/09/20/tiobe-delphi-in-top-10-again-after-strong-comeback/"&gt;Andreano Lanusse氏のブログポスト&lt;/a&gt;で紹介されていました。&lt;br /&gt;&lt;br /&gt;このレポートによれば、ユーザ数は昨年比で2%近く増加&lt;br /&gt;しているとのことで、レポートのヘッドラインも&lt;br /&gt;&lt;h1 style="font-weight: bold;"&gt;&lt;span style="font-size:100%;"&gt;strong comeback（力強い復活)&lt;/span&gt;&lt;/h1&gt;となっています。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Borland時代(Delphi6以降～Codegear発足まで）の不安低要素&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;が、Codegear発足以降がかなり少なくなっていることが&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;復権の大きな理由ではないかと思います。&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;また、MSとの差が明確になってVSとの棲み分けが可能&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;になったのも復活の要因かと思います。&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;あとは、ドキュメントの品質がもう少し良くなればと&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;思います。（すみません、ここは他力本願です。）&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-5733528567703190081?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/5733528567703190081/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=5733528567703190081' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/5733528567703190081'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/5733528567703190081'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2008/09/delphi_20.html' title='Delphiの復権'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-1226890593602277858</id><published>2008-09-20T15:39:00.001+09:00</published><updated>2008-09-20T15:41:22.799+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='備忘録'/><category scheme='http://www.blogger.com/atom/ns#' term='CodeGearブログWatch'/><title type='text'>Tiburon到着</title><content type='html'>Delphi2009が届いたので早速インストール。&lt;br /&gt;&lt;br /&gt;すると何かメッセージが表示されのでよく見るとリボンコントロールの作成・使用には&lt;br /&gt;マイクロソフト許可がいるみたいだ。&lt;br /&gt;&lt;br /&gt;で、ググってみると&lt;a href="http://www.itmedia.co.jp/enterprise/articles/0701/26/news001.html"&gt;Office 2007の無償UIライセンス、コードは提供せず&lt;/a&gt;&lt;br /&gt;って記事が・・・&lt;br /&gt;当時はリボンコントロールが有用だと思っていなかったので気にも止めていなかった。(^_^;)&lt;br /&gt;&lt;br /&gt;とりあえず、&lt;a href="http://msdn.microsoft.com/ja-jp/office/aa973809.aspx"&gt;ライセンシー取得用のURLを記録&lt;/a&gt;しておこっと。&lt;br /&gt;&lt;br /&gt;上記の記事によれば、マイクロソフトさんは使用のガイドラインは提供するが、&lt;br /&gt;ソースコードは一切提供しないみたいだ。&lt;br /&gt;それで、前回のデブキャンプでNick氏がリボンコントロールにマイクロソフトの&lt;br /&gt;コードは一切無いと言っていたのね。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-1226890593602277858?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/1226890593602277858/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=1226890593602277858' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/1226890593602277858'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/1226890593602277858'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2008/09/tiburon.html' title='Tiburon到着'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-6136022176910701412</id><published>2008-09-19T21:03:00.005+09:00</published><updated>2008-09-20T17:08:31.061+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='勝手な意見'/><category scheme='http://www.blogger.com/atom/ns#' term='Tiburon感想'/><title type='text'>Delphiクラスエクスプローラーをつかってみた。</title><content type='html'>以下、ちょっとさわったところで気になった点&lt;br /&gt;&lt;br /&gt;a) フィールド変数を先につくっておかないと、readerにフィールドが指定できない。&lt;br /&gt;　&lt;br /&gt;　　-- この変はテキストエディターで対応できているので、こちらも対応していただけると・・　&lt;br /&gt;&lt;br /&gt;b) メソッドのパラメータが２つ以上指定できなさそう。&lt;br /&gt;&lt;br /&gt;　　-- こちらは、とりあえず借りで作ると考えれば良いいかな&lt;br /&gt;&lt;br /&gt;せっかくダイアログベースでひな形が定義できるのだから、もうちょっと&lt;br /&gt;使い勝手がよくなるとよいな。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-6136022176910701412?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/6136022176910701412/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=6136022176910701412' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/6136022176910701412'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/6136022176910701412'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2008/09/delphi.html' title='Delphiクラスエクスプローラーをつかってみた。'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-5103344848409788102</id><published>2008-09-19T21:03:00.002+09:00</published><updated>2008-09-20T05:07:49.063+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CodeGearブログWatch'/><title type='text'>stackoverflow</title><content type='html'>&lt;a href="http://blogs.codegear.com/nickhodges/2008/09/18/39126"&gt;NickがブログでstackoverflowというQAサイトを紹介しています。&lt;/a&gt;&lt;br /&gt;その中で&lt;a href="http://stackoverflow.com/questions/tagged/delphi"&gt;delphiに関するQA&lt;/a&gt;は(http://stackoverflow.com/questions/tagged/delphi)&lt;br /&gt;で参照できるとのことです。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.delphi.org/2008/09/hidden-features-of-delphi/"&gt;The Podcast at Delphi.org&lt;/a&gt;によれば、stackoverflowの&lt;a href="http://stackoverflow.com/questions/102254/hidden-features-of-delphi#103971"&gt;Hidden Features of Delphi&lt;/a&gt;の&lt;br /&gt;スレッドで、delphiの隠れた機能が紹介されているとのことです。&lt;br /&gt;&lt;br /&gt;ということなので実際にみてみました。上のスレッドはIDEのショートカットキーが数多く&lt;br /&gt;紹介されています。&lt;br /&gt;CTRL + /で選択行のコメントアウトができるなんて知らなかった。（メモしておこうっと。）&lt;br /&gt;&lt;br /&gt;このスレッドのほかにもろいろなQAがあるので、あとから見てみよっと。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-5103344848409788102?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/5103344848409788102/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=5103344848409788102' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/5103344848409788102'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/5103344848409788102'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2008/09/stackoverflow.html' title='stackoverflow'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-2736273751136087157</id><published>2008-09-18T20:18:00.001+09:00</published><updated>2008-09-18T20:18:46.747+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ちょっとした疑問'/><title type='text'>親会社</title><content type='html'>リーマンさんの影響をうけないのだろうか？&lt;br /&gt;ちょっと疑問です。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-2736273751136087157?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/2736273751136087157/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=2736273751136087157' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/2736273751136087157'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/2736273751136087157'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2008/09/blog-post_18.html' title='親会社'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-7748819290435477564</id><published>2008-09-16T20:39:00.002+09:00</published><updated>2008-09-16T20:43:51.664+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CodeGearブログWatch'/><category scheme='http://www.blogger.com/atom/ns#' term='ちょっとした疑問'/><title type='text'>ソフトウェアアシュランス</title><content type='html'>Team Japan ブログでスタンダードサポートサービスでの&lt;br /&gt;送付内容が発表になってました。&lt;br /&gt;&lt;br /&gt;一応、Borland(Codegear)さんからきたユーザ登録委譲の&lt;br /&gt;確認書は返送したけど、ちゃんとTiburonが送付されて&lt;br /&gt;くるのだろうか？&lt;br /&gt;&lt;br /&gt;ちょっと心配。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-7748819290435477564?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/7748819290435477564/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=7748819290435477564' title='1 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/7748819290435477564'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/7748819290435477564'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2008/09/blog-post_16.html' title='ソフトウェアアシュランス'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-5988100248227660732</id><published>2008-09-12T22:58:00.002+09:00</published><updated>2008-09-12T23:03:53.658+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CodeGearブログWatch'/><category scheme='http://www.blogger.com/atom/ns#' term='その他'/><title type='text'>はやっ！</title><content type='html'>&lt;a id="RecentPosts__ctl0_Hyperlink3" class="clsSubText" href="http://blogs.codegear.com/ao/"&gt;Anders Ohlsson&lt;/a&gt;さんの環境では、５秒程度Delphiが起動するみたいだ。&lt;br /&gt;&lt;br /&gt;ところで、今日気づいたのですが、今年の１１月で&lt;br /&gt;エンバカデロさんのPASCAL処理系は25歳に&lt;br /&gt;なる見たいですね。(Turbo Pascal 1.0からの通算年数）&lt;br /&gt;&lt;br /&gt;なんかアニバーサリー的なイベントはあるのでしょうか・・・&lt;br /&gt;&lt;br /&gt;　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-5988100248227660732?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/5988100248227660732/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=5988100248227660732' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/5988100248227660732'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/5988100248227660732'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2008/09/blog-post.html' title='はやっ！'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3868338865989133986.post-5351914104894077964</id><published>2008-09-11T23:17:00.006+09:00</published><updated>2008-09-12T23:27:23.257+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='備忘録'/><category scheme='http://www.blogger.com/atom/ns#' term='CodeGearブログWatch'/><category scheme='http://www.blogger.com/atom/ns#' term='勝手な意見'/><title type='text'>10TH EMBARCADERO DEVELOPER CAMP IN TOKYO</title><content type='html'>自分が参加したセッションは、以下のとおり&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;G1 &lt;span id="ArticleLabel"&gt;&lt;span style="font-weight: bold; color: rgb(100, 2, 0);"&gt;「コーポレートアップデート＆DatabaseGearプロダクトオーバービュー」&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span id="ArticleLabel"&gt;&lt;span style="color: rgb(100, 2, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;G2&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span id="ArticleLabel"&gt;&lt;b style="color: rgb(102, 0, 0);"&gt;「CodeGearプロダクトアップデート - ベールを脱ぐDelphi/C++Builder次期バージョン"Tiburon"」 &lt;/b&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span id="ArticleLabel"&gt;&lt;span style="color: rgb(100, 2, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;A3&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span id="ArticleLabel"&gt;&lt;span style="font-weight: bold; color: rgb(100, 2, 0);"&gt;「データモデリングを見直そう！ - モデリングの基本とモデル駆動 DB 設計のポイント」 &lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span id="ArticleLabel"&gt;&lt;span style="color: rgb(100, 2, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;A4&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span id="ArticleLabel"&gt;&lt;b&gt;&lt;span style="color: rgb(142, 121, 105);"&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;「Delphi 2009 / C++Builder 2009最新情報」&lt;/span&gt; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;   &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span id="ArticleLabel"&gt;&lt;span style="color: rgb(100, 2, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;A5&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span id="ArticleLabel"&gt;&lt;b style="color: rgb(102, 0, 0);"&gt;「知って得する！現役ヘルプデスクが答えるDelphiテクニカルエッセンス3.0」&lt;/b&gt;&lt;br /&gt;   &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span id="ArticleLabel"&gt;&lt;span style="color: rgb(100, 2, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;A6&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span id="ArticleLabel"&gt;&lt;span style="font-weight: bold; color: rgb(100, 2, 0);"&gt;「Delトーーク！ボクのほしいDelphi」&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span id="ArticleLabel"&gt;&lt;span style="color: rgb(100, 2, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;以下に気になった点・感想・私見などを&lt;br /&gt;下記の内容は自分のメモを本に書いていますので信憑性は保障致しません。&lt;br /&gt;後日CDNからビデオなどが公開されると思いますのであくまでも参考ベース&lt;br /&gt;で読んでください（(^^ゞ)&lt;br /&gt;&lt;br /&gt;G1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span id="ArticleLabel"&gt;&lt;span style="font-weight: bold; color: rgb(100, 2, 0);"&gt;「コーポレートアップデート＆DatabaseGearプロダクトオーバービュー」&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Databasegear製品の紹介があった。&lt;br /&gt;現状では、販促活動の検討を行っているとのこと&lt;br /&gt;(ER/STUDIOでは、日揮情報システムさんがローカライズしているが&lt;br /&gt;その他の製品についても積極的にローカライズをしてゆくとのこと）&lt;br /&gt;&lt;br /&gt;Codegear製品とDatabaseGear製品を段階的に統合していくとのこと&lt;br /&gt;まだ、Codegear製品から見た場合アイデアのレベルではあるが&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span id="ArticleLabel"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;TQueryのSQL文を書くエディターにDatabeseGearのPowerSQLを使う&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span id="ArticleLabel"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;DelphiからSql文を自動生成する&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span id="ArticleLabel"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;などのようなことを考えているとのこと&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span id="ArticleLabel"&gt;&lt;span style="color: rgb(100, 2, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;G2&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span id="ArticleLabel"&gt;&lt;b style="color: rgb(102, 0, 0);"&gt;「CodeGearプロダクトアップデート - ベールを脱ぐDelphi/C++Builder次期バージョン"Tiburon"」 &lt;/b&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span id="ArticleLabel"&gt;&lt;span style="color: rgb(100, 2, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Delphi2009(C++ Builder2009)の新規の説明と今後の開発予定の話があった。&lt;br /&gt;&lt;br /&gt;今回の説明ではWin32 Nativeということを強調した説明であった。&lt;br /&gt;特にここにきてCOMのサポートの仕組みを強化していることは&lt;br /&gt;DelphiはNativeを中心に開発していくものだと思われる。&lt;br /&gt;&lt;br /&gt;Commodoreはちょっと遅れそう&lt;br /&gt;ただし、64bitサポートとマルチコア・マルチスレッド（並列処理のサポート）を&lt;br /&gt;同時提供できるよう検討している。&lt;br /&gt;&lt;br /&gt;Commodore後は、&lt;br /&gt;&lt;ul&gt;&lt;li&gt;チーム開発サポート&lt;/li&gt;&lt;li&gt;HELPとIDEの統合&lt;/li&gt;&lt;li&gt;CODE FORMATTER&lt;/li&gt;&lt;li&gt;BDEのマイグレーションパス&lt;/li&gt;&lt;li&gt;デバッガーのカスタムビューワ(StringListやBitマップに特化したViewer)&lt;/li&gt;&lt;/ul&gt;などを考えてるとのこと&lt;br /&gt;&lt;br /&gt;また、Nickは、将来的にはフローティングデザイナ（Delphi7までのデザイナ）のサポートを打ち切り&lt;br /&gt;たいようなことも言っていた。&lt;br /&gt;&lt;br /&gt;DotNetについては、Visual StudioとMonoのプラグンインにするとのこと&lt;br /&gt;(なお、Visual StudioのShellはMSから無償で利用可能みたいだ）&lt;br /&gt;&lt;br /&gt;今後のRad Studioはガリレオ(Native用）とVisual Studio Shell(.Net用）の&lt;br /&gt;２つを一つのパッケージにして販売して行くようだ。&lt;br /&gt;&lt;br /&gt;VCL.Netの今後の扱いが気になったのだが、聞くことができなかった。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-size:85%;" &gt;&lt;span style="font-family:georgia;"&gt;これは自分の想像であるが、Commodoreがクロスコンパイラでの提供予定であることと&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;TiburonでTObjectにToStringやGetHashCodeなどの.NetのObjectと同様なメソッドを&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;追加するなどライブラリレベルでの互換性の強化をしていることを考えると&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;ガリレオからクロスコンパイラでdot Netのアセンブリを作ることを考えているのでは&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;ないだろうか？&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Turbo製品の提供の予定についての質問がありNickから提供の予定は&lt;br /&gt;あるが言語学習目的の用途を想定した製品にする予定だとの回答があった。&lt;br /&gt;（現在のTruboシリーズよりも機能的にには少ないものになりそうだ）&lt;br /&gt;&lt;br /&gt;また、Firebirdをサポートして欲しいとの要望があったが、この要望に対しては&lt;br /&gt;Nick「自分としてはサポートしたいのだが解決しないといけない問題が・・・」&lt;br /&gt;と渋い顔をしていたので、&lt;span style="font-style: italic;font-size:85%;" &gt;CodegearでのFirebirdをサポートのためいに、技術的&lt;br /&gt;ではない大人の問題の解決が必要のようだ&lt;/span&gt;。&lt;br /&gt;&lt;br /&gt;&lt;span id="ArticleLabel"&gt;&lt;span style="color: rgb(100, 2, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;A3&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span id="ArticleLabel"&gt;&lt;span style="font-weight: bold; color: rgb(100, 2, 0);"&gt;「データモデリングを見直そう！ - モデリングの基本とモデル駆動 DB 設計のポイント」 &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span id="ArticleLabel"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;ER/Studioの機能を説明するために必要なDB設計（モデリング）の基礎を&lt;br /&gt;非常にわかりやすい資料と平易な言葉で説明して頂けた。&lt;br /&gt;こういった内容は、自分の周りではなかなか聞けない内容なので&lt;br /&gt;非常に勉強になったと思う。&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span id="ArticleLabel"&gt;&lt;span style="color: rgb(100, 2, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;A4&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span id="ArticleLabel"&gt;&lt;b&gt;&lt;span style="color: rgb(142, 121, 105);"&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;「Delphi 2009 / C++Builder 2009最新情報」&lt;/span&gt; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;   &lt;/span&gt;&lt;br /&gt;&lt;span id="ArticleLabel"&gt;&lt;span style="color: rgb(100, 2, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;NickがDEMOをしながらDelphi2009の新機能を説明してくれた。&lt;br /&gt;もともとのボリュームが多かったことと、DEMOに対する質疑が&lt;br /&gt;活発だったこともあり予定したDEMOが全て紹介できなかった&lt;br /&gt;見たいだ。&lt;br /&gt;&lt;br /&gt;自分が覚えている参加者からの質問は以下のとおり&lt;br /&gt;&lt;br /&gt;Genericを使うとEXEサイズはでかくなるのか&lt;br /&gt;→Nick:そんなことはない。TypeSafeを保障しかつサイズ・実行効率ともに&lt;br /&gt;　　　　　既存の継承をつかう方法よりもようなるよう設計してある。&lt;br /&gt;&lt;br /&gt;無名メソッドで.NetのMultiCastイベントに相当することはできるのか&lt;br /&gt;→Nick:できる。（答えてデモを行おうとしているとこで時間切れで）&lt;br /&gt;　　　　　&lt;a href="http://blogs.codegear.com/abauer/"&gt;Allen Bauerの(&lt;span style="font-style: italic;font-size:85%;" &gt;DelphiのGenericsの設計者と言ってた思う&lt;/span&gt;）Blog&lt;/a&gt;&lt;br /&gt;          に詳細な説明があるので見てくれとのこと。&lt;br /&gt;&lt;br /&gt;個人的には伝統のTThreadを使ったSortの例を無名メソッドに&lt;br /&gt;置き換えるDEMOがよかった。これはぜひとも手順を記載した&lt;br /&gt;チュートリアルが欲しいと思った。&lt;br /&gt;&lt;br /&gt;&lt;span id="ArticleLabel"&gt;&lt;span style="color: rgb(100, 2, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;A5&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span id="ArticleLabel"&gt;&lt;b style="color: rgb(102, 0, 0);"&gt;「知って得する！現役ヘルプデスクが答えるDelphiテクニカルエッセンス3.0」&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;VCL for WEBの使い方に関するQ&amp;amp;Aセッションだった。&lt;br /&gt;&lt;br /&gt;VCL for WEBについては、日本語で書かれた説明書がないので&lt;br /&gt;使っては見たいが使用に二の足を踏んでいたの手をつける良い資料となった。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-size:85%;" &gt;余談であるが、RaveReportなどDelphiにバンドルされるツールは&lt;br /&gt;日本語の説明書がないので非常にとっつきにくい。&lt;br /&gt;こういったバンドル製品の日本語のチュートリアルがあるとよいと&lt;br /&gt;個人的には思う。&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;そういったいみでは、実際に現場でバリバリと使われている企業さんの&lt;br /&gt;Q&amp;amp;Aは使用方法の勘所が抑えてあるので非常に貴重だ。&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span id="ArticleLabel"&gt;&lt;span style="color: rgb(100, 2, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;A6&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span id="ArticleLabel"&gt;&lt;span style="font-weight: bold; color: rgb(100, 2, 0);"&gt;「Delトーーク！ボクのほしいDelphi」&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span id="ArticleLabel"&gt;&lt;span style="color: rgb(100, 2, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;5人の方が発表されて、非常に盛り上がったセッションであった。&lt;br /&gt;質問も数多く出て６０分ではとても足りないぐらいだった。&lt;br /&gt;&lt;br /&gt;自分の周りにはDelphiユーザがいないので、実際のユーザ様の&lt;br /&gt;生の声とともにDelphiに対する熱い思いを感じることができて&lt;br /&gt;大変良かった思う。&lt;br /&gt;&lt;br /&gt;こんなにもりあがるのであれば、小集団活動的なものを行うのも&lt;br /&gt;良いかと思ったりした。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;(以下、また内容を思い出したり、思うことがあれば、追記します。）&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span id="ArticleLabel"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(100, 2, 0);"&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span id="ArticleLabel"&gt;&lt;span style="color: rgb(100, 2, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(100, 2, 0);"&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3868338865989133986-5351914104894077964?l=nonothoughtman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nonothoughtman.blogspot.com/feeds/5351914104894077964/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3868338865989133986&amp;postID=5351914104894077964' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/5351914104894077964'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3868338865989133986/posts/default/5351914104894077964'/><link rel='alternate' type='text/html' href='http://nonothoughtman.blogspot.com/2008/09/10th-embarcadero-developer-camp-in.html' title='10TH EMBARCADERO DEVELOPER CAMP IN TOKYO'/><author><name>OldTPFun</name><uri>http://www.blogger.com/profile/01113552963854795286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
