2009年7月31日

某所さん終了

残念なことにRANさんの某所/某所(避難所)さんが終了されるとのことです。
これまでおつかれさまでした。役に立つコンテンツも多いので、できれば更新終了後もblogはそのままにしておいていただけると嬉しいのですが…。

2010/11/15追記: RANさん某所 - その後の某所によると某所@so-netのコンテンツはfc2に統合したとのことです。

2009年7月29日

Microsoft OOB Update 2009/07

Microsoftの定例外のセキュリティアップデートがリリースされています。
MS09-034
MS09-035

2009年7月27日

Weaverプレビュー会開催

ちょっと前の情報ですが、Weaver (Delphi/C++Builder 2010)のプレビュー会が2009/08/06に行われるそうです。

Delphi/C++Builder次期バージョンプレビュー会のお知らせ

WeaverのFTには入れてもらえなかったので、どうするかなぁ…。もっとも人数制限もあるし、どうしよう以前に相手にしてもらえない可能性もあるわけですが。

2009/07/29追記: 上記リンク先にQ&Aが追加されています。別に当日PCを持っていかなくてもいいらしいです。

2009/08/05追記: 駆け込みですが出席することにしました。

2009年7月24日

Delphi Live! 2009/プレゼンテーション資料ダウンロード

2009/05に行われたDelphi Live! 2009のプレゼンテーション資料がダウンロードできるようになっています。

Presentation Download | Delphi Live ! - The Delphi Developer Conference!

元ねたはDelphi.orgのDelphiLive! Presentation Downloads

2009年7月23日

Delphi 7以降で追加された機能について

第13回エンバカデロ・デベロッパーキャンプの「Delphiコーディングスタイル バトルトーク」(A5)セッションのトークの中で、スピーカの方々を含め会場内は意外にDelphi 7以降に追加された機能をあまり知らないような雰囲気でしたが、そのあたりをわかりやすくまとめてあるアーティクルを4つ。

34361: Delphi 7以降の IDEの新機能
34409: Delphi 7以降の言語およびコンパイラの新機能
34342: Delphi 7以降のVCLの新機能
37433: あなたの環境でもきっと役に立つDelphi 7以降の新機能トップ10 - by Pawel Glowacki

Delphiアルゴリズムトレーニング

同じくはやしさん@ITのCoding Edgeフォーラムで連載していた"Delphiアルゴリズムトレーニング"も完結しています。

(1) TListの実装と性能
(2) 単純なキューと循環キュー
(3) AVL木で木構造を学ぼう
(4) もっとAVL木で木構造を学ぼう
(5) RDBMSで使われるB木を学ぼう
(6) B木から要素を削除する方法を学ぼう

Yet another OSS DB:Firebird

Firebird日本ユーザ会はやしさん@ITのDatabase Expertフォーラムで連載していた"Yet another OSS DB:Firebird"が完結しました。

(1) Firebirdのアーキテクチャと特性、歴史
(2) データベースファイルの内部構造を探ってみた
(3) 仕組みを「見える化」してみた
(4) Firebirdの標準関数を極める
(5) 内部関数が足りない? それならUDFだ!
(6) ユーザー定義関数で日付時刻やBLOBを扱う

InterBase/FirebirdのユーザやDelphi/C++Builderでデータベースを扱うプログラマはひととおり読んでおくといいと思います。

C++Builder 2009 ファーストガイド

C++Builder 2009 ファーストガイドが10回に分割されて公開されるようです。

第一回 「C++Builder 2009のインストールと使用許諾」
第二回 「C++Builder2009の起動と終了」
第三回「総合開発環境(IDE)の説明」
第四回「プログラミング手順(前編)」
第五回「プログラミング手順(後編)」
第六回「C++基礎知識(前編)」
第七回「C++基礎知識(後編)」
第八回 「コンポーネント」
第九回「コンポーネントの作成」
第十回「データベースアプリケーションの作成」

第一回で気になった点を2つばかり。
  1. "1.3 インストールに必要なソフトウェア"にあるとおり、Dephi 2009/C++Builder 2009では必要に応じてMicrosoft .NET Framework 2.0、Microsoft JSharp Runtime 2.0、Microsoft .NET 2.0 Japanese Language Pack、Microsoft Data Access Components(MDAC) 2.8、Microsoft Core XML Service(MSXML) 6.0、Microsoft Document Explorer 2008、Microsoft Document Explorer 2008 Language Packがインストールされますが、少なくとも.NET Framework 2.0、MDAC 2.8、MSXML 6.0についてはセキュリティ更新プログラムが存在するはずです。これらのソフトウェアが新規にインストールされたときにはWindowsUpdateMBSAでセキュリティ更新プログラムの適用の必要性を確認するよう、注意を促しておくべきではないでしょうか。

  2. アップデートの確認や適用方法は第二回以降に出てくるのでしょうか…?

2009/07/31追記: 第二回のリンクを追加しました。
2009/08/12追記: 第三回のリンクを追加しました。
2009/08/21追記: 第四回のリンクを追加しました。
2009/09/02追記: 第五回のリンクを追加しました。
2009/09/11追記: 第六回のリンクを追加しました。
2009/09/22追記: 第七回のリンクを追加しました。
2009/10/02追記: 第八回のリンクを追加しました。
2009/10/11追記: 第九回のリンクを追加しました。
2009/10/22追記: 第十回のリンクを追加しました。やっと完結です。

2009年7月16日

第14回エンバカデロ・デベロッパーキャンプ

先日の第13回の懇親会のときの藤井さんの予告のとおり、次回のデベロッパーキャンプは2009年09月02日に大阪で開催です(出張でも重なれば行けるかもしれませんが…)。今回はG2セッションのWeaver (Delphi/C++Builder/RAD Stdio 2010)のプレビュー(by高橋さん)が注目です。

2009年7月15日

1st anniversary

気が付いたら1年経っていました(1週間も気付かなかったのかい)。2008/07/08から2009/07/07までの1年間で168エントリ、平均するとだいたい2日で1エントリといったところですが、最近ちょっとペースが悪いような。

totonica on EDN

totonicaさんによるEDNのTechnical Articleが順次公開中です。

39691: RawByteStringの使い方
39692: 文字列とエレメント
39696: ライブテンプレートの作り方
39697: 暗黙の文字列変換
39698: Quality Centralでのバグレポートのコツ
39699: DCC警告W1050の回避方法
39701: 無名メソッドとスレッド
39704: Delphi 2009におけるグラフィック機能の強化点
39706: 文字列型とオーバーロード

2009/07/21追記: 39691/39692/39697のアーティクルへのリンクを追加しました。
2009/07/22追記: 39701のアーティクルへのリンクを追加しました。
2009/07/24追記: 39704/39706のアーティクルへのリンクを追加しました。
2009/07/28追記: totonicaさんによれば、これで今回は打ち止めだそうです。おつかれさまでした。

Microsoft Monthly Update 2009/07

今日はMicrosoftのセキュリティアップデートの日です。
MS09-028
MS09-029
MS09-030
MS09-031
MS09-032
MS09-033

2009年7月12日

Blogger Syntax Highlighter 1.5.2

Heisencoder: Adding Syntax Highlighting to Bloggerを参考にSyntax Highlighterを組み込みなおしてみました。

2009年7月11日

Delphi 2009/C++Builder 2009 Help Update 3

Delphi 2009/C++Builder 2009のHelp Update 3がリリースされています。英語版についてはHelp Update 2の不具合修正、ドイツ語、フランス語、日本語については英語版Help Update 2の翻訳となっています。

Readme: Help Update 3 for Delphi and C++Builder 2009

元ねたはNick HodgesさんのRandom Thoughts on the Passing Scene #115

2009年7月9日

ファイルをごみ箱経由で削除

ファイルをごみ箱に送る(ごみ箱経由で削除する)にはSHFileOperationSHFILEOPSTRUCTのwFuncにFO_DELETEを指定します。またファイル名はNUL文字で区切って最後にNUL文字を2つ重ねる("double-null terminated string")必要があります。
uses
  Windows, SysUtils, Classes, ShellAPI;

function SHDeleteFiles(const Filename: String; WindowHandle: HWND;
                       AllowUndo: Boolean; FilesOnly: Boolean;
                       NoErrorUI: Boolean; Silent: Boolean): Boolean; overload;
function SHDeleteFiles(Filenames: TStrings; WindowHandle: HWND;
                       AllowUndo: Boolean; FilesOnly: Boolean;
                       NoErrorUI: Boolean; Silent: Boolean): Boolean; overload;

function InternalDeleteFiles(const Filenames: String;
                             WindowHandle: HWND;
                             AllowUndo: Boolean;
                             FilesOnly: Boolean; 
                             NoErrorUI: Boolean;
                             Silent: Boolean): Boolean; forward;

function SHDeleteFiles(const Filename: String; WindowHandle: HWND;
                       AllowUndo: Boolean; FilesOnly: Boolean;
                       NoErrorUI: Boolean; Silent: Boolean): Boolean;
var
  FilenameArray: String;
begin

  FilenameArray := ExpandFileName(Filename) + #0;
  Result := InternalDeleteFiles(FilenameArray,WindowHandle,
                                AllowUndo,FilesOnly,NoErrorUI,Silent);

end;

function SHDeleteFiles(Filenames: TStrings; WindowHandle: HWND;
                       AllowUndo: Boolean; FilesOnly: Boolean; 
                       NoErrorUI: Boolean; Silent: Boolean): Boolean;
var
  Index: Integer;
  FilenameArray: String;
begin

  FilenameArray := '';
  for Index := 0 to Filenames.Count - 1 do
  begin
    FilenameArray := FilenameArray + ExpandFileName(Filenames.Strings[Index]) + #0;
  end;
  FilenameArray := FilenameArray + #0;

  Result := InternalDeleteFiles(FilenameArray,WindowHandle,
                                AllowUndo,FilesOnly,NoErrorUI,Silent);

end;

function InternalDeleteFiles(const Filenames: String;
                             WindowHandle: HWND;
                             AllowUndo: Boolean;
                             FilesOnly: Boolean;
                             NoErrorUI: Boolean; 
                             Silent: Boolean): Boolean;
var
  SHOP: TSHFileOpStruct;
begin

  with SHOP do
  begin
    Wnd := WindowHandle;
    wFunc := FO_DELETE;
    pFrom := PChar(Filenames);
    pTo := nil;
    fFlags := FOF_NOCONFIRMATION;
    if AllowUndo = True then
    begin
      fFlags := fFlags or FOF_ALLOWUNDO;
    end;
    if FilesOnly = True then
    begin
      fFlags := fFlags or FOF_FILESONLY;
    end;
    if NoErrorUI = True then
    begin
      fFlags := fFlags or FOF_NOERRORUI;
    end;
    if Silent = True then
    begin
      fFlags := fFlags or FOF_SILENT;
    end;
    fAnyOperationsAborted := False;
    hNameMappings := nil;
    lpszProgressTitle := nil;
  end;

  Result := (SHFileOperation(SHOP) = 0) and (SHOP.fAnyOperationsAborted = False);

end;

元ねたはDelete files with the ability to UNDO他多数。

2009年7月2日

第13回エンバカデロ・デベロッパーキャンプ終了

スピーカの皆さん、関係者の皆さん、懇親会に参加したみなさん、おつかれさまでした。
今日は山本さん神が降臨した瞬間を見られてよかったです(それが感想かい)。あとペンケースが当たりました。

2009/07/13追記: セッション資料がダウンロードできるようになっています。