List index out of bounds [Résolu]

cs_Lisla 11 Messages postés dimanche 11 janvier 2004Date d'inscription 12 avril 2007 Dernière intervention - 27 févr. 2007 à 15:42 - Dernière réponse :  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 ?
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
ThWilliam 424 Messages postés mardi 3 janvier 2006Date d'inscription 26 novembre 2013 Dernière intervention - 27 févr. 2007 à 19:07
3
Merci
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

Merci ThWilliam 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 102 internautes ce mois-ci

Commenter la réponse de ThWilliam
Utilisateur anonyme - 27 févr. 2007 à 16:45
0
Merci
Lisa : Touche F1 => Aide de delphi
Commenter la réponse de Utilisateur anonyme
florenth 1105 Messages postés dimanche 1 août 2004Date d'inscription 17 août 2008 Dernière intervention - 27 févr. 2007 à 18:33
0
Merci
Ca veut dire que tu as tapé n'importe quoi dans ton edit12 qui en plus, n'est même pas nommé...
Commenter la réponse de florenth
Utilisateur anonyme - 27 févr. 2007 à 19:16
0
Merci
"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 .
Commenter la réponse de Utilisateur anonyme
cs_Lisla 11 Messages postés dimanche 11 janvier 2004Date d'inscription 12 avril 2007 Dernière intervention - 28 févr. 2007 à 13:33
0
Merci
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)
Commenter la réponse de cs_Lisla
Utilisateur anonyme - 28 févr. 2007 à 13:55
0
Merci
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.
Commenter la réponse de Utilisateur anonyme

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.