函数结果TStringlist,最佳实践?

时间:2013-10-04 07:26:36

标签: delphi

我想对此问题进行有效编码

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元素,接受字符串和整数值,请参阅Build your own profiler using ADO 。 我的result.addstring不起作用,不会做任何类型的转换,例如。默认字符串,也使用result.add(...)语句

如果没有额外的编码,处理这些数据的最有效方法是什么?

1 个答案:

答案 0 :(得分:2)

这是Delphi 101.您必须先创建一个类的实例才能使用它,而您的代码不会这样做。

您需要先创建Result才能访问它。

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

从函数返回对象实例时,您需要记住,调用代码有责任在之后释放它,因此请确保使用try..finally保护该代码以确保发生避免内存泄漏。

说“不起作用”是完全没有意义的,除非你解释什么“不起作用”的意思。请记住,在这里提问时我们无法看到您的屏幕或阅读您的想法,因此您在撰写问题时需要具体。如果你说“不起作用”,请解释你的意思。如果您说“我收到错误”,请描述错误并提供您收到的完全错误消息(如果有),包括任何内存地址或错误代码。您可以清楚地在您面前获得这些信息,或者您不会知道事情不起作用或者您收到错误。绝对没有理由不在你的问题中提供这些细节。