Also take the time to check out the Player Report!
PHP Code:
[ =============================== ]
[ Extremely Long Test Script 1.00 ]
[ by Rasta Magician ]
[ =============================== ]
[ Fishies: 123 ]
[ Location: Falador ]
[ Active: False ]
[ =============================== ]
[ Extremely Long Test Script 1.00 ]
[ =============================== ]
SCAR Code:
const
ResultDebugBox = 0;
ResultReportBox = 1;
ResultString = 2;
Function SRLProgressReport(ResultType:integer; ScriptName, ScriptAuthor, ScriptVersion: String;
VarNames: TStringArray; VarValues: TVariantArray ): Variant;
var
TSA : TStringArray;
s : string;
i, i2 : integer;
begin
if length(VarNames) <> Length(VarValues) then
begin
SRL_Warn('SRLProgressReport', 'VarNames and VarValues must be the same length', warn_AllVersions);
exit;
end;
SetLength(TSA, 3 + Length(VarNames) + 4);
TSA[0] := '=';
TSA[1] := Capitalize(ScriptName)+' '+ScriptVersion;
TSA[2] := 'by '+ScriptAuthor;
TSA[3] := '=';
i2 := 3 + Length(VarNames);
for i:= 4 to i2 do
begin
s := VarValues[i-4];
TSA[i] := Capitalize(VarNames[i-4])+': '+ Capitalize(s);
end;
TSA[i2+1] := '=';
TSA[i2+2] := Capitalize(ScriptName)+' '+ScriptVersion;
TSA[i2+3] := '=';
i2 := 0;
for i:= 0 to High(TSA) do
i2 := Max(i2, Length(TSA[i]));
TSA[0] := Replicate('=', i2);
TSA[3] := TSA[0];
TSA[High(TSA)-2] := TSA[0];
TSA[High(TSA)] := TSA[0];
TSA[2] := Replicate(' ', round((i2 - Length(TSA[2]))/2) ) + TSA[2]; //centering by ScriptAuthor
for i:= 0 to High(TSA) do
case ResultType of
ResultDebugBox : writeln ('[ '+Padr(TSA[i], i2)+' ]');
ResultReportBox : AddToReport ('[ '+Padr(TSA[i], i2)+' ]');
ResultString : Result := Result + '[ '+Padr(TSA[i], i2)+' ]' + chr(13);
else SRL_Warn('SRLProgressReport', 'Invalid Result Type', warn_AllVersions);
end;
if not ResultType = ResultString then Result := true;
{
[ ========================= ]
[ ScriptName ScriptVersion ]
[ by ScriptAuthor ]
[ ========================= ]
[ VarName[0] : VarValues[0] ]
[ VarName[1] : VarValues[1] ]
[ VarName[2] : VarValues[2] ]
[ VarName[3] : VarValues[3] ]
[ VarName[4] : VarValues[4] ]
[ ========================= ]
[ ScriptName ScriptVersion ]
[ ========================= ]
}
end;
if you wish to test for yourself
SCAR Code:
program new;
{.include srl/srl.scar}
const
ResultDebugBox = 0;
ResultReportBox = 1;
ResultString = 2;
Function SRLProgressReport(ResultType:integer; ScriptName, ScriptAuthor, ScriptVersion: String;
VarNames: TStringArray; VarValues: TVariantArray ): Variant;
var
TSA : TStringArray;
s : string;
i, i2 : integer;
begin
if length(VarNames) <> Length(VarValues) then
begin
SRL_Warn('SRLProgressReport', 'VarNames and VarValues must be the same length', warn_AllVersions);
exit;
end;
SetLength(TSA, 3 + Length(VarNames) + 4);
TSA[0] := '=';
TSA[1] := Capitalize(ScriptName)+' '+ScriptVersion;
TSA[2] := 'by '+ScriptAuthor;
TSA[3] := '=';
i2 := 3 + Length(VarNames);
for i:= 4 to i2 do
begin
s := VarValues[i-4];
TSA[i] := Capitalize(VarNames[i-4])+': '+ Capitalize(s);
end;
TSA[i2+1] := '=';
TSA[i2+2] := Capitalize(ScriptName)+' '+ScriptVersion;
TSA[i2+3] := '=';
i2 := 0;
for i:= 0 to High(TSA) do
i2 := Max(i2, Length(TSA[i]));
TSA[0] := Replicate('=', i2);
TSA[3] := TSA[0];
TSA[High(TSA)-2] := TSA[0];
TSA[High(TSA)] := TSA[0];
TSA[2] := Replicate(' ', round((i2 - Length(TSA[2]))/2) ) + TSA[2]; //centering by ScriptAuthor
for i:= 0 to High(TSA) do
case ResultType of
ResultDebugBox : writeln ('[ '+Padr(TSA[i], i2)+' ]');
ResultReportBox : AddToReport ('[ '+Padr(TSA[i], i2)+' ]');
ResultString : Result := Result + '[ '+Padr(TSA[i], i2)+' ]' + chr(13);
else SRL_Warn('SRLProgressReport', 'Invalid Result Type', warn_AllVersions);
end;
if not ResultType = ResultString then Result := true;
{
[ ========================= ]
[ ScriptName ScriptVersion ]
[ by ScriptAuthor ]
[ ========================= ]
[ VarName[0] : VarValues[0] ]
[ VarName[1] : VarValues[1] ]
[ VarName[2] : VarValues[2] ]
[ VarName[3] : VarValues[3] ]
[ VarName[4] : VarValues[4] ]
[ ========================= ]
[ ScriptName ScriptVersion ]
[ ========================= ]
}
end;
begin
ClearDebug;
SRLProgressReport(ResultDebugBox, 'Extremely long test script', 'Rasta Magician', '1.00', ['Fishies', 'location', 'active'], [123, 'falador', false]);
end.
so what do you guys think?
This idea is not originally mine, but i guess i just decided to do it and post.
~RM