home *** CD-ROM | disk | FTP | other *** search
- (* ====================================================== *)
- (* MAKERD.PAS v2.0 *)
- (* (C) 1994 J. Braun & toolbox *)
- (* ------------------------------------------------------ *)
- (* Erzeugt die Datei READTEXT.PAS für README.PAS. Die *)
- (* Quelldatei muß auf der Kommandozeile angegeben werden *)
- (* und darf nicht größer als 63 KBytes sein, da die typi- *)
- (* sierten Konstanten sonst die Segmentgrenze der Unit *)
- (* überschreiten! *)
- (* Die Zeile für die Headline kann per DOS-Umleitung aus *)
- (* einer Datei gelesen werden (bspw. via < HEADLINE.TXT) *)
- (* ====================================================== *)
- {$A+,B-,D-,E-,F-,G+,I-,L-,N-,P-,Q-,R-,S+,T-,V+,X+,Y-}
- {$M 16384,0,655360}
- {$IFNDEF Ver70} ERROR: Falsche Compilerversion! {$ENDIF}
-
- PROGRAM MakeReadMeUnit;
-
- USES
- Dos, Strings;
-
- {$I LINES.INC}
-
- VAR
- t : Text; (* Textdatei *)
- pLineA : ARRAY[1..5000] OF pChar;(* Zeilenmaximum *)
- j : INTEGER; (* Laufvariable *)
- SrcLines : INTEGER; (* Quellzeilen *)
- InfoLine : STRING; (* Infozeile *)
- Tmp1, Tmp2 : STRING; (* Interimsstrings *)
- sr : SearchRec; (* für FindFirst *)
-
- (* -------------------------------------------------------*)
-
- PROCEDURE ErrOut;
- BEGIN
- WriteLn('Quelldatei »', ParamStr(1),
- '« konnte nicht geöffnet werden!');
- ExitCode := 30;
- END;
-
- (* -------------------------------------------------------*)
-
- BEGIN
- ExitCode := 0;
- {$IFDEF DPMI}
- WriteLn('Make ReadText.Pas v.2.0/P');
- {$ELSE}
- WriteLn('Make ReadText.Pas v.2.0');
- {$ENDIF}
- IF ParamCount < 1 THEN BEGIN
- WriteLn;
- WriteLn('Die Quelldatei muß mit Pfad und Endung auf');
- WriteLn('der DOS-Kommandozeile angegeben werden. Die');
- WriteLn('Zieldatei erhält automatisch den Namen');
- WriteLn('READTEXT.PAS.'^M^J);
- ExitCode := 10;
- END ELSE BEGIN
- IF (Pos('?', ParamStr(1)) > 0) OR
- (Pos('*', ParamStr(1)) > 0) THEN
- BEGIN
- WriteLn('WildCards sind nicht erlaubt! '
- + 'Programm wird abgebrochen.');
- ExitCode := 20;
- END ELSE BEGIN
- FindFirst(ParamStr(1), Archive + ReadOnly, sr);
- IF DosError = 0 THEN BEGIN
- Assign(t, ParamStr(1));
- IF IOResult = 0 THEN BEGIN
- Reset(t);
- SrcLines := 0;
-
- WHILE NOT EoF(t) DO BEGIN
- Inc(SrcLines);
- ReadLn(t, Tmp1);
- GetMem(pLineA[SrcLines], 255);
- (* --> maximale Stringlänge! *)
- StrPCopy(pLineA[SrcLines], Tmp1);
- (* ' -> '' *)
- IF Pos(#39, Tmp1) > 0 THEN BEGIN
- (* Bugfix jb / 23.2.94: *)
- (* Aus allen(!) »'« ein »''« machen *)
- Tmp2 := '';
- FOR j := 1 TO Length(Tmp1) DO BEGIN
- Tmp2 := Tmp2 + Tmp1[j];
- IF Tmp1[j] = #39 THEN Tmp2 := Tmp2 + #39;
- END;
- Tmp1 := Tmp2;
- StrPCopy(pLineA[SrcLines], Tmp1);
- END;
-
- (* Tab -> ' ' *)
- IF Pos(^I, Tmp1) > 0 THEN BEGIN
- Tmp2 := '';
- FOR j := 1 TO Length(Tmp1) DO BEGIN
- IF Tmp1[j] = ^I THEN
- Tmp2 := Tmp2 + ' '
- ELSE
- Tmp2 := Tmp2 + Tmp1[j];
- END;
- Tmp1 := Tmp2;
- StrPCopy(pLineA[SrcLines], Tmp1);
- END;
- END; (* WHILE NOT EoF(t) *)
- Close(t);
-
- Assign(t, 'READTEXT.PAS');
- Rewrite(t);
-
- WriteLn('Bitte den Namen für den Header eingeben',
- ' (nur eine Zeile!), mit [Enter]'^M^J,
- 'abschließen');
- Write('--> ');
- ReadLn(InfoLine);
- WriteLn;
- IF Pos(#39, InfoLine) > 0 THEN
- IF Pos(#39#39, InfoLine) = 0 THEN BEGIN
- Tmp2 := '';
- FOR j := 1 TO Length(InfoLine) DO BEGIN
- Tmp2 := Tmp2 + InfoLine[j];
- IF InfoLine[j] = #39 THEN
- Tmp2 := Tmp2 + #39;
- END;
- InfoLine := Tmp2;
- END;
-
- WriteLn(t, '(* =================================='
- + '============='
- + '==================== *)');
- WriteLn(t, '(* READTEXT.PAS für RE'
- +'ADME.PAS *)');
- WriteLn(t, '(* erzeugt von '
- + 'MAKE-RD '
- + ' *)');
- WriteLn(t, '(* ================================='
- + '=============='
- + '==================== *)');
- WriteLn(t, '{$A+,B-,D-,E-,F-,G-,I-,L-,N-,P-,Q-,'+
- 'R-,S-,T-,V+,X+,Y-}'^M^J^M^J);
- WriteLn(t, 'UNIT ReadText;');
- WriteLn(t, 'INTERFACE');
- WriteLn(t, 'CONST'^M^J);
- WriteLn(t, ' InfoLine : STRING[80] = ''',
- InfoLine, ''';');
- WriteLn(t, ' NumOfLines = ', SrcLines +
- ScreenLines, ';'^M^J);
- WriteLn(t, ' README_TEXT : ARRAY[1..NumOfLines] '
- + 'OF pChar =(');
-
- FOR j := 1 TO SrcLines DO
- IF Length(StrPas(pLineA[j])) > 0 THEN
- WriteLn(t, ' ''', StrPas(pLineA[j]),'''^@,')
- ELSE
- WriteLn(t, ' ^@,');
- Write(t, ' ');
- FOR j := 1 TO ScreenLines - 13 DO
- Write(t, '^@, ');
- Write(t, ^M^J' ^@, ^@, ^@, ^@, ^@, ^@, ^@, ');
- WriteLn(t, '^@, ^@, ^@, ^@, ^@, ^@);'^M^J);
- WriteLn(t, 'IMPLEMENTATION'^M^J'END.'^M^J);
- WriteLn(t, '(* ================================'
- + '==============='
- + '==================== *)'^M^J);
- Close(t);
-
- WriteLn('»READTEXT.PAS« aus der Datei »',
- FExpand(ParamStr(1)), '« erzeugt.');
- WriteLn(SrcLines,
- ' Quellzeilen wurden umgewandelt.'^J^M);
- END ELSE ErrOut;
- END ELSE ErrOut;
- END;
- END;
- Halt(ExitCode);
- END.
-
- (* ====================================================== *)
- (* Ende von MAKERD.PAS *)
-
-