home *** CD-ROM | disk | FTP | other *** search
- (* ------------------------------------------------- *)
- (* INTO_EXE.PAS *)
- (* Unit zum Schreiben von Parametern in EXE-Dateien *)
- (* Compiler: Turbo Pascal ab 4.0 *)
- (* ------------------------------------------------- *)
- (* (c) 1991 Uwe Pöschl & DMV-Verlag *)
- (* ------------------------------------------------- *)
- UNIT Into_Exe;
-
- INTERFACE
-
- USES Dos, Crt;
-
- TYPE
- Speicher = RECORD
- Eintrag : STRING [16];
- (* nun werden die zu sichernden *)
- (* Parameter deklariert *)
- Color : BYTE; (* Beispiel *)
- END;
- CONST
- Kennung = 'Programm-Kennung';
-
- (* -----
- Hier folgen nun die Deklarationen der Variablen
- des Programms, die gespeichert werden sollen *)
-
- VAR
- Farbe : BYTE; (* Beispiel *)
-
- PROCEDURE Lesen;
- PROCEDURE Schreiben;
-
- IMPLEMENTATION
-
- PROCEDURE Lesen;
- VAR
- Par : Speicher;
- Datei : FILE;
- BEGIN
- IF (Lo(DosVersion) < 3) THEN Exit;
- Assign(Datei, ParamStr(0));
- {$I-}
- Reset(Datei, 1);
- {$I+}
- IF IOResult <> 0 THEN BEGIN
- WriteLn('Init-Daten nicht lesbar');
- Exit;
- END;
- Seek(Datei, FileSize(Datei)-SizeOf(Par));
- {$I-}
- BlockRead(Datei, Par, SizeOf(Par));
- {$I+}
- IF IOResult <> 0 THEN BEGIN
- WriteLn('Init-Daten nicht lesbar');
- Exit;
- END;
- IF (Par.Eintrag <> Kennung) THEN BEGIN
- FillChar(Par, SizeOf(Par), 0);
- Par.Eintrag := Kennung;
- {$I-}
- BlockWrite(Datei, Par, SizeOf(Par));
- {$I+}
- IF IOResult <> 0 THEN BEGIN
- Write('Init-Daten nicht gesichert');
- Exit;
- END ELSE
- Close(Datei);
- END ELSE BEGIN
- (* nun weden alle Variablen vom letzten
- Aufruf ausgelesen *)
- Farbe := Par.Color; (* Beispiel *)
- END;
- END;
-
- PROCEDURE Schreiben;
- VAR
- Par : Speicher;
- Datei : FILE;
- BEGIN
- IF (Lo(DosVersion) < 3) THEN Exit;
- Assign(Datei, ParamStr(0));
- {$I-}
- Reset(Datei, 1);
- {$I+}
- IF IOResult <> 0 THEN BEGIN
- WriteLn('Init-Daten nicht gesichert');
- Exit;
- END;
- Seek(Datei, FileSize(Datei)-SizeOf(Par));
- {$I-}
- BlockRead(Datei, Par, SizeOf(Par));
- {$I+}
- IF IOResult <> 0 THEN BEGIN
- WriteLn('Init-Daten nicht gesichert');
- Exit;
- END;
- IF (Par.Eintrag <> Kennung) THEN BEGIN
- WriteLn('Init-Daten nicht lesbar');
- Close(Datei);
- Exit;
- END ELSE BEGIN
- (* nun werden die Variablen gesichert *)
- Par.Color := Farbe; (* Beispiel *)
- Seek(Datei, FileSize(Datei) - SizeOf(Par));
- {$I-}
- BlockWrite(Datei, Par, SizeOf(Par));
- {$I+}
- IF IOResult <> 0 THEN
- Write('Init-Daten nicht gesichert');
- Close(Datei);
- END;
- END;
-
- BEGIN
- (* hier werden nun alle verwendeten
- Variablen initialisiert *)
- Farbe := 5; (* Beispiel *)
- END.
- (* ------------------------------------------------- *)
- (* Ende von INTO_EXE.PAS *)
-
-