相关疑难解决方法(0)

为什么使用过程来创建优先于函数的对象?

这与此问题类似.我问"为什么?" 以最流行的反应,但我不知道任何人会永远看着它一次.至少不是及时的.

无论如何,我的问题是关于将对象创建的责任委托给函数或过程的最佳实践,而不会导致内存泄漏.看来这个:

procedure FillObject(MyObject: TMyObject; SomeParam: Integer);
begin
  //Database operations to fill object
end;

procedure CallUsingProcedure();
var
  MyObject: TMyObject;
begin
  MyObject = TMyObject.Create();
  try
    FillObject(MyObject, 1);
    //use object
  finally
    MyObject.Free();
  end;
end;
Run Code Online (Sandbox Code Playgroud)

比这更受欢迎:

function CreateMyObject(DBID: Integer): TMyObject;
begin
  Result := TMyObject.Create();
  try
    //Database operations to fill object
  except on E: Exception do
    begin
      Result.Free();
      raise;
    end;
  end;
end;

procedure CallUsingFunction();
var
  MyObject: TMyObject;
begin
  MyObject = CreateMyObject(1);
  try
    //use object
  finally
    MyObject.Free();
  end;
end;
Run Code Online (Sandbox Code Playgroud)

为什么? …

delphi

16
推荐指数
3
解决办法
846
查看次数

为什么在明显"安全"的代码中使用异常处理?

请问,有人可以解释一下,在这段代码中会出现什么异常?

function CreateBibleNames: TStrings;
begin
  Result := TStringList.Create;
  try
    Result.Add('Adam');
    Result.Add('Eva');
    Result.Add('Kain');
    Result.Add('Abel');
  except
    Result.Free;
    raise;
  end;      
end;
Run Code Online (Sandbox Code Playgroud)

因为我使用delphi,所以我曾经使用过一次异常处理.我认为上面的代码是由熟练的程序员编写的,我不认为异常是多余的.但是,在这个概念中使用异常处理对我来说仍然是一个谜.它似乎是一个安全的代码(没有尝试除了结束).我已经多次看到类似这样的代码片段,这就是为什么尽管有我的经验,这可能是一个很好的理由以这种方式编写,但这并不是必要的.

此外,当事情失败时,我会得到异常描述......

感谢名单

delphi try-except

6
推荐指数
3
解决办法
747
查看次数

如何在函数之间传递对象?

假设我有一个功能:

function someFunction: TStringList;  
begin  
  result:=TStringList.Create;  
  if someConditionIsTrue then  
    result:=doSomething;  
  //other code  
end; 
Run Code Online (Sandbox Code Playgroud)

功能doSomething:

function doSomething: TStringList;
begin
  result:=TStringList.Create;
  result.Add(something);
end;
Run Code Online (Sandbox Code Playgroud)

如果我运行这个代码,一切都按预期工作,但我仍然想知道这是否是传递像stringlist这样的对象的"正确"方法?

字符串列表永远不会被释放,我想知道在调试或其他人试图理解代码时,以这种方式传递对象会变得复杂或混乱.

delphi object lazarus

-1
推荐指数
2
解决办法
203
查看次数

标签 统计

delphi ×3

lazarus ×1

object ×1

try-except ×1