私はDelphi 7のデバッガをあきらめ、かなりの出力デバッグストリングに頼っています。ブレークポイントを設定すると、デバッガのような文字列としてオブジェクトの内容を取得するために呼び出すことができる標準の関数はありますか?DelphiにPHPのVardumpのような機能はありますか?
答えて
RTTIを使用して、さまざまな公開プロパティーの値にアクセスできます。魔法のルーチンは、TypInfoユニットにあります。あなたが最も興味を持っているのは、オブジェクトのプロパティのリストを返すGetPropListと、プロパティの値を取得できるGetPropValueです。
procedure TForm1.DumpObject(YourObjectInstance : tObject);
var
PropList: PPropList;
PropCnt: integer;
iX: integer;
vValue: Variant;
sValue: String;
begin
PropCnt := GetPropList(YourObjectInstance,PropList);
for iX := 0 to PropCnt-1 do
begin
vValue := GetPropValue(YourObjectInstance,PropList[ix].Name,True);
sValue := VarToStr(vValue);
Memo1.Lines.Add(PropList[ix].Name+' = '+sValue);
end;
end;
例えば、メインフォームのボタンのクリックでDumpObject(セルフ)でこれを実行し、それがメモに現在のフォームのすべてのプロパティをダンプします。これは公開されたプロパティのみであり、メインクラスはTPersistentから降りる必要があり、ORはオブジェクトの前で{$ M +}をオンにしてコンパイルされました。
デルファイの将来のバージョン(おそらく2010年)では「リフレクター」のような能力が利用できるという噂があります。
デルファイ7が.NET版の場合は、リフレクションを使用してその一部を行うことができます。 (簡単ではないが、ひどく難しくない)。コンパイルされたものであれば、それは難しい問題です。デバッガは、特殊な印刷機能/メソッドを別にして、最良の方法です。
Delphi 7の.Net版は、コマンドラインのみの「プレビューコンパイラ」だけでした。これは、「Delphi 7」について話すときに決して意味をなさないものです。 –
もっと完全なトレースソリューションであるCodesiteのようなものを考えてみましょう。これにより、はるかに複雑な情報を出力し、データを検索、印刷、分析することができます。しかし、あなたの目的のために、Codesite.Send( 'Before'、self)を使用してオブジェクトを送信することができます。ログ内のすべてのRTTI利用可能なプロパティを取得します。 「After」も実行し、両方を選択するだけでコードサイト出力の2つを比較できます。それは何度も私を救ってくれました。
- 1. このvardump機能は機能しますか?
- 2. PHPでは、stristrのような機能はありますか?
- 3. PHPにはruby gem bundlerのような機能がありますか?
- 4. strerrorのような機能はカーネル内にありますか?
- 5. データベースのようなarraylist機能はありますか?
- 6. REPLACEのような機能はありますか?
- 7. [My] SQLにプリプロセッサのような機能がありますか?
- 8. JFuncのような.NETに機能テストフレームワークがありますか
- 9. vimやxstringのautohotkeyのようなホットストリング機能のようなリーダーキー機能はありますか?
- 10. .NETにはDelphiのVCLコンポーネントモデルと同等の機能がありますか?
- 11. WordPressの機能は別のPHPファイルにありますか?
- 12. KituraのApacheにDirectoryIndexのような機能はありますか?
- 13. Visual StudioにはEmacsのような機能がありますか?
- 14. Facebook APIにはどのような機能がありますか?
- 15. Azure Stream AnalyticsにはGETDATE()やCURRENT_TIMESTAMPのような機能がありますか?
- 16. GWT(Google Web Toolkit)にはjquery-select2のような機能がありますか?
- 17. APIにはどのようなバックエンド機能がありますか?
- 18. SonarLintにはFxCopのようなカスタム辞書機能がありますか?
- 19. BigQueryにはどのようなOLAP機能がありますか?
- 20. TypeScriptにはKotlinのような拡張機能がありますか?
- 21. Android Maps Api V2にonFirstFixメソッドのような機能はありますか?
- 22. 機能にはどのような種類がありますか?
- 23. PHPにはPythonのテンプレート文字列のような機能がありますか?
- 24. Swiftの拡張機能のような他の言語はありますか?
- 25. は、私はこのようになりますPHPの機能を持っている何かのPHP
- 26. PHPの "imagettfbbox()"はどのように機能しますか?
- 27. 赤はRebolのようなオープンな機能はありませんか?
- 28. Delphi 2006 - XEには新しい並列プログラミング機能がありますか?
- 29. SQL Server 2005のTRY/CATCHブロックのようなMySQL機能はありますか?
- 30. Intellij IdeaのサブライムでCtrl + Dのような機能はありますか?
私は、CodeGearの人々が「うわさ」の能力について話したDelphi Liveの会議セッションにいました。彼らは明示的にRTTIはもっと多くなるだろうが、.NET Reflectorのように、アプリケーションを逆コンパイルしたり、オブジェクトの構造をリバースエンジニアリングするのに十分な情報がない。 –