Strange EListError occurance (when accessing variable-defined index)
- by michal
Hi,
I have a TList which stores some objects. Now I have a function which does some operations on that list:
function SomeFunct(const AIndex: integer): IInterface
begin
if (AIndex > -1) and (AIndex < fMgr.Windows.Count ) then
begin
if (fMgr.Windows[AIndex] <> nil) then
begin
if not Supports(TForm(fMgr.Windows[AIndex]), IMyFormInterface, result) then
result:= nil;
end;
end
else
result:= nil;
end;
now, what is really strange is that accessing fMgr.Windows with any proper index causes EListError... However if i hard-code it (in example, replace AIndex with value 0 or 1) it works fine.
I tried debugging it, the function gets called twice, with arguments 0 and 1 (as supposed).
while AIndex = 0, evaluating fMgr.Windows[AIndex] results in EListError at $someAddress, while evaluating fMgr.Windws[0] instead - returns proper results ...
what is even more strange, even though there is an EListError, the function returns proper data ... and doesn't show anything. Just info on two EListError memory leaks on shutdown (using FastMM)
any ideas what could be wrong?!
Thanks in advance
michal