Ver Mensaje Individual
  #6  
Antiguo 12-11-2008
Avatar de DarkMan
DarkMan DarkMan is offline
Miembro
 
Registrado: jul 2006
Posts: 102
Reputación: 18
DarkMan Va por buen camino
TStringList es una clase TObject, la variable no contiene la clase en sí, sino su referencia. Esto quiere decir que es un puntero a la dirección de memoria en la que se contiene ese objeto.

En esa función lo que haces es devolver el puntero a una dirección de memoria que contiene el objeto que tu has destruido en la misma función, por ello te salta el error. En todo caso, si deseas seguir con esa sintaxis debería ser así el código:
Código Delphi [-]
function TForm1.GetStrings:TStrings;
var
  miLista: TStrings;
begin
  miLista := TStringList.Create;
  miLista.Add('uno');
  miLista.Add('dos');
  Result := miLista;
{  FreeAndNil(MiLista); // Esta linea da un error EAccessViolation}
end;
procedure TForm1.Button1Click(Sender: TObject);
var MiLista: TStrings;
begin
 MiLista:= GetStrings;  
 memo1.Lines.Assign(MiLista);
 FreeAndNil(MiLista);
 {Ahora ya has liberado el objeto creado en la función anterior}
end;
__________________
"La recompensa de una buena acción está en haberla hecho"
Responder Con Cita