Ĺadny brzuch
Witam
napisałem procedure do zamykania wszystkich TabSreet'ów w PageCobntrol
z wyjątkiem używanej (aktywnej) kod przedstawia się następująco:
var i : integer; LiczbaZakladek : integer; AktywnaZakladka : integer; begin i := 1; LiczbaZakladek := PageControl1.PageCount; AktywnaZakladka := PageControl1.ActivePageIndex; while i <= LiczbaZakladek do begin if i <> AktywnaZakladka then PageControl1.Pages[i].Free; i := i + 1; end;
w nagrede otrzymuje taki komunikat
---------------------------
Debugger Exception Notification
---------------------------
Project WebPad.exe raised exception class EListError with message 'List index out of bounds (3)'. Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------
może mi ktoś pomóc ?
Użytkownik CorVeta edytował ten post 17 luty 2009, 15:57
List index out of bounds (3)
czyli
nie ma 3 zakładek.
większość rzeczy zaczyna sie liczyć od zera.
czyli pierwszy element ma Index = 0.
zmien i:= 0
A do tego - nie lepiej by zastosować pętle for, zamiast while?
Jeżeli natrafi na aktywą zakładkę - instrukcją continue pomijasz iterację.
Użytkownik pat edytował ten post 17 luty 2009, 16:23
List index out of bounds (3)
czyli
nie ma 3 zakładek.
większość rzeczy zaczyna sie liczyć od zera.
czyli pierwszy element ma Index = 0.
zmien i:= 0
PageCount zaczyna sie od 1
ActivePageIndex natomiast od 0
no wiec zrobilem takie kombo
var i : integer; LiczbaZakladek : integer; AktywnaZakladka : integer; begin i := 0; LiczbaZakladek := PageControl1.PageCount - 1; AktywnaZakladka := PageControl1.ActivePageIndex; while i <= LiczbaZakladek do begin if i = AktywnaZakladka then continue else PageControl1.Pages[i].Free; i := i + 1; end;
tym razem
List index out of bounsd(1)
no wg mnie z kodu wszystko jest ok... ;\
var i, a:integer; begin a:=PageControl1.ActivePageIndex; with PageControl1 do for i:=PageCount-1 downto 0 do if i<>a then PageControl1.Pages[i].Free; end;
Użytkownik Cyrkiel edytował ten post 17 luty 2009, 19:39
var i, a:integer; begin a:=PageControl1.ActivePageIndex; with PageControl1 do for i:=PageCount-1 downto 0 do if i<>a then PageControl1.Pages[i].Free; end;
wielkie dzięki działa ;)
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
napisałem procedure do zamykania wszystkich TabSreet'ów w PageCobntrol
z wyjątkiem używanej (aktywnej) kod przedstawia się następująco:
var i : integer; LiczbaZakladek : integer; AktywnaZakladka : integer; begin i := 1; LiczbaZakladek := PageControl1.PageCount; AktywnaZakladka := PageControl1.ActivePageIndex; while i <= LiczbaZakladek do begin if i <> AktywnaZakladka then PageControl1.Pages[i].Free; i := i + 1; end;
w nagrede otrzymuje taki komunikat
---------------------------
Debugger Exception Notification
---------------------------
Project WebPad.exe raised exception class EListError with message 'List index out of bounds (3)'. Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------
może mi ktoś pomóc ?
Użytkownik CorVeta edytował ten post 17 luty 2009, 15:57
List index out of bounds (3)
czyli
nie ma 3 zakładek.
większość rzeczy zaczyna sie liczyć od zera.
czyli pierwszy element ma Index = 0.
zmien i:= 0
A do tego - nie lepiej by zastosować pętle for, zamiast while?
Jeżeli natrafi na aktywą zakładkę - instrukcją continue pomijasz iterację.
Użytkownik pat edytował ten post 17 luty 2009, 16:23
List index out of bounds (3)
czyli
nie ma 3 zakładek.
większość rzeczy zaczyna sie liczyć od zera.
czyli pierwszy element ma Index = 0.
zmien i:= 0
PageCount zaczyna sie od 1
ActivePageIndex natomiast od 0
no wiec zrobilem takie kombo
var i : integer; LiczbaZakladek : integer; AktywnaZakladka : integer; begin i := 0; LiczbaZakladek := PageControl1.PageCount - 1; AktywnaZakladka := PageControl1.ActivePageIndex; while i <= LiczbaZakladek do begin if i = AktywnaZakladka then continue else PageControl1.Pages[i].Free; i := i + 1; end;
tym razem
List index out of bounsd(1)
no wg mnie z kodu wszystko jest ok... ;\
var i, a:integer; begin a:=PageControl1.ActivePageIndex; with PageControl1 do for i:=PageCount-1 downto 0 do if i<>a then PageControl1.Pages[i].Free; end;
Użytkownik Cyrkiel edytował ten post 17 luty 2009, 19:39
var i, a:integer; begin a:=PageControl1.ActivePageIndex; with PageControl1 do for i:=PageCount-1 downto 0 do if i<>a then PageControl1.Pages[i].Free; end;
wielkie dzięki działa ;)