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));