Cita:
Empezado por dec
como ocurre en el otro caso, mas, ¿no es ya la "EAccessViolation" un tipo de excepción? Lo dicho, algo se me escapa en este asunto. Acaso es mejor una que otra excepción... lo ignoro ahora mismo. Una cosa está clara: son distintas excepciones.
|
Aplicando directamente el molde, no siempre obtendrás un EAccessViolation. Podrías simplemente sobreescribir la memoria, y luego el programa tronaría sin saber por que.
No tengo delphi a mano, pero se me ocurre que podes comprobarlo de manera sencilla (por favor, corregí vos por mi los errores de sintaxis que pudiera haber:
Código Delphi
[-]
type
TClase1 = class
private
FNumero: Integer;
public
property Numero: Integer read FNumero write FNumero;
end;
TClase2 = class
private
FLineas: TStringList;
procedure SetLineas(const Value: TStringList);
public
constructor Create;
property Lineas: TStringList read FLineas write SetLineas;
end;
implementation
constructor TClase2.Create;
begin
FLineas := TStringList.Create;
end;
procedure TClase2.SetLineas(const Value: TStringList);
begin
if Assigned(Value) then
FLineas.Assign(Value)
else
FLineas.Clear;
end;
Código Delphi
[-]
procedure TForm1.MezclarTodo;
var
Instancia1: TClase1;
Instancia2: TClase2;
begin
Instancia1 := TClase1.Create;
Instancia2 := TClase2.Create;
Instancia1.Numero := 1500;
Instancia2.Lineas.Add('Prueba');
TClase1(Instancia2).Numero := 50;
Instancia2.Lineas.Add('Esto truena!');
end;
Espero que funcione como yo lo espero
, si no, ya veremos cuando tenga un delphi a mano.
Hasta luego.