Ver Mensaje Individual
  #1  
Antiguo 08-02-2018
Avatar de geolife
[geolife] geolife is offline
Miembro Premium
 
Registrado: nov 2006
Ubicación: Barcelona
Posts: 87
Reputación: 18
geolife Va por buen camino
Liberación de un TstringList

Hola amig@s,

Me gustaría saber vuestra opinión sobre la forma correcta de asignar un objeto y su liberación; Creo que es una pregunta seguramente muy simple, pero bueno...

En el método 1, al ser una variable local de un procedimiento ¿Se liberarían los recursos si hubiese alguna excepción después de la asignación?, ¿o debemos forzar con el segundo método siempre?

Tenemos la siguiente función que delimita una cadena de texto:

Código Delphi [-]
Function TForm1.DelimitarString(Cadena: String; Delimitador: Char): TStringList;
begin
  Result := TStringList.Create;
  Result.Delimiter := Delimitador;
  Result.StrictDelimiter := True;
  Result.DelimitedText := Cadena;
end;

// Método 1
Procedure TForm1.TratarCadena1;
Var
  St: TStringList;
begin
  St := DelimitarString('Uno;Dos;Tres', ';');
  Showmessage(St[0] + #13 + St[1] + #13 + St[2]);
end;

// Método 2
Procedure TForm1.TratarCadena2;
Var
  St: TStringList;
begin
  St := TStringList.Create;
  Try
    St := DelimitarString('Uno;Dos;Tres', ';');
    Showmessage(St[0] + #13 + St[1] + #13 + St[2]);
  Finally
    St.Free;
  end;
end;
Responder Con Cita