| | rogerone | Posté le 09/03/2005 @ 11:34 | Petit astucien
12 Messages
| Bonjour,
Utilisateur débutant en Delphi4 ,j'ai un problème d'initialisation inopérante de variables.
les variables i,j,x,y ne sont pas déclarées autre part dans le fichier.
Mon fichier grille est déclaré comme suit
rens=record
eqvis:array[1..11,1..6]of integer;
eqteur:array[1..11,1..6] of integer;
Date_aller:Array[1..11] of string[8];
Date_retour:Array[1..11] of string[8];
end;
grille:file of rens;
Dans une procédure où je déclare les variables suivantes
Var
x,y,i,j:byte;
begin
x:=0;y:=0;i:=0;j:=0
for i:=1 to 11 do
begin
reset(grille); 'grille est un fichier à accès direct'
seek(grille,i-1)'je me positionne en début de fichier'
read(grille,rens);'lecture des enregistrements'
...........
' attribution de la valeur des composants de
l'enregistrement à une autre variable'
for j:=1 to 6 do
begin
reset(fichser);'autre fichier à accès direct'
repeat
read(fichser,renseq);
until (renseq.indref=rens.eqvis[i,j];
end;
end;
C'est ici que j'ai une erreur de dépassement de fichier.En effet i a la valeur 1 et cela me paraît normal mais j a une valeur de 140(?).
Si je clique au début sur l'initialisation des variables x et y ont bien la valeur 0 mais i a la valeur 1 et j la valeur 140 .
Je comprends dès lors pourquoi je ne trouve pas la valeur de eqvis[i,j] et que j'ai une erreur de dépassement de fin de fichier.
Si je change de dénomination de variables (iiet jj) j'ai toujours le même problème.
Qui peut me dire où se situe le problème.
Merci à tous ceux qui me donneront des pistes pour résoudre ec "bug"
Rogerone
| | |
| |
| Publicité |
|
| | breizhbugs | Posté le 09/03/2005 à 19:10 | Astucien
3001 Messages
| Salut,
Var
x,y,i,j:byte;
begin
x:=0;y:=0;i:=0;j:=0
for i:=1 to 11 do
begin
reset(grille); 'grille est un fichier à accès direct'
seek(grille,i-1)'je me positionne en début de fichier'
read(grille,rens);'lecture des enregistrements'
...........
' attribution de la valeur des composants de
l'enregistrement à une autre variable'
for j:=1 to 6 do
begin
reset(fichser);'autre fichier à accès direct'
repeat
read(fichser,renseq);
until (renseq.indref=rens.eqvis[i,j]; <- il manque une parenthese!
end;
end;
Tu dis "erreur de depassement de fichier", dans ce cas tu essaie de lire apres la fin du fichier! Dans la condition de ta boucle repeat...until, tu devrais aussi mettre un test pour stopper si la fin de fichier est atteinte.
| | | |
| | Haut de la page |
| | Inscrivez-vous ! |
- Posez vos questions
- Résolvez vos problèmes
- Aidez les autres
- Participez et créez vos discussions
- Dialoguez en privé avec d'autres membres
- Suivez vos sujets préférés
- Affichez les signatures des membres
|
|