SRL Archive - SRL Archives

Symbol.Scar


JuKKa

2008-03-11 12:10:42

Due to the new T2DPointArray, FindSymbols gets a runtime error (out of range or something)

Fix:

procedure FindSymbols(var AnsTPA: array of TPoint; SymbolName: string);
var
tmpAOTPA: T2DPointArray;
pAOTPA, tmpAL, tx, ty: Integer;
begin
getsymbolcolor(tx, ty, SymbolName);
FindColorsTolerance(AnsTPA, getcolor(tx, ty), mmx1, mmy1, mmx2, mmy2, 0);
tmpAOTPA := SplitTPAEx(AnsTPA, 10, 5);
tmpAL := getarraylength(tmpAOTPA);
setarraylength(AnsTPA, tmpAL);
for pAOTPA := 0 to tmpAL - 1 do
AnsTPA[pAOTPA] := MiddleTPA(tmpAOTPA[pAOTPA]);
end;

n3ss3s

2008-03-11 12:17:41

tmpAL - 1


Use High(tmpAl).

Wizzup?

2008-03-11 12:23:19

This is the current (Developer's SRL #2035) FindSymbols:

{*******************************************************************************
procedure FindSymbols(var AnsTPA: array of TPoint; SymbolName: string);
By: Boreas
Description: Finds a symbol in mutiple places.
*******************************************************************************}

procedure FindSymbols(var AnsTPA: array of TPoint; SymbolName: string);
var
tmpAOTPA: T2DPointArray;
pAOTPA, tmpAL, tx, ty: Integer;
begin
getsymbolcolor(tx, ty, SymbolName);
FindColorsTolerance(AnsTPA, getcolor(tx, ty), mmx1, mmy1, mmx2, mmy2, 0);
tmpAOTPA := TPAtoATPA(AnsTPA, 10);
tmpAL := getarraylength(tmpAOTPA);
setarraylength(AnsTPA, tmpAL);
for pAOTPA := 0 to tmpAL - 1 do
AnsTPA[pAOTPA] := MiddleTPA(tmpAOTPA[pAOTPA]);
end;

However, in SRL Revision #14 FindSymbols does not use T2DPointArray yet.
This will be fixed with the next Public release, Revision #15.

N3ss3s: The GetArrayLength and tmpAL - 1 is actually Boreas' code. ;)

Thank you, JuKKa. :)

Fixed and Closed.