-1

この問題を効果的にコーディングしたい

function ADOConnectionWillExecute( Connection: TADOConnection; var CommandText:      
WideString;
 var CursorType: TCursorType; var LockType: TADOLockType;
 var CommandType: TCommandType; var ExecuteOptions: TExecuteOptions;
 var EventStatus: TEventStatus; const Command: _Command;
 const Recordset: _Recordset) : TStringlist ;

 begin

  result.AddStrings(
  CommandText,
  'Before '+GetEnumName(TypeInfo(TCommandType),Integer(CommandType)),
   GetEnumName(TypeInfo(TEventStatus),Integer(EventStatus)),
   GetEnumName(TypeInfo(TCursorType),Integer(CursorType)),
   GetEnumName(TypeInfo(TADOLockType),Integer(LockType)), 0);
  end;

インターネットからの元のコード ソースでは、すべてのデータが GUI 要素に書き込まれ、文字列と整数値を受け入れます。 ADO を使用して独自のプロファイラーを構築する を参照してください。私のresult.addstringは機能しません。たとえば、型変換を行いません。デフォルトの文字列であり、result.add(...) ステートメントも使用します

余分なコーディングなしでこのデータを処理する最も効果的な方法は何ですか?

4

1 に答える 1

3

これは Delphi 101 です。クラスを使用する前にクラスのインスタンスを作成する必要がありますが、コードでは作成していません。

Resultアクセスする前に作成する必要があります。

Result := TStringList.Create;
Result.AddStrings(....);

関数からオブジェクト インスタンスを返すときは、後でそれを解放するのは呼び出し元のコードの責任であることを覚えておく必要がありますtry..finally。そのため、メモリ リークを回避するためにそのコードを保護するようにしてください。

「うまくいかない」というのは、「うまくいかない」の意味を説明しない限り、まったく意味がありません。ここで質問するときは、私たちがあなたの画面を見たり、あなたの心を読んだりすることはできないので、質問を書くときは具体的にする必要があることを覚えておいてください. 「うまくいかない」と言う場合は、その言葉の意味を説明してください。「エラーが発生しました」と言う場合は、エラーについて説明し、発生している正確なエラー メッセージ (存在する場合) を、メモリ アドレスやエラー コードを含めて提供してください。その情報が目の前にあることは明らかです。さもなければ、物事が機能していないことや、エラーが発生していることに気付かないでしょう。質問でこれらの詳細を提供しない理由はまったくありません。

于 2013-10-04T11:29:00.230 に答える