begin process at 2012 02 11 14:29:47
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Delphi

 > 

Divers

 > 

Débutant(e)

 > 

erreur : Indice de liste hors limites


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

erreur : Indice de liste hors limites

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ée 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 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 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 Erreur d'exception avec mysql_query [ par l0pez ] Bonjour à tous, Je bute sur une erreur pour updater une table. Ma requête contenue dans une variable AnsiString (Rqx) est la suivante : UPDATE users 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


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,437 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales