List index out of bounds

Résolu
cs_Lisla Messages postés 11 Date d'inscription dimanche 11 janvier 2004 Statut Membre Dernière intervention 12 avril 2007 - 27 févr. 2007 à 15:42
 Utilisateur anonyme - 28 févr. 2007 à 13:55
Bonjour,

J'ai fait un formulaire pour pouvoir modifier des enregistrements.

table1.edit;
table1.fields[strtoint(edit12.text)];
table1.fieldvalues['Nom_proprio']:=uppercase(edit13.text);
table1.fieldvalues['Adresse']:=uppercase(edit14.text);
table1.fieldvalues['Code_postal']:=strtoint(edit15.text);
table1.fieldvalues['Ville']:=uppercase(edit16.text);
table1.fieldvalues['Tel1']:=maskedit1.text;
table1.fieldvalues['Tel2']:=maskedit2.text;
table1.post;
showmessage('Enregistrement effectué');


Seulement, mon code ne marche pas. Il me renvoie systématiquement un "index out of bounds(x)" ou le x entre parenthèses est la valeur de l'id indiquée, c'est à dire le "strtoint(edit12.text)"

Quelqu'un pourrait-il m'éclairer sur l'origine de cette erreur ?
A voir également:

6 réponses

ThWilliam Messages postés 418 Date d'inscription mardi 3 janvier 2006 Statut Membre Dernière intervention 26 novembre 2013 4
27 févr. 2007 à 19:07
Salut Lisla.

Pour préciser un peu ce que Florent a dit :

la propriété Fields pointe sur le champ dont tu as renseigné l'indice.
Si StrToInt(Edit12.Text) = 20 et que tu n'as que 18 champs, tu as bien le message "index out of bounds". De plus, ton code n'assigne rien comme valeur !
-->  table1.fieldvalues['monchamp']:= strtoint(edit12.text)];
Remarque : FieldValues est une propriété de type variant. Dans ton cas, utilise plutôt FieldByName :
      Table1.FieldByName('Code_postal').AsInteger := StrToInt(Edit15.Text);
      Table1.FieldByName('Tel1').asString :=maskedit1.text;

A +
Thierry
3
Utilisateur anonyme
27 févr. 2007 à 16:45
Lisa : Touche F1 => Aide de delphi
0
florenth Messages postés 1023 Date d'inscription dimanche 1 août 2004 Statut Membre Dernière intervention 17 août 2008 3
27 févr. 2007 à 18:33
Ca veut dire que tu as tapé n'importe quoi dans ton edit12 qui en plus, n'est même pas nommé...
0
Utilisateur anonyme
27 févr. 2007 à 19:16
"index out of bounds(x)" : Traduction à l'aide de voila ndex hors des limites(x). Tu rentres une valeur hors des limites (Voir propose de ThWilliam).

Il faut penser à chercher : ca commence à devenir chiant ce qui passe en ce moment sur CS. Moi je propose que l'on répond plus aux questions tant que les vacances ne sont pas finis : ca leur fera les pieds .
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Lisla Messages postés 11 Date d'inscription dimanche 11 janvier 2004 Statut Membre Dernière intervention 12 avril 2007
28 févr. 2007 à 13:33
J'ai pensé à chercher, et j'ai même fini par trouver la solution, mais je n'ai pas pu me reconnecter à ce moment.

Francky, je comprends que les questions de boulet soient chiantes, mais pour ma part, je dois programmer en Delphi 3 alors que je trouve que c'est très mal documenté par rapport à d'autres langages de prog. (Puis quand je cherche des aides, les trois quarts du temps, elles ne fonctionnent pas pour le Delphi que j'ai)

Certes, l'aide est "très bien faite", mais très bien faite pour les gens qui connaissent déjà. En tant que débutante, je n'y comprends rien, la plupart du temps.


Merci beaucoup ThWilliam pour ta réponse claire et précise, même si je suis un boulet.
(Que l'esprit d'Anders Hejlsberg soit avec toi)
0
Utilisateur anonyme
28 févr. 2007 à 13:55
Ecoute Lisa :

Faire une recherche ca ne se fait pas en 30 sec : ca peut prendres des jours et des jours avant de trouver (quand on trouve). Et quand on arrive enfin à toucher à son objectif, on est partit pour de l'optimisation et donc rebolote des problèmes.

Il va falloir vous mêttre dans le crane que quelque soit son niveau, on rencontre des difficultés. Ce qui différencie des membres dit avancés de débutants, est la tenacité des premiers à trouver par eux mêmes.

Tu te rends compte que tu viens de demander comment ajouter un onglet dans un TPageControl : la prochaine étape c'est comment déposer un bouton ? Mais on rêve .....

La réponse est click droit sur ton TPageCOntrol : désolé mais la facilité réponse est incompatible avec une réelle recherche : tu en conviendra je pense qu'il n'est pas difficile de faire un click droit avec ta souris.

Ce que je t'ai dis : Quand on a un message d'erreur et que l'on maitrîse pas bien la langue de Shakespeare (ce qui est mon cas), on commence par traduire en Francais cette erreur. Dans ton cas : Index out of bounds(x) signifie Index hors des limites(x). Ca parle de soit. De plus c'est un grand classique que l'on rencontre aussi avec les listbox et autre (Cette erreur apparait par exemple quand on appelle l'item 19 d'un listbox alors que tu en as que 18).

Pour conclure :

table1.fields[strtoint(edit12.text)];
table1.fieldvalues['Nom_proprio']:=uppercase(edit13.text);
table1.fieldvalues['Adresse']:=uppercase(edit14.text);
table1.fieldvalues['Code_postal']:=strtoint(edit15.text);
table1.fieldvalues['Ville']:=uppercase(edit16.text);
table1.fieldvalues['Tel1']:=maskedit1.text;
table1.fieldvalues['Tel2']:=maskedit2.text;

Tu as 6 lignes "identiques" et une différente alors que tu essayes de faire la meme chose pour tous : ca te choque pas ? Si tu avais relu ATTENTIVEMENT ton code ca t'aurait sauté aux yeux.

Pour conclure : ce message ne t'était pas spécialement destiné.

Moi ce qui me chagrine c'est qu'à cause de gens, qui vont venir sur ce forum que pendant ces 3 semaines de vacances, que des gens qui administrent/participent à ce forum TOUT LES JOURS depuis plusieurs années arrivent à en partir. Je trouve triste et grave. De ce fait, je n'ai envie de faire preuve daucune modération et d'aucune clémence face à des gens qui sont à l'origine de telles choses. Et j'irais meme plus loin : de la part la netiquette, votre place n'est surement pas dans un forum.
0
Rejoignez-nous