Renegade-1.19/SOURCE/RGQUOTE.PAS

103 lines
2.3 KiB
Plaintext

{$IFDEF WIN32}
{$I DEFINES.INC}
{$ENDIF}
PROGRAM RGQUOTE;
USES
Crt,
Dos;
TYPE
StrPointerRec = RECORD
Pointer,
TextSize: LongInt;
END;
VAR
RGStrFile: FILE;
StrPointerFile: FILE OF StrPointerRec;
StrPointer: StrPointerRec;
F: Text;
S: STRING;
RGStrNum: LongInt;
Done,Found: Boolean;
FUNCTION AllCaps(S: STRING): STRING;
VAR
I: Integer;
BEGIN
FOR I := 1 TO Length(S) DO
IF (S[I] IN ['a'..'z']) THEN
S[I] := Chr(Ord(S[I]) - Ord('a')+Ord('A'));
AllCaps := S;
END;
FUNCTION Exist(FN: STRING): Boolean;
VAR
DirInfo: SearchRec;
BEGIN
FindFirst(FN,AnyFile,DirInfo);
Exist := (DosError = 0);
end;
BEGIN
CLrScr;
WriteLn('Renegade Quote String Compiler Version 1.0');
Writeln('Copyright 2006 - The Renegade Developement Team');
WriteLn;
IF (ParamCount < 1) THEN
Writeln(^G^G^G'Please specify a file name!')
ELSE IF (Pos('.',ParamStr(1)) = 0) THEN
WriteLn(^G^G^G'Please Specify a valid file name (Example: "Name.Ext")')
ELSE IF (Length(ParamStr(1)) > 12) THEN
Writeln(^G^G^G'The file name must not be longer then twelve characters!')
ELSE IF (NOT Exist(ParamStr(1))) THEN
WriteLn(^G^G^G'That file name was not found!')
ELSE
BEGIN
S := ParamStr(1);
Write('Compiling strings ... ');
Found := TRUE;
Assign(StrPointerFile,Copy(S,1,(Pos('.',S) - 1))+'.PTR');
ReWrite(StrPointerFile);
Assign(RGStrFile,Copy(S,1,(Pos('.',S) - 1))+'.DAT');
ReWrite(RGStrFile,1);
Assign(F,ParamStr(1));
Reset(F);
WHILE NOT EOF(F) DO
BEGIN
ReadLn(F,S);
IF (S <> '') AND (S[1] = '$') THEN
BEGIN
Delete(S,1,1);
S := AllCaps(S);
Done := FALSE;
WITH StrPointer DO
BEGIN
Pointer := (FileSize(RGStrFile) + 1);
TextSize := 0;
END;
Seek(RGStrFile,FileSize(RGStrFile));
WHILE NOT EOF(F) AND (NOT Done) DO
BEGIN
ReadLn(F,S);
IF (S[1] = '$') THEN
Done := TRUE
ELSE
BEGIN
Inc(StrPointer.TextSize,(Length(S) + 1));
BlockWrite(RGStrFile,S,(Length(S) + 1));
END;
END;
Seek(StrPointerFile,FileSize(StrPointerFile));
Write(StrPointerFile,StrPointer);
END;
END;
Close(F);
Close(RGStrFile);
Close(StrPointerFile);
WriteLn('Done!')
END;
END.