Index de liste hors limites
Bonjour à tous,
J'ai ce message d'erreur lorsque je tente de remplir un TListView : Index de liste hors limites (8)
Ca me répète le message pour chaque ligne…
voila mon code:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
|
begin
ListView1.Clear;
ListView1.Column[5].Caption := 'Code postal client';
ListView1.Column[6].Caption := 'Concessionnaire';
ListView1.Column[7].Caption := 'Code postal concess';
ListView1.Column[8].Caption := 'Description';
DBExp := TSQLite3Database.Create;
try
DBExp.Open(Utilisateur);
Stmt_Exp := DBExp.Prepare('SELECT * FROM affaire ' + ExportExcel + ' ORDER BY Date');
try
while Stmt_Exp.Step = SQLITE_ROW do
begin
Item2 := ListView1.Items.Add;
ShowMessage('1');
Item2.Caption := FormatDateTime('dd/mm/yyyy', UnixToDateTime(StrToInt(Stmt_Exp.ColumnText(1)))); //Date
Item2.SubItems.Add(Stmt_Exp.ColumnText(2)); //Modele
Item2.SubItems.Add(Stmt_Exp.ColumnText(3)); //Type
Item2.SubItems.Add(Stmt_Exp.ColumnText(8)); //Pourcentage
Item2.SubItems.Add(Stmt_Exp.ColumnText(11)); //Client
Stmt_Exp2 := DBExp.Prepare('SELECT CodePostal FROM client WHERE id = "' + Stmt_Exp.ColumnText(5) +'"'); //IdClient
Stmt_Exp2.Step;
Item2.SubItems.Add(Stmt_Exp2.ColumnText(0)); //Code Postal Client
Item2.SubItems.Add(Stmt_Exp.ColumnText(4)); //Concess
Stmt_Exp2 := DBExp.Prepare('SELECT CodePostal FROM concessionnaire WHERE id = "' + Stmt_Exp.ColumnText(19) +'"'); //IdConcess
Stmt_Exp2.Step;
Item2.SubItems.Add(Stmt_Exp2.ColumnText(0)); //Code Postal Concessionnaire
Item2.SubItems.Add(Stmt_Exp.ColumnText(9)); //Descritpion
end;
finally
Stmt_Exp.Free;
end;
finally
DBExp.Free
end;
end. |
quand j'exécute pas à pas, l'erreur s'arrête ici (dans System.Classes)
Code:
1 2 3 4 5 6
| function TStringList.Get(Index: Integer): string;
begin
if Cardinal(Index) >= Cardinal(FCount) then
Error(@SListIndexError, Index);
Result := FList[Index].FString;
end; |
J'ai mis le ShowMessage('1') pour trouver exactement d'où vient le problème. L'erreur hors limites arrive juste avant au niveau Item2 := ListView1.Items.Add;
J'ai fait des recherches un peu partout mais je ne comprends vraiment pas pourquoi…
Désolé si le code n'est pas top, je débute…
Merci :)