07.09.2014, 20:45
Code:
PROGRAM InstallMod;
{
DESCRIPTION: Replaces strings in the specified file
AUTHOR: Alexander Shostak (aka Berserker aka EtherniDee aka BerSoft)
}
USES SysUtils, Utils, Lists, Files, DlgMes, CmdApp;
CONST
MODS_DIR = 'Mods';
DEFAULT_MODLIST_FILEPATH = MODS_DIR + '\list.txt';
PROCEDURE Install (CONST NewModName: STRING);
VAR
{O} ModList: Lists.TStringList;
{O} FileList: Lists.TStringList;
ModListText: STRING;
ModName: STRING;
ModInd: INTEGER;
i: INTEGER;
BEGIN
FileList := Lists.NewSimpleStrList;
ModList := Lists.NewSimpleStrList;
// * * * * * //
ModList.CaseInsensitive := TRUE;
Files.ReadFileContents(DEFAULT_MODLIST_FILEPATH, ModListText);
FileList.LoadFromText(ModListText, #13#10);
FileList.Add(NewModName);
FOR i := FileList.Count - 1 DOWNTO 0 DO BEGIN
ModName :=
SysUtils.ExcludeTrailingBackslash(
SysUtils.ExtractFileName(
SysUtils.Trim(FileList[i])
));
IF (ModName <> '') AND NOT ModList.Find(ModName, ModInd) THEN BEGIN
ModList.Insert(ModName, 0);
END; // .IF
END; // .FOR
Files.WriteFileContents(ModList.ToText(#13#10), DEFAULT_MODLIST_FILEPATH);
// * * * * * //
SysUtils.FreeAndNil(FileList);
SysUtils.FreeAndNil(ModList);
END; // .PROCEDURE Install
FUNCTION Run: BOOLEAN;
VAR
Error: STRING;
BEGIN
RESULT := TRUE;
IF CmdApp.ArgsList.Count = 0 THEN BEGIN
DlgMes.Msg('Program.exe [ModPath]');
END // .IF
ELSE BEGIN
RESULT := CmdApp.ArgsList.Count = 1;
IF NOT RESULT THEN BEGIN
Error := 'Invalid number of parameters. Run program without parameters for help.';
END // .IF
ELSE BEGIN
Install(CmdApp.ArgsList[0]);
END; // .ELSE
END; // .ELSE
IF NOT RESULT THEN BEGIN
DlgMes.MsgError(Error);
END; // .IF
END; // .FUNCTION Run
BEGIN
Run;
END.