Delphi2005 メモページ - Delphi 2005

2004-11-05: 作成
追記
□ エンタープライズ志向、チーム開発、リリース管理、リソース管理などを重要視~
メモ
□ キーワード Maximized Productivity
□ キーワード 個々の個人の生産性、チーム全体の生産性、この両方にフォーカス
□ キーワード スピードとクオリティ(高品質)
□ ECOは(いーこ)と読む
□ MSWordのように、間違っている部分を波線で表示(ErrorInsite)
□ 2004年12月15日までにC++ BuilderをガリレオIDEに統合するかどうするか決める
□ Delphi 2005 は12月6日出荷
□ (インライン)アセンブラはSSE3 に対応 (MMX SSE SSE2 3DNow 含む)
□ .NETアセンブリから、PInvokeでDLLの関数のロードが簡単にできる(?)(逆も可?)
□ DataHub DataSync を使うことで、コードの記述をせず複数のデータベースに同時に接続できる.UMLからObjectSpaceの作成、その他、永続化の設定などをする. ObjectSpaceは一時的なもので外部データベースで永続化する.構築後もUMLの変更に対応して構成が変更される.~
□ DataHub DataSync はRemoteConnectを使うことで、ネットワークケーブルを使ったデータベースアクセスがコードの記述なしで簡単にできる. これは、XMLを使ったプロトコル、またはTCP/IPが選択可能(?)
□ IDEのスタートページはRSSリーダーになっておりカスタマイズ可能.自組織のRSSを拾うことも可.
□ コードスニペット(Code Snippet) 選択してAlt+DragDropで登録可能.(Ctrl+J?)
□ デザインタイムパッケージがキャッシュ化されたため、起動が少しだけ速くなった.(最初にアイコンとタイトルだけを読み込み、フォームに貼り付けた時点で、実体を読む)
□ 構文解析モジュールが導入され、リファクタリングエンジン、エラーインサイトで使われる.
□ .NETでいうコレクション型でなくてもFor in do は利用可、for c in 'Hello Japan' do (c:char)なども可能.多次元配列 Stringも利用できる.

□ クラスの場合は enumratorメソッドを定義すればfor in do に対応できる.
□ GetEnumratorメソッドのの戻り値に MovenextとCurrentを持つインターフェイスかクラスを返すものを定義する. とfor in do に対応できる.(.NET frameworkのコレクション定義と同様) ←(よくわからないので、あとで確認)
□ 選択して Ctrl+'/' で行頭に'//'コメントを選択行に挿入できる.(トグルでコメント、コメント解除が切り替わる)
□ 変数名の書き換えには、SyncEditとリファクタリングツールの2つの方法を提供する.
□ 選択して Shift + Crrl + J かSyncEditボタンでSyncEditモードに入る.
□ SyncEditは単純なテキスト置換のため、if DEFで実行されない部分やコメント内の文字も書き換わる.(コード記述に使うことを前提としている)
□ 一方リファクタリングツールでは、実行されないifdefブロックやコメント内部は書き換わらない.これは構文を解析しているためである. またすべてのユニットを解析するため、ユニット間でまたがる変数でも対応できる.(メンテナンスで利用することを想定している)
□ 変更履歴は w_historyフォルダに格納、未圧縮.(エンジンはTeamSourceがベース) StarTeam CVSを使うことなく、履歴のDiffなどを取得できる.
□ helpinsite コード補完時や、カーソルがメソッドなどの上に来たときなどに、そのコードのヘルプを表示する. .NET Framework のメソッドは.NET Framework SDKのヘルプのXMLドキュメントから表示内容を抽出.XMLがない場合は、コンパイラ(モジュール)が最適なものを提供し、表示する.
□ 関数のインラインに対応.Windows API MakeWordなどのマクロをインライン化してある(Windows.pas)
□ 関数ジャンプによりアドレスが変わると、現代的なCPU(P3,P4)ではパイプラインのFlushがあるため速度が落ちる. インライン展開することで実行時のパフォーマンスを向上させることができる.(インライン展開されるので、サイズは少し大きくなる)
□ 今までのDelphiでは、interfaceが変わるとdcuファイルを再コンパイルしていた.dcuにはオブジェクトファイルと、 プリコンパイルヘッダがセットになっている.がinlineを導入するとinplementation部に変更があっても再コンパイルが必要になる.(このため (コンパイラ周辺を)大きく変更した)(リンク時のObj収集のディスクアクセスに時間がかかる).また、TurboPascalのインラインとは違う(interface部にバイナリを埋め込むタイプではない)
□ 今回のインライン関数の実装では、相互参照のユニットではinlineは有効にならない.また、レジスタの使い方などに若干無駄がある、 これは、今後の改良のポイントになる.今回はあくまでも最初のステップということでの実装である.
□ .NETコンパイラはバグとりがメイン
□ VCLに関してもバグ取りがメイン、VCLは成熟したライブラリであり下位互換性を持たせることが重要であるため. (QualityCentralにあがったバグレポートのバグを取った)
□ .NETコンパイラはバグとりがメイン
□ RTLはP3 P4に最適化した部分がある.(CompareText FillChar関数など _LLDIV(64ビット割り算))FastCodeプロジェクトから コードを導入、ボトルネックになる関数を高速化、Pentium P2などでもそれほど遅くならないアルゴリズムを採用.
□ inline RTLの改良により、最もよいケースで20%パフォーマンスがアップ、ただし、最もよいケースでの場合である.
□ .NET Compact Frameworkに対応している.ただしUIデザイナーはまだ無い.
□ デバッガ:ブレークポイントのDisable化切り替え
□ デバッガ:LogMessage Unicodeのサポート
□ デバッガ:Naitive Win32 と .NET Assembly の切り替え
□ デバッガ:MMXレジスタ mm0 - mm7 の内容も表示
□ Delphi 7 アプリケーションは Delphi2005のWin32VCLにそのまま移行できる.
□ Delphi 5 6 では少しエラーが出るかもしれないが指示に従って修正すれば問題ない.
□ TFont の初期値が MSPゴシック:9pt(英語版 MS Sans Serif8pt) から Tahoma:8pt に変更.微妙にずれるかもしれない.
□ 海外アプリと同じメトリックになったので、海外製アプリでフォームの端が切れたり、文字化けはしなくなる.
□ .dprファイルは .dbsproject に .bpgファイルは .bdsgroupになる.ともにXML形式で、マルチパーソナリティに対応.
□ ただし.dprファイルも生成される、これはコンパイラが読むため.外部ツールで.dprをいじるようなことをしている場合は、 .bdsprojectと同期を取るようにする必要がある.~ OpenToolsAPIを使っている場合はそのままで問題ない.
□ OpenToolsAPIは今までのものが使える.新しいIDEに対応したものも用意してある.OpenToolsAPIのメソッドの末尾にバージョン番号が ついているのでそれを見てもらうとわかる. (xxxxxx70 など)
□ .dprファイルをDelphi2005で開くと Win32VCLアプリケーションにするか、VCL.NETアプリケーションへ移行するかを問い合わせるダイアログが出るので、 簡単にコンバートできる.(次からは .bdsprojectを開く) 手動で移行する場合には、アセンブリ情報や、Referenceなどを手で追加すれば VCLWin32アプリをVCL.NETにできる.
□ Pointerやメモリバッファを使っている場合には、アプリケーションごとに修正が必要.この場合はDelphi7などで、 「危険なコード」のワーニングが出なくなくなるまで修正をしてから、Delphi2005に持っていくのが一番楽だろう.

著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
最終更新日: 2014-04-02
作成日: 2005-01-01
iPentec all rights reserverd.