home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1987 / 09 / grafik6 / dfread.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1987-07-06  |  2.8 KB  |  88 lines

  1. (*-------------------------------------------------------------------------*)
  2. (*                             DFREAD.PAS                                  *)
  3. (*                  Routine zum Einlesen von Kommandos                     *)
  4. (*              von einer Datei in ein Display-File-Array                  *)
  5.  
  6. (*--------------------------------------------------------------------*)
  7. (* Die folgenden beiden Funktionen zur Konvertierung eines Strings in *)
  8. (* Grossbuchstaben sind in den meisten Pascal-Dialekten schon in der  *)
  9. (*               einen oder anderen Form implementiert.               *)
  10.  
  11. FUNCTION UpCase(c : CHAR) : CHAR;
  12.  
  13. BEGIN
  14.   IF c IN ['a'..'z'] THEN
  15.     UpCase := Chr(Ord(c) - 32) (* Gilt nur fuer ASCII-Zeichensatz ! *)
  16.   ELSE
  17.     UpCase := c;
  18. END;
  19.  
  20.  
  21. PROCEDURE UpStr(VAR Str : tGrafStr);
  22.  
  23. VAR i : INTEGER;
  24.  
  25. BEGIN
  26.   FOR i := 1 TO Length(Str) DO
  27.     Str[i] := UpCase(Str[i]);
  28. END;
  29.  
  30. (*--------------------------------------------------------------------*)
  31. (*      Entfernen von fuehrenden oder nachstehenden Leerzeichen.      *)
  32.  
  33. PROCEDURE DelBlanks(VAR Str : tGrafStr);
  34.  
  35. BEGIN
  36.   WHILE Str[1] = ' ' DO Delete(Str,1,1);
  37.   WHILE Str[Length(Str)] = ' ' DO Delete(Str,Length(Str),1);
  38. END;
  39.  
  40. (*------------------------------------------------------------------*)
  41. (* Einlesen der Kommandodatei. ACHTUNG: Kein Dateifehler-Handling ! *)
  42.  
  43. PROCEDURE DFRead(VAR DFArray : tDFArray; Dateiname : tGrafStr);
  44.  
  45. VAR f : TEXT;
  46.     Line : tGrafStr;
  47.     i : INTEGER;
  48.  
  49. BEGIN
  50.   (* Dateioeffnungsmechanismus muss ggf. an    *)
  51.   (* den verwendeten Dialekt angepasst werden. *)
  52.   Assign(f,Dateiname); ReSet(f);
  53.  
  54.   i := 1;
  55.   REPEAT
  56.     REPEAT
  57.       ReadLn(f,Line);
  58.       UpStr(Line);
  59.       DelBlanks(Line);
  60.     UNTIL (Length(Line) > 0) AND (Line[1] <> '#');
  61.     WITH DFArray[i] DO BEGIN
  62.       next := NIL;
  63.       IF Line = 'LNEW' THEN BEGIN
  64.         Kommando := lnew;
  65.         ReadLn(f,x1,y1,x2,y2);
  66.       END
  67.       ELSE BEGIN
  68.         (* Leider sind Strings als CASE-Selektoren nicht zulaessig, daher: *)
  69.         IF Line = 'PINTW' THEN Kommando := pintw;
  70.         IF Line = 'MVEWR' THEN Kommando := mvewr;
  71.         IF Line = 'LNEWR' THEN Kommando := lnewr;
  72.         IF Line = 'PINTWR' THEN Kommando := pintwr;
  73.         IF Line = 'MVEWA' THEN Kommando := mvewa;
  74.         IF Line = 'LNEWA' THEN Kommando := lnewa;
  75.         IF Line = 'EODF' THEN Kommando := EoDF;
  76.         IF Line <> 'EODF' THEN  ReadLn(f,x,y);
  77.       END;
  78.     END;
  79.     i := Succ(i);
  80.   UNTIL (Line = 'EODF') OR (i > InpFileSize);
  81.   IF (i > InpFileSize) AND (Line <> 'EODF') THEN (* Feld "uebergelaufen" *)
  82.     DFArray[InpFileSize].Kommando := EoDF;
  83.   Close(f);
  84. END;
  85.  
  86. (*-------------------------------------------------------------------------*)
  87. (*                         Ende von DFREAD.PAS                             *)
  88.