Download Dokumentation KCPASCAL

Transcript
Prozeduren und Funktionen
68
begin
for I:=1 to Length(LineToEncode) do
LineToEncode[I]:=Chr(Ord(LineToEncode[I])-30);
end;
begin
Line1:='This is a secret message';
Encode(Line1);
Line2:='Here is another (longer) secret message';
Encode(Line2);
end.
16.1.2 Nicht-typisierte Variablenparameter
Wenn der Typ des formalen Parameters nicht definiert ist, d.h., die
Typendefinition in dem Parameterteil des Unterprogrammkopfes nicht
aufgelistet ist, dann wird dieser Parameter nichttypisiert genannt.
Deshalb kann der entsprechende aktuelle Parameter beliebigen Typs sein.
Der untypisierte, formale Parameter selbst ist nicht kompatibel mit den
anderen Typen, und er kann deshalb nur dann benutzt werden, wenn der
Datentyp keine Rolle spielt, z.B. als Parameter zu Addr, BlockRead/Write,
FillChar oder Move, oder als die Adressenspezifikation einer absoluten
Variablen.
Die SwitchVar-Prozedur im folgenden Beispiel demonstriert den Gebrauch
von nichttypisierten Parametern. Es wird der Inhalt von A1 nach A2 und
der Inhalt von A2 nach A1 bewegt.
procedure SwitchVar(Var A1p,A2p,Size:Integer);
type
A = array 1..MaxInt of Byte;
Var
A1:A absolute A1p;
A2:A absolute A2p;
Tmp:Byte;
Count:Integer;
begin
for Count = 1 to Size do
begin
Tmp:= A1[Count];
A1[Count]:= A2[Count];
A2[Count]:= Tmp;
end;
end.
Angenommen die Angaben lauten:
type
Matrix = array[1..50,1..25] of Real;
Var
TestMatrix,BestMatrix:Matrix;
dann kann man SwitchVar verwenden, um die Werte zwischen den beiden
Matrizen zu vertauschen:
SwitchVar(TestMatrix,BestMatrix,SizeOf(Matrix));