home *** CD-ROM | disk | FTP | other *** search
- MODULE TestArray;
-
- (*-------------------------------------------------------------------*
- * Programm zum Testen dynamischer Arrays des Moduls DynArrayHandler *
- *-------------------------------------------------------------------*)
-
- (*$C+*) (* Setze Variablen bei Deklaration auf 0 *)
- (*$A+*) (* Quick Subroutine Calls *)
-
- FROM Debugger IMPORT stop, Error, InitDebugger, Activate,
- Into, Leaving, Message, ShowByte, ShowWord, ShowLong;
- FROM Streams IMPORT Stream, StreamKinds, OpenStream, CloseStream;
- FROM TextIO IMPORT ReadString, ReadCard, ReadReal,
- WriteCard, WriteReal, WriteString, WriteLn;
- FROM VT52 IMPORT ClearHome, WrapOn;
-
- FROM DynArrayHandler IMPORT DynArray, DefDynArray, DeleteDynArray,
- Get, Put, LastIndex, ElementSize,
- LoadDynArray, SaveDynArray;
-
- CONST DEBUG = FALSE;
-
- TYPE
- Typ1 = RECORD
- r1,r2: REAL;
- c1,c2: CARDINAL;
- END;
-
- Typ2 = RECORD
- part1: Typ1;
- card : CARDINAL;
- END;
-
- VAR
- t1 : Typ1;
- t2 : Typ2;
- s : ARRAY[0..1000] OF CHAR;
- a1,a2: DynArray;
- out : Stream;
- reply: INTEGER;
- i : CARDINAL;
-
-
- PROCEDURE ShowArray (dyn: DynArray);
- VAR i : CARDINAL;
- t1: Typ1;
-
- BEGIN
- IF DEBUG THEN Into ('ShowArray') END;
- ClearHome;
- WriteString ('Das Array hat folgende Werte:'); WriteLn;
-
- FOR i:=0 TO LastIndex (a1) DO
- Get (a1,i, t1);
- WITH t1 DO
- WriteString ('Index = ');
- WriteCard (i,3);
- WriteString (': ');
- WriteReal (r1,10,5); WriteReal (r2,10,5); WriteString (' | ');
- WriteCard (c1,8); WriteCard (c2,8); WriteLn;
- END;
- END;
- IF DEBUG THEN Leaving ('ShowArray') END;
- END ShowArray;
-
-
- BEGIN (* TestArray *)
- InitDebugger ('TESTARRAY.BUG');
-
- (* Initialisierung der Records *)
- WITH t1 DO r1:=9.0; r2:=11.0; c1:=0; c2:=1; END;
- WITH t2 DO part1:=t1; card:=9; END;
-
- (* Definition der dynamischen Arrays *)
- DefDynArray (a1, t1);
- DefDynArray (a2, t2);
-
- ClearHome; WrapOn;
- WriteString ('*** Testprogramm für dynamische Arrays ***');
- WriteLn; WriteLn;
-
- (* Test: ElementSize *)
- WriteString ('ElementSize von t1 = ');
- WriteCard ( ElementSize(a1), 5); WriteLn;
-
- (* Eingabe von Werten in a1 *)
- REPEAT
- WriteLn;
- WriteString ('Eingabe von Werten in ein dynamisches Array:'); WriteLn;
- WriteString ('Index ( Ende der Eingabe: Index>30 ): ');
- ReadCard (i); WriteLn;
- WITH t1 DO
- WriteString ('REALZAHL 1: '); ReadReal (r1); WriteLn;
- WriteString ('REALZAHL 2: '); ReadReal (r2); WriteLn;
- WriteString ('CARDINAL 1: '); ReadCard (c1); WriteLn;
- WriteString ('CARDINAL 2: '); ReadCard (c2); WriteLn;
- END;
- Put (a1, i, t1);
- ShowArray (a1);
- UNTIL LastIndex(a1)>30;
-
- (* Erzeugen der Fehlermeldung: Nicht initialisiertes Array *)
- DeleteDynArray (a2); (* Erst löschen, sonst Run-Time-Error Nr. 8 *)
- Get (a2, 0, t2);
-
- (* Erzeugen der Fehlermeldung: Array Element inkompatible *)
- Get (a1, 0, t2);
-
- (* Erzeugen der Fehlermeldung: Array Index out of Bounds *)
- Get (a1, 999, t1);
-
- (* Erzeugen der Fehlermeldung: Array Element too large *)
- DefDynArray (a2, s);
-
- WriteString ('Speichern eines dynamischen Arrays ...'); WriteLn;
- OpenStream (out,'DYNARRAY.OUT', READWRITE, reply);
- IF reply<>0 THEN Error (reply); HALT END;
- SaveDynArray (out, a1, t1); CloseStream (out, reply);
- IF reply<>0 THEN Error (reply); HALT END;
-
- WriteString ('Laden eines dynamischen Arrays ...'); WriteLn;
- WITH t1 DO r1:=0.0; r2:=1.0; c1:=1; c2:=0; END;
- OpenStream (out,'DYNARRAY.OUT', READ, reply);
- IF reply<>0 THEN Error (reply); HALT END;
- LoadDynArray (out, a2, t1); CloseStream (out, reply);
- IF reply<>0 THEN Error (reply); HALT END;
- ShowArray (a2);
-
- (* Array löschen *)
- DeleteDynArray (a1); DeleteDynArray (a2);
- END TestArray.
-
-