> Sta predstavlja ova greska
> "EStringListError
> : list index out of bounds (-1)
Ne znam u kojoj ti se to klasi desava, pravilo za sve list index out of bonds greske je da pristupas indexu elementa koji ne postoji.
Npr.
Code:
var
s: TStrings;
begin
s := TStringList.Create;
s.Add('Pera');
s.Add('Mika');
s.Add('Laza');
ShowMessage(s[2]); // OK
ShowMessage(s[5]); // Greska, lista sadrzi 3 elementa stoga je najvisi indeks 2
ShowMessage([s[-1]); // Greska, pocetni indeks svih listi je 0.
Meni se recimo desava ovde...i sto je zanimljivo ne pojavljuje se kada kliknem misem,vec samo kada koristim tastaturu,konkretno enter za odabir i prelaz u drugo polje....
procedure TFrmStanje.ComboBox4DropDown(Sender: TObject);
begin
with ADOQuery5 do
begin
combobox4.Clear;
Close;
SQL.Clear;
SQL.Add('select distinct karoserija,tblkaroserijaid from Tblkaroserija');
Open;
while (not Eof) do
begin
comboBOX4.Items.AddObject(FieldByName('karoserija').AsString,
TObject(FieldByName('tblkaroserijaid').AsInteger));
Next;
end;
U DropDown eventu ComboBoxa mu brises i punis sadrzaj? Vrlo moguce da to ne moze tako, probaj da to radis ranije (tipa on Enter) ili pokusaj da ubacis BeginUpdate/EndUpdate pozive pre brisanja i nakon punjenja.
Potpis
Probao sam vec sa begin/end update i to ne sljaka,ali ako pokusam da brisem na eventu on enter,tu se desava sledece da kada pokusam da filtriram combobox,sa recimo kar,ono izadje selektovano karavan,jedino to sto je selektovano pokazuje gresku sa indeksima,ako izaberem nesto drugo,prikaze mi sta treba....
Mislim da nije problem brisanje,nego ovaj dropdown,sto sam postavio na true,jer iako izbacim skroz taj clear,opet je isto.....mada se tada u combobox uvecava za jos toliko,tj duplira sve rekorde
Nece ni tada isto mi je,ako dodam u event combobox on change,tu izbacuje gluposti...Meni treba da u tom combobox prikaze karavan,limuzina itd,a da mi zapamti ovaj tobject,odnosno njegov id,znaci brojeve 1,2,3
Re: Sta znaci ova greska31.07.2017. u 11:37 · pre 112 meseciizmenjeno 1 put, poslednji put popmilan76 31.07.2017. u 12:05
Izmene poruke
popmilan7631.07.2017. u 12:05zapis iz teksta poruke
Mada mi je zanimljivo da nece samo taj koji je prvi obelezen kao rezultat filtracije,ako idem strelicama po podacima i vratim se na taj ,tada hoce,kao i svaki drugi....
I jos nesto,posto mi trebaju iz comboboxa ovi id-ovi,sakriveno polje,stavio sam u combobox eventu on exit,ovaj podatak i posle njega message da vidim da li mi izlazi pravi broj id....i tu mi prijavljuje gresku na tom kodu...
,
sifrakaroserije:= INTEGER(TObject(ComboBox4.Items.Objects[ComboBox4.ItemIndex]));
showmessage....sifrakaroserije
Negde gresis, sad je to tesko reci bez konkretnog koda, ovako radimo napamet. Ako mozes posalji kratak primer koji ne radi pa ce neko vec pogledati.
Alternativno resenje moze biti da ostavis dataset otvoren i da iz njega kasnije citas zeljeni ID.
Potpis
Dakle,imam kod u combobox eventu dropdown,koji izgleda ovako...
procedure TFrmStanje.ComboBox4DropDown(Sender: TObject);
begin
with ADOQuery5 do
begin
combobox4.Clear;
Close;
SQL.Clear;
SQL.Add('select distinct karoserija,tblkaroserijaid from Tblkaroserija');
Open;
first;
while (not Eof) do
begin
comboBOX4.Items.AddObject(FieldByName('karoserija').AsString,
TObject(FieldByName('tblkaroserijaid').AsInteger));
Next;
end;
end;
end;
end.
I na istom comboboxu,u eventu on exit,postavio sam ovaj kod da vidim kupi li tobject kada izadje iz tog polja...
Googlao sam i googlao i na mnostvo mesta sam nasao da je rec o bagu kada je rec combobox,da je lose dizajnirano i da se moze resiti samo u kodu....a gresku mi pojavljuje ovde....
Inace ovakav kod sam koristio i u prethodnim projektima,ali sam birao podatke preko edita i otvarao dbgrid iz druge forme,pa ih vracao nazad,i to je radilo,ali mi je sada ovde lakse...ovako,da ne otvaram suvisno nove forme...
> Googlao sam i googlao i na mnostvo mesta sam nasao da je rec o bagu kada je rec combobox,da je lose dizajnirano i
> da se moze resiti samo u kodu....a gresku mi pojavljuje ovde....
Cudno mi je da radi sa misem a ne preko tastature. Mislio sam da nadjes gresku u Delphi kodu (kodu kontrole), ovo je linija iz tvog koda, ako ukljucis debug dcus, mozes sa F7 da zaronis u VCL kod i vidis sta se na licu mesta desava, to je jedino relevantno, ovako samo mozemo nagajdjati.
Potpis
Ne znam ja to uraditi...pokusao sam i nesto ne ide...cekirao sam debug dcu i f7 i nista...
Da li je ovo jedini nacin,da uradim ovako nesto ili moze nestoi drugo...