home *** CD-ROM | disk | FTP | other *** search
- (*-------------------------------------------------------------------------*)
- (* DFREAD.PAS *)
- (* Routine zum Einlesen von Kommandos *)
- (* von einer Datei in ein Display-File-Array *)
-
- (*--------------------------------------------------------------------*)
- (* Die folgenden beiden Funktionen zur Konvertierung eines Strings in *)
- (* Grossbuchstaben sind in den meisten Pascal-Dialekten schon in der *)
- (* einen oder anderen Form implementiert. *)
-
- FUNCTION UpCase(c : CHAR) : CHAR;
-
- BEGIN
- IF c IN ['a'..'z'] THEN
- UpCase := Chr(Ord(c) - 32) (* Gilt nur fuer ASCII-Zeichensatz ! *)
- ELSE
- UpCase := c;
- END;
-
-
- PROCEDURE UpStr(VAR Str : tGrafStr);
-
- VAR i : INTEGER;
-
- BEGIN
- FOR i := 1 TO Length(Str) DO
- Str[i] := UpCase(Str[i]);
- END;
-
- (*--------------------------------------------------------------------*)
- (* Entfernen von fuehrenden oder nachstehenden Leerzeichen. *)
-
- PROCEDURE DelBlanks(VAR Str : tGrafStr);
-
- BEGIN
- WHILE Str[1] = ' ' DO Delete(Str,1,1);
- WHILE Str[Length(Str)] = ' ' DO Delete(Str,Length(Str),1);
- END;
-
- (*------------------------------------------------------------------*)
- (* Einlesen der Kommandodatei. ACHTUNG: Kein Dateifehler-Handling ! *)
-
- PROCEDURE DFRead(VAR DFArray : tDFArray; Dateiname : tGrafStr);
-
- VAR f : TEXT;
- Line : tGrafStr;
- i : INTEGER;
-
- BEGIN
- (* Dateioeffnungsmechanismus muss ggf. an *)
- (* den verwendeten Dialekt angepasst werden. *)
- Assign(f,Dateiname); ReSet(f);
-
- i := 1;
- REPEAT
- REPEAT
- ReadLn(f,Line);
- UpStr(Line);
- DelBlanks(Line);
- UNTIL (Length(Line) > 0) AND (Line[1] <> '#');
- WITH DFArray[i] DO BEGIN
- next := NIL;
- IF Line = 'LNEW' THEN BEGIN
- Kommando := lnew;
- ReadLn(f,x1,y1,x2,y2);
- END
- ELSE BEGIN
- (* Leider sind Strings als CASE-Selektoren nicht zulaessig, daher: *)
- IF Line = 'PINTW' THEN Kommando := pintw;
- IF Line = 'MVEWR' THEN Kommando := mvewr;
- IF Line = 'LNEWR' THEN Kommando := lnewr;
- IF Line = 'PINTWR' THEN Kommando := pintwr;
- IF Line = 'MVEWA' THEN Kommando := mvewa;
- IF Line = 'LNEWA' THEN Kommando := lnewa;
- IF Line = 'EODF' THEN Kommando := EoDF;
- IF Line <> 'EODF' THEN ReadLn(f,x,y);
- END;
- END;
- i := Succ(i);
- UNTIL (Line = 'EODF') OR (i > InpFileSize);
- IF (i > InpFileSize) AND (Line <> 'EODF') THEN (* Feld "uebergelaufen" *)
- DFArray[InpFileSize].Kommando := EoDF;
- Close(f);
- END;
-
- (*-------------------------------------------------------------------------*)
- (* Ende von DFREAD.PAS *)
-