From ecf7b634a1f9eb1848d131f23b46a22738d84a9a Mon Sep 17 00:00:00 2001 From: wp_xxyyzz Date: Tue, 7 Jun 2016 22:52:16 +0000 Subject: [PATCH] tvplanit: Fix exception raised when demo program ends (by using up-to-date access to TList). git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@4688 8e941d3f-bd1b-0410-a28a-d453659cc2b4 --- components/tvplanit/source/vpbaseds.pas | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/components/tvplanit/source/vpbaseds.pas b/components/tvplanit/source/vpbaseds.pas index f41ad81bd..9ec7cf825 100644 --- a/components/tvplanit/source/vpbaseds.pas +++ b/components/tvplanit/source/vpbaseds.pas @@ -1227,8 +1227,10 @@ procedure TVpControlLink.ReleaseDependents; var I : Integer; begin - for I := 0 to pred(DependentList.Count) do - Detach(TVpDependentInfo(DependentList.List^[I]).Component); + for I := pred(DependentList.Count) downto 0 do + Detach(TVpDependentInfo(DependentList[i]).Component); +// for I := 0 to pred(DependentList.Count) do +// Detach(TVpDependentInfo(DependentList.List^[I]).Component); end; {=====} @@ -1238,9 +1240,11 @@ var begin try for I := 0 to pred(DependentList.Count) do - if TVpDependentInfo(DependentList.List^[I]).Component = Sender then +// if TVpDependentInfo(DependentList.List^[I]).Component = Sender then + if TVpDependentInfo(DependentList[I]).Component = Sender then begin - TVpDependentInfo(DependentList.List^[I]).Free; +// TVpDependentInfo(DependentList.List^[I]).Free; + TVpDependentInfo(DependentList[I]).Free; DependentList.Delete(I); if Sender is TVpLinkableControl then TVpLinkableControl(Sender).ControlLink := nil; @@ -1260,7 +1264,8 @@ var begin Exists := false; for I := 0 to pred(DependentList.Count) do - if TVpDependentInfo(DependentList.List^[I]).Component = Sender then begin +// if TVpDependentInfo(DependentList.List^[I]).Component = Sender then begin + if TVpDependentInfo(DependentList[I]).Component = Sender then begin Exists := true; Break; end; @@ -1293,7 +1298,8 @@ var I : Integer; begin for I := 0 to pred(DependentList.Count) do begin - with TVpDependentInfo(DependentList.List^[I]) do begin +// with TVpDependentInfo(DependentList.List^[I]) do begin + with TVpDependentInfo(DependentList[I]) do begin if Component <> Sender then EventHandler(Sender, NotificationType, Value); end;