home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Turbo Toolbox
/
Turbo_Toolbox.iso
/
readme
/
makerd.pas
< prev
next >
Wrap
Pascal/Delphi Source File
|
1994-03-03
|
7KB
|
180 lines
(* ====================================================== *)
(* 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 *)