Buenos días ^^
Hace unos días hice la típica unit de principiante con un record y una serie de funciones y procedures ya que la POO aún me da algo de respeto y de momento solo me aclaré de forma elemental con el uso de objetos ya creados.
La cuestión es que me he decidido a convertir esa unit en una unit para almacenar un objeto (hace semanas lo intenté y acabé desistiendo y opté por aplazarlo para seguir leyendo y practicando las bases.)
Así que aquí les traigo el objeto en si
Código Delphi
[-]
Type
TComplejo = class
Re,
Img,
Modulo,
ArgumentoGrados,
ArgumentoRadianes:Extended;
N:LongInt; SolucionesRaizN:TFPObjectList;
Constructor NuevoNumero;
Procedure CalcularPolar;
Procedure CalcularRectangular;
Function Suma(a,b:TComplejo);
Function Resta(a,b:TComplejo);
Function Multiplica(a,b:TComplejo);
Function Divide(a,b:TComplejo);
Function Ln(a:TComplejo); overload;
Function Eleva(a,b:TComplejo);
Function RaizN(a:TComplejo;b:LongInt);
Suponiendo que el código completo de la unit esté correcto (no me ha dado ningun error de compilación) y esperando que no haya sorpresas (que las habrá seguro xD) cuando empiece a llamar al objeto por primera vez desde un form, les pego aquí la parte que me dio la duda (pongo la function completa para contextualizar, el problema está señalado con '//' espero se entienda bien :S):
Código Delphi
[-]
Function TComplejo.RaizN;
Var
i:LongInt;
z:=TComplejo;
Begin
If N<0 then
Begin
z:=TComplejo.NuevoNumero;
ListaSoluciones:=TFPObjectList.Create;
ListaSoluciones.Add(z);
z.free;
end
else If N=1 then
Begin
z:=TComplejo.NuevoNumero;
z:= ; ListaSoluciones:=TFPObjectList.Create;
ListaSoluciones.Add(z);
z.free;
end
else
ListaSoluciones:=TFPObjectList.Create;
For i:=1 to N do
Begin
z:=TComplejo.NuevoNumero;
z.Modulo:=Power(Modulo,1/N);
z.ArgumentoRadianes:=(2*Pi*(i))/N;
z.ArgumentoGrados:=RadToDeg(z.ArgumentoRadianes);
CalcularRectangular(z);
ListaSoluciones.Add(z);
z.free;
end;
end;
Un saludo y mil gracias por su tiempo