[Back to NUMBERS SWAG index] [Back to Main SWAG index] [Original]
{
>A>overlooked. No Pascal compiler that I know of (including Turbo) can return
>A>a complex value (i.e., a record or an array) from a FUNCTION. In order for
>
>Hmm...never tried this before. Anyway, the sollution is quite simple:
>just have the megaword-variable public, and pass it to the procedure.
Returning function values by setting a public variable is pretty dangerous -
what if your function calls another that uses the same public to return its
value? In this case, it's not necessary, since there's a trick to let TP
return complex numbers:
}
type
Float = Double;
TComplex = string[2*sizeof(float)];
{ Complex number. Not a true string: the values are stored in binary
format within it. }
TCmplx = record { The internal storage format for TComplex }
len : byte;
r,i : float;
end;
function Re(z:TComplex):float;
begin
Re := TCmplx(z).r;
end;
function Im(z:TComplex):float;
begin
Im := TCmplx(z).i;
end;
function Complex(x,y:float):TComplex;
{ Convert x + iy to complex number. }
var
result : TCmplx;
begin
with result do
begin
len := 2*sizeof(float);
r := x;
i := y;
end;
Complex := TComplex(result);
end;
{You can use these to build up lots of functions returning TComplex types.}
[Back to NUMBERS SWAG index] [Back to Main SWAG index] [Original]