Untyped Parameters

You can omit type specifications when declaring var, const, and out parameters. (Value parameters must be typed.) For example, procedure TakeAnything(const C);

declares a procedure called TakeAnything that accepts a parameter of any type. When you call such a routine, you cannot pass it a numeral or untyped numeric constant.

Within a procedure or function body, untyped parameters are incompatible with every type. To operate on an untyped parameter, you must cast it. In general, the compiler cannot verify that operations on untyped parameters are valid.

The following example uses untyped parameters in a function called Equal that compares a specified number of bytes of any two variables.

function Equal(var Source, Dest; Size: Integer): Boolean; type

while (N < Size) and (TBytes(Dest)[N] = TBytes(Source)[N]) do Inc(N);

end;

Given the declarations type

TVector = array[1..10] of Integer; TPoint = record X, Y: Integer; end; var

you could make the following calls to Equal:

Equal(Vec1, Vec2, SizeOf(TVector)); // compare Vec1 to Vec2

Equal(Vec1, Vec2, SizeOf(Integer) * N); // compare first N elements of Vec1 and Vec2

Equal(Vec1[1], Vec1[6], SizeOf(Integer) * 5); // compare first 5 to last 5 elements of Vec1

Equal(Vec1[1], P, 4); // compare Vec1[1] to P.X and Vec1

Project Management Made Easy

Project Management Made Easy

What you need to know about… Project Management Made Easy! Project management consists of more than just a large building project and can encompass small projects as well. No matter what the size of your project, you need to have some sort of project management. How you manage your project has everything to do with its outcome.

Get My Free Ebook


Post a comment