home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / pascal / library / dos / tp_util / addtext.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1990-06-19  |  2.0 KB  |  81 lines

  1.  
  2. PROGRAM ADDTEXT;
  3. {
  4.   Paul Schubert, Rottweiler Str. 8, 6000 Frankfurt 1, 069 / 231145
  5. }
  6.  
  7. CONST CR  : BYTE = 13;
  8.       LF  : BYTE = 10;
  9.  
  10.  
  11. VAR   I,NBL,NBB      : WORD;
  12.       L              : LONGINT;
  13.       B,B1           : BYTE;
  14.       F1             : FILE OF BYTE;
  15.       F2             : TEXT;
  16.       NAM1,NAM2,LIN  : STRING;
  17.  
  18.  
  19. PROCEDURE ERROR(NR:BYTE);
  20. BEGIN
  21.   CASE NR OF
  22.     1 : WRITELN('***** File ',NAM1,' nicht gefunden *****');
  23.     2 : WRITELN('***** File ',NAM2,' nicht gefunden *****');
  24.     3 : WRITELN('***** File ',NAM1,' ist kein EXE- File *****');
  25.     4 : WRITELN('***** Lesefehler File ',NAM1,' *****');
  26.     5 : WRITELN('***** Lesefehler File ',NAM2,' *****');
  27.     6 : WRITELN('***** Schreibfehler File ',NAM1,' *****');
  28.   END; { CASE NR OF }
  29.   HALT(1);
  30. END; { ERROR }
  31.  
  32.  
  33. BEGIN
  34.   IF PARAMCOUNT < 2 THEN BEGIN
  35.     WRITELN;
  36.     WRITELN('  ADDTEXT FILE1.EXE FILE2  hängt das Textfile FILE2 an das EXE- File');
  37.     WRITELN('  FILE1 an.  .EXE muß nicht angegeben werden,');
  38.     HALT;
  39.   END;
  40.  
  41.   NAM1 := PARAMSTR(1);
  42.   IF POS('.',NAM1) = 0 THEN NAM1 := NAM1 + '.EXE';
  43.   NAM2 := PARAMSTR(2);
  44.   WRITELN(' Anhängen des Textfiles ',NAM2,' an das File ',NAM1);
  45.  
  46. {$I-}
  47.   ASSIGN(F1,NAM1);
  48.   RESET(F1);
  49.   IF IORESULT <> 0 THEN ERROR(1);
  50.   ASSIGN(F2,NAM2);
  51.   RESET(F2);
  52.   IF IORESULT <> 0 THEN ERROR(2);
  53.  
  54.   READ(F1,B,B1); { EXE - ID }
  55.   IF IORESULT <> 0 THEN ERROR(4);
  56.   IF (B <> $4D) OR (B1 <> $5A) THEN ERROR(3);
  57.   READ(F1,B,B1); { BYTES IM LETZTEN BLOCK }
  58.   IF IORESULT <> 0 THEN ERROR(4);
  59.   NBL := B + (B1 SHL 8);
  60.   READ(F1,B,B1); { 512- BYTE- BLOCKS }
  61.   IF IORESULT <> 0 THEN ERROR(4);
  62.   NBB := B + (B1 SHL 8);
  63.   L := NBB; L := L * 512;
  64.   L := L - (512 - NBL);
  65.   WRITELN('  EXE- File- Größe = ',L);
  66.   SEEK(F1,L);
  67.  
  68.   WHILE NOT EOF(F2) DO BEGIN
  69.     READLN(F2,LIN);
  70.     IF IORESULT <> 0 THEN ERROR(5);
  71.     FOR I := 1 TO LENGTH(LIN) DO WRITE(F1,BYTE(LIN[I]));
  72.     WRITE(F1,CR,LF);
  73.     IF IORESULT <> 0 THEN ERROR(6);
  74.   END; { WHILE }
  75.  
  76.   CLOSE(F2);
  77.   CLOSE(F1);
  78. END.
  79.  
  80.  
  81.