Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : erreur : Indice de liste hors limites [ Divers / Débutant(e) ] (NicoIRIS)

mardi 27 mai 2008 à 15:43:31 | erreur : Indice de liste hors limites

NicoIRIS

Bonjour,
je suis débutant en delphi et je me trouve devant une erreur provoqué par une classe d'exception EStringListError. Le message est le suivant:
Le projet toto.exe a provoqué une classe d'exception EStringListError avec le message 'indice de liste hors limites(1)'. processus stoppé.

Je souhaiterai savoir d'ou vient cette exception et comment la résoudre.

Merci d'avance pour tous renseignements susceptible de pouvoir m'aider

mardi 27 mai 2008 à 15:45:59 | Re : erreur : Indice de liste hors limites

dominique.stock

bonjour,
ta liste ne comporte qu'un élément (0) ...

Dom

mardi 27 mai 2008 à 16:42:14 | Re : erreur : Indice de liste hors limites

NicoIRIS

Je ne comprends pas vu que j'utilise une stringlist pour 'couper' mes chaines...
Je sais qu'elles sont bien coupées vu que je les vois dans mon stringgrid.


mardi 27 mai 2008 à 16:48:49 | Re : erreur : Indice de liste hors limites

NicoIRIS

voici un extrait de mon code :


procedure TForm1.lectureClick(Sender: TObject);
var
F:TextFile;
ligne:string;
numLigne : integer;
LongueurAExtraire : integer;
PartieAExtraire : TFileName;
LigneTrouvee : boolean;
LongueurLigne : integer;
SL : TStringList;
LigneSansCaracSpeciaux : string;
LongChaine : string;
SensRotation : string;
NumeroBloc : integer;
i : integer;


begin

  for i:=0 to StringGridDecodageTrame.RowCount-1 do
     StringGridDecodageTrame.Rows[i].Clear;

  numLigne:=1;
  NumeroBloc := 0;
  LigneTrouvee := false;
  If FileExists(chemin.Text)
  then MessageDlg ('Le fichier existe', mtConfirmation, [mbok], 0);
  // rempli les differentes entêtes des string grids
  StringGridDecodageTrame.Cells[0,0]:='N°';
  StringGridDecodageTrame.Cells[1,0]:='Type';
  StringGridDecodageTrame.Cells[2,0]:='Taille';
  StringGridDecodageTrame.Cells[3,0]:='X Début';
  StringGridDecodageTrame.Cells[4,0]:='Y Début';
  StringGridDecodageTrame.Cells[5,0]:='X Fin';
  StringGridDecodageTrame.Cells[6,0]:='Y Fin';
  StringGridDecodageTrame.Cells[7,0]:='X Centre';
  StringGridDecodageTrame.Cells[8,0]:='Y Centre';
  StringGridDecodageTrame.Cells[9,0]:='Rayon';
  StringGridDecodageTrame.Cells[10,0]:='Nb caracs';
  StringGridDecodageTrame.Cells[11,0]:='Texte';

  // Assignation du Fichier
  assignfile(F,chemin.Text);
  MessageDlg ('Le fichier est assigné', mtConfirmation, [mbok], 0);
  // ouverture du fichier F en lecture seul
  reset(F);

  MessageDlg ('Le fichier est initialisé', mtConfirmation, [mbok], 0);
  // Récuperation du N° de la Tole grâce au nom du fichier
  // et on supprime l'extension du fichier
  PartieAExtraire:=ExtractFileName(chemin.Text);
  nom.Caption:=trim(leftstr(PartieAExtraire,length(partieAExtraire)-4));

  // Tant que l'on n'est pas a la fin du fichier, on effectue le traitement.
  // cad que l'on lit ligne par ligne le fichier.mpg et on recueuille les infos
  // que l'on aura besoin .

  while not EOF(F) do
  begin
    // lecture dans notre chaine de caractere nommé ligne d'une ligne de
    // notre fichier F qui a été déclaré comme étant un fichier texte
    readln(F,ligne);
    sendMessage(Memo1.Handle,WM_VSCROLL,SB_BOTTOM,0);
    // on ajoute au memo chaque ligne contenu dans le fichier texte
    Memo1.Lines.Add(ligne);
    //Si on se trouve a la 5° ligne, on recherche la gamme de tole (nom)
    {if (NumLigne = 5)then
    begin
       trim() permet de suprimer les espaces et les caractères spéciaux des début et fin de String
       midstr() permet de Récupérer une chaîne (inconnue)
       nom.caption:=Trim(midstr(ligne,10,5));
    end;
    }
    if (NumLigne = 6) then
    begin
       Longueur.Caption:=trim(midstr(ligne,10,5));
       Largeur.Caption:=trim(midstr(ligne, 24,4));
       Epaisseur.Caption:=trim(rightstr(ligne,2));
    end;


    if (Ligne='53' )then
    begin
       //MessageDlg ('Ligne Trouvee est à True', mtConfirmation, [mbok], 0);
       LigneTrouvee := true;
       NumeroBloc := NumeroBloc+1;
    end;

    NumLigne:=NumLigne+1;


    while (ligneTrouvee=true)do
    begin
    LigneSansCaracSpeciaux :=trim(ligne);
    LongueurLigne := length(LigneSansCaracSpeciaux);
    StringGridDecodageTrame.Cells[0,StringGridDecodageTrame.RowCount-1]
                                                        := intToStr(NumeroBloc);

       if (Ligne='54' ) then
       begin
          //MessageDlg ('Ligne Trouvee est à False', mtConfirmation, [mbok], 0);
          ligneTrouvee := false;
       end;

       // SI LA LIGNE COMMENCE PAR LE SIGNE + OU LE SIGNE - il y a Mvt
       if ((trim(leftstr(ligne,1))) = '+') or((trim(leftstr(ligne,1))) = '-') then
          begin

       // Si la ligne se termine par le signe - (Mouvement CIRCULAIRE)
          if ((LongueurLigne > 10) and ((trim(rightstr(ligne,1))) = '-')) then
          begin

             //MessageDlg('la ligne se termine par -',mtConfirmation, [mbok], 0);
             SL := TStringList.Create;
             SL.Delimiter := '-';
             SL.DelimitedText := ligne;
             readln(F,ligne);
             // Scrollbar pour memo1
             sendMessage(Memo1.Handle,WM_VSCROLL,SB_BOTTOM,0);
             // on ajoute au memo chaque ligne contenu dans le fichier texte
             Memo1.Lines.Add(ligne);
             NumLigne:=NumLigne+1;

          end;

       // Si la ligne se termine par le signe + (Mouvement CIRCULAIRE)
          if ((LongueurLigne > 10) and (trim(rightstr(ligne,1)) = '+')) then
          begin
             SensRotation := '+';
             StringGridDecodageTrame.Cells[9,StringGridDecodageTrame.RowCount-1]:=SensRotation;
             SL := TStringList.Create;
             SL.Delimiter := '+';
             SL.DelimitedText := ligne;
             if (SL[1] <> '') then
             StringGridDecodageTrame.Cells[5,StringGridDecodageTrame.RowCount-1]:= SL[1];
             if (SL[2] <> '')then
             StringGridDecodageTrame.Cells[6,StringGridDecodageTrame.RowCount-1]:= SL[2];
             if (SL[3] <> '')then
             StringGridDecodageTrame.Cells[7,StringGridDecodageTrame.RowCount-1]:= SL[3];
             if (SL[4] <> '')then
             StringGridDecodageTrame.Cells[8,StringGridDecodageTrame.RowCount-1]:= SL[4];
             readln(F,ligne);
             // Scrollbar pour memo1
             sendMessage(Memo1.Handle,WM_VSCROLL,SB_BOTTOM,0);
             // on ajoute au memo chaque ligne contenu dans le fichier texte
             Memo1.Lines.Add(ligne);
             NumLigne:=NumLigne+1;
          end;

        // Si la ligne ne se termine ni par un - ni par un + 
          if ( ((trim(rightstr(ligne,1))<>'-') and
             (trim(rightstr(ligne,1))<>'+'))
             or (LongueurLigne <= 10)) then
          begin
             SL := TStringList.Create;
             SL.Delimiter := '+';
             SL.DelimitedText := ligne;
             //MessageDlg(SL.Text,mtConfirmation, [mbok], 0);
             StringGridDecodageTrame.Cells[5,StringGridDecodageTrame.RowCount-1]:= SL[1];
             StringGridDecodageTrame.Cells[6,StringGridDecodageTrame.RowCount-1]:= SL[2];

             readln(F,ligne);
             // Scrollbar pour memo1
             sendMessage(Memo1.Handle,WM_VSCROLL,SB_BOTTOM,0);
             // on ajoute au memo chaque ligne contenu dans le fichier texte
             Memo1.Lines.Add(ligne);
             NumLigne:=NumLigne+1;
             StringGridDecodageTrame.RowCount := StringGridDecodageTrame.RowCount+1;
          end;

       end

// SI LA LIGNE NE COMMENCE NI PAR + NI PAR -

       else
       begin
          readln(F,ligne);
          // Scrollbar pour memo1
          sendMessage(Memo1.Handle,WM_VSCROLL,SB_BOTTOM,0);
          // on ajoute au memo chaque ligne contenu dans le fichier texte
          Memo1.Lines.Add(ligne);
          NumLigne:=NumLigne+1;
       end;
    end;

  end;

  closefile(f);

end;


mardi 27 mai 2008 à 16:49:38 | Re : erreur : Indice de liste hors limites

dominique.stock


Montre ton code + indique la ligne où tu as l'erreur
Dom

mardi 27 mai 2008 à 17:02:49 | Re : erreur : Indice de liste hors limites

NicoIRIS

il ne me dit pas la ligne ou j'ai l'erreur
Il me dit :  Le projet toto.exe a provoqué une classe d'exception EStringListError avec le message 'indice de liste hors limites(1)'. processus stoppé.

mardi 27 mai 2008 à 18:25:07 | Re : erreur : Indice de liste hors limites

f0xi

Membre Club Administrateur CodeS-SourceS

quand tu assigne des valeurs a ta StringGrid (Cell) as tu bien créé tout ces cellules ?

cette erreur ne survient jamais sur un Add ou Append, par contre elle est provoquée par ce genre de code :

(TStrings et dérivé).Strings[N]

alors que Strings[N] n'existe pas.

de plus, je ne suis pas sur que ton code sois la meilleure solution pour faire ce que tu veux en faire.
peut etre devrait tu penser a une meilleure methode "plus simple" et "plus rapide" genre en passant par XML ou fichier de donnée Binaire.

On peu t'aider a faire mieux, pas de soucis.






Cette discussion est classé dans : erreur, liste, exception, indice, limites


Répondre à ce message

Sujets en rapport avec ce message

[ADO] Erreur lors du rafraichissement [ par JeromeTls ] Salut,J'arrive sur ce forum, j'espère que quelqu'un pourra m'aider.J'ai donc un problème de rafraichissement de la base de données avec les messages s indice de liste hors limite (0) [ par furax13 ] bonjour,dans mon application delphi, je lance mon appli, je sélectionne un fichier via un TopenDialog puis je lance plusieurs traitements avec afficha Erreur de compilation "Debugger Exception Notification" [ par Francky23012301 ] Salut à tous,Voila quand je compile mon projet, il y a deux messages d'ereurs qui aparraissent :*Debugger Exception NotificationProject Project1.exe r Gestion des exceptions [ par richarddum ] bonjour, Est-il possible de récupérer précisément une exception ? Je prends l'exemple d'une exception EdatabaseError, j'aimerais avoir une identificat Indice hors de limite ? [ par lolishe ] Bonsoir,j'utilise le composant TSocket, et j'ai un problème (avec?) lorsque je veux renvoyer au client qui m'envoie une chaine de caracteres, ce qu'il Problème (message : "exception EOSError : erreur système, ligne 87 : paramètre incorrect") [ par Bacterius ] Bonjour, voici mon problème : j'essaye de refaire le petit jeu de Débiars (URL : http://www.delphifr.com/codes/CALCUL-MENTAL_46446.aspx), pour voir si cherche exception dans dbgrid [ par khier ] j ai remplir une dbgrid avec des donnees , je cherche une solution lorsque je recuperer meme donne dans meme colonne il s'affiche des message erreur.c ListBox : liste hors limite [ par hesnogood ] Bonjour, Ayant trop de lignes dans un listBox, à chaque manipulation j'ai le message d'erreur 'Indice de liste hors limites' apparait. Comment suppri erreur dans l'excution [ par soumia2022 ] j'ai installer le delphi correctement avec ses etaypes mais , il ma dis erreurdbd32.exe erreur d'application l'application n'a pas reussu à s'installe Erreur d'une requete sur interbase [ par plante20100 ] Bonjour à tousVoila je voudrais faire une petite appli qui modifie une table interbase (créer une nouvelle colonne). voici mon code :procedure TForm1.


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,296 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.