home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / extra18 / pastrick / exepatch / into_exe.pas next >
Encoding:
Pascal/Delphi Source File  |  1991-12-17  |  3.1 KB  |  123 lines

  1. (* ------------------------------------------------- *)
  2. (*                 INTO_EXE.PAS                      *)
  3. (*  Unit zum Schreiben von Parametern in EXE-Dateien *)
  4. (*  Compiler: Turbo Pascal ab 4.0                    *)
  5. (* ------------------------------------------------- *)
  6. (*         (c) 1991 Uwe Pöschl & DMV-Verlag          *)
  7. (* ------------------------------------------------- *)
  8. UNIT Into_Exe;
  9.  
  10. INTERFACE
  11.  
  12. USES Dos, Crt;
  13.  
  14. TYPE
  15.   Speicher = RECORD
  16.                Eintrag : STRING [16];
  17.                    (* nun werden die zu sichernden  *)
  18.                    (* Parameter deklariert          *)
  19.                Color   : BYTE;           (* Beispiel *)
  20.              END;
  21. CONST
  22.   Kennung = 'Programm-Kennung';
  23.  
  24. (* -----
  25.   Hier folgen nun die Deklarationen der Variablen
  26.   des Programms, die gespeichert werden sollen       *)
  27.  
  28. VAR
  29.   Farbe : BYTE;                          (* Beispiel *)
  30.  
  31.   PROCEDURE Lesen;
  32.   PROCEDURE Schreiben;
  33.  
  34. IMPLEMENTATION
  35.  
  36.   PROCEDURE Lesen;
  37.   VAR
  38.     Par   : Speicher;
  39.     Datei : FILE;
  40.   BEGIN
  41.     IF (Lo(DosVersion) < 3) THEN Exit;
  42.     Assign(Datei, ParamStr(0));
  43.   {$I-}
  44.     Reset(Datei, 1);
  45.   {$I+}
  46.     IF IOResult <> 0 THEN BEGIN
  47.       WriteLn('Init-Daten nicht lesbar');
  48.       Exit;
  49.     END;
  50.     Seek(Datei, FileSize(Datei)-SizeOf(Par));
  51.   {$I-}
  52.      BlockRead(Datei, Par, SizeOf(Par));
  53.   {$I+}
  54.     IF IOResult <> 0 THEN BEGIN
  55.       WriteLn('Init-Daten nicht lesbar');
  56.       Exit;
  57.     END;
  58.     IF (Par.Eintrag <> Kennung) THEN BEGIN
  59.       FillChar(Par, SizeOf(Par), 0);
  60.       Par.Eintrag := Kennung;
  61.     {$I-}
  62.       BlockWrite(Datei, Par, SizeOf(Par));
  63.     {$I+}
  64.       IF IOResult <> 0 THEN BEGIN
  65.         Write('Init-Daten nicht gesichert');
  66.         Exit;
  67.       END ELSE
  68.         Close(Datei);
  69.     END ELSE BEGIN
  70.       (* nun weden alle Variablen vom letzten
  71.          Aufruf ausgelesen *)
  72.       Farbe := Par.Color;  (* Beispiel *)
  73.     END;
  74.   END;
  75.  
  76.   PROCEDURE Schreiben;
  77.   VAR
  78.     Par   : Speicher;
  79.     Datei : FILE;
  80.   BEGIN
  81.     IF (Lo(DosVersion) < 3) THEN Exit;
  82.     Assign(Datei, ParamStr(0));
  83.   {$I-}
  84.     Reset(Datei, 1);
  85.   {$I+}
  86.     IF IOResult <> 0 THEN BEGIN
  87.       WriteLn('Init-Daten nicht gesichert');
  88.       Exit;
  89.     END;
  90.     Seek(Datei, FileSize(Datei)-SizeOf(Par));
  91.   {$I-}
  92.     BlockRead(Datei, Par, SizeOf(Par));
  93.   {$I+}
  94.     IF IOResult <> 0 THEN BEGIN
  95.       WriteLn('Init-Daten nicht gesichert');
  96.       Exit;
  97.     END;
  98.     IF (Par.Eintrag <> Kennung) THEN BEGIN
  99.       WriteLn('Init-Daten nicht lesbar');
  100.       Close(Datei);
  101.       Exit;
  102.     END ELSE BEGIN
  103.       (* nun werden die Variablen gesichert *)
  104.       Par.Color := Farbe;  (* Beispiel *)
  105.       Seek(Datei, FileSize(Datei) - SizeOf(Par));
  106.     {$I-}
  107.       BlockWrite(Datei, Par, SizeOf(Par));
  108.     {$I+}
  109.       IF IOResult <> 0 THEN
  110.         Write('Init-Daten nicht gesichert');
  111.       Close(Datei);
  112.     END;
  113.   END;
  114.  
  115. BEGIN
  116.   (* hier werden nun alle verwendeten
  117.      Variablen initialisiert *)
  118.   Farbe := 5;                            (* Beispiel *)
  119. END.
  120. (* ------------------------------------------------- *)
  121. (*             Ende von INTO_EXE.PAS                 *)
  122.  
  123.