procedure TUpdate.FileParse(strFile :
string);
var
Datei: TextFile;
RegEx : TRegExpr;
strZeile :
string;
intCountDownloads, intMaxDownloads : integer;
begin
// standart werte zuweisen
intCountDownloads := 0;
intMaxDownloads := 0;
boolExitLoop := false;
// RegEx Objekt erzeugen und flags setzen
RegEx := TRegExpr.Create;
RegEx.ModifierI := true;
// datei verbindung erzeugen / handle erzeugen
AssignFile(Datei, strFile);
// datei öffnen
Reset(Datei);
// downloads zählen für ProgressBarAll.Max und setzen
while not eof(Datei)
do
begin
ReadLn(Datei, strZeile);
RegEx.Expression := '
^\s*download\s*\".+\"\s*as\s*\".+\"\s*$';
if RegEx.Exec(strZeile)
then
begin
intMaxDownloads := intMaxDownloads+1;
end;
end;
ProgressBarAll.Max := intMaxDownloads;
// Datei erneut öffnen (Zeiger Position auf 1 setzen!?) - unsauber!
Reset(Datei);
// Updatedatei parsen
while (
not eof(Datei))
and (
not boolExitLoop)
do
begin
ReadLn(Datei, strZeile);
// create directory
RegEx.Expression := '
^\s*create\s*directory\s*\"(.+)\"\s*$';
if RegEx.Exec(strZeile)
then
begin
WriteToLog('
Script: Create Dir.: ' + RegEx.Match[1]);
if not DirectoryExists(RegEx.Match[1])
then
begin
CreateDir(RegEx.Match[1]);
end;
end;
// down
RegEx.Expression := '
^\s*down\s*\"(.+)\"\s*as\s*\"(.+)\"\s*$';
if RegEx.Exec(strZeile)
then
begin
WriteToLog('
Script: Download File (Invisible)');
try
HTTPDownloadFile(RegEx.Match[1],RegEx.Match[2]);
except
ShowMessage('
Error: Download File');
end;
end;
// download
RegEx.Expression := '
^\s*download\s*\"(.+)\"\s*as\s*\"(.+)\"\s*$';
if RegEx.Exec(strZeile)
then
begin
WriteToLog('
Script: Download File');
if intMaxDownloads > 0
then
begin
inc(intCountDownloads);
LabelFileNummer.Caption := IntToStr(intCountDownloads) + '
/ ' + IntToStr(intMaxDownloads);
ProgressBarAll.StepIt;
end else begin
LabelFileNummer.Caption := IntToStr(intCountDownloads);
end;
try
HTTPDownloadFile(RegEx.Match[1],RegEx.Match[2]);
except
ShowMessage('
Error: Download File');
end;
end;
// exit
RegEx.Expression := '
^\s*exit\s*$';
if RegEx.Exec(strZeile)
then
begin
WriteToLog('
Script: Exit');
boolExitLoop := true;
break;
end;
// open background xy
RegEx.Expression := '
^\s*set\s*background\s*\"(.+)\"\s*$';
if RegEx.Exec(strZeile)
then
begin
WriteToLog('
Script: Set Backgroundimage: ' + RegEx.Match[1]);
if FileExists(RegEx.Match[1])
then
begin
ImageHead.Picture.LoadFromFile(RegEx.Match[1]);
end;
end;
// open background xy
RegEx.Expression := '
^\s*set\s*visible\s*\"(\d)\"\s*$';
if RegEx.Exec(strZeile)
then
begin
WriteToLog('
Script: Set Form Visible: ' + RegEx.Match[1]);
if StrToInt(RegEx.Match[1]) > 0
then
begin
Self.Visible := true;
end else begin
Self.Visible := false;
end;
end;
// open background xy
RegEx.Expression := '
^\s*show\s*\"(.+)\"\s*as\s*INFO$';
if RegEx.Exec(strZeile)
then
begin
MessageDlg(RegEx.Match[1],mtInformation, [mbOK], 0);
end;
end;
// Datei schließen
CloseFile(Datei);
// Falls Exit beim Parsen aufgerufen worden ist...
if boolExitLoop
then
begin
Self.CleanUpInstance;
// Löscht Temp. Dateien etc
Application.Terminate;
end;
end;