Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1647 connectés 

  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  Problème de fichiers / tableaux [RESOLU]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème de fichiers / tableaux [RESOLU]

n°748800
L0WsKiLL
Posté le 02-06-2004 à 13:46:54  profilanswer
 

Bonjour à tous,  
 
j'ai un petit projet en informatique qui consiste à faire un SOKOBAN et j'ai quelques difficultés.  
Pour tout le code, j'ai mit,  

const l=7;
      m=6;
type grille = array[1..10,1..10] of char;


 
J'ai la "carte" dans un fichier que je  rentre dans un tableau via cette procedure:  
 

procedure lecture;
var f:text;
    c:char;
    t:grille;
    i,j:integer;
begin
     assign(f,'truc1.txt');
     reset(f);
     for i:=1 to 8 do
     begin
          for j:=1 to 6 do
          begin
               read(f,c);
               t[i,j]:=c;
          end;
     end;
     close(f);
     for i:=1 to 8 do
     begin
          for j:=1 to 6 do
          begin
               write(t[i,j])
          end;
     end;
     readln
end;


 
jusque là, pas de problème, le contenu du fichier est enregistré dans un tableau, tableau qui est lui même affiché à l'écran.  
 
je rentre ensuite une procedure par déplacement. Elles sont toutes sous cette forme:  
 

procedure haut;
var i,j:integer;
    t:grille;
begin
     for i:=1 to l do
     for j:= 1 to m do
     begin
          if t[i,j]='m' then
          begin
               if t[i-1,j] = ' ' then begin t[i,j]:=' '; t[i-1,j]:='m' end;
               if t[i-1,j]='+' then begin t[i,j]:=' '; t[i-1,j]:='M' end;
               if t[i-1,j]=' ' then begin t[i,j]:=' '; t[i-1,j]:='m' end;
               if (t[i-1,j]='O') and (t[i-2,j]=' ') then begin t[i-2,j]:='O'; t[i-1,j]:='m'; t[i,j]:=' ' end;
               if (t[i-1,j]='O') and (t[i-2,j]='+') then begin t[i-2,j]:='Q'; t[i-1,j]:='m'; t[i,j]:=' ' end;
               if (t[i-1,j]='Q') and (t[i-2,j]=' ') then begin t[i-2,j]:='O'; t[i-1,j]:='M'; t[i,j]:=' ' end;
               if (t[i-1,j]='Q') and (t[i-2,j]='+') then begin t[i-2,j]:='Q'; t[i-1,j]:='M'; t[i,j]:=' ' end;
          end;
     end;
     readln
end;


 
Et je cherche ensuite à afficher le nouveau tableau via cette procedure:  
 

procedure affichage;  // on peut afficher la grille à n'importe quel moment
var cpt:integer;
    i,j:integer;
    t:grille;
begin
     for i:=1 to l do
     begin
          for j:=1 to m do
          begin
               write(t[i,j]);
               write;
               read;
          end;
     end;
     cpt:=cpt+1;
     writeln
end;


 
Le programme principale énumère simplement les procedure décrites ci-dessus.  
Mon problème est divers. Soit j'affiche effectivement le premier tableau provenant du fichier, mais après rien ne se passe.  
Soit, le premier tableau s'affiche sans soucis, et lorsque je lance la procedure 'haut', j'ai ce genre de joyeusetés qui s'affichent:  
 
├#Ûw♥
D☻☺
 
@ ♥
☺   ê
☺   D
☺   ☺
 
alors que le fichier de départ contenait uniquement:  
 
####
# +#
#  ###
#Qm  #
#  O #
#  ###
####
 
J'ai également une autre question à vous poser. Je cherche à générer des fichiers de sauvegarde pour chaque coups, pour pouvoir revenir sur le précédent en appuyant sur une touche.  
 
Je défini donc des fichier sous cette forme:  
 

procedure sauv(var t:grille);
var f:text;
    cpt:integer;
    s,h:string;
begin
     cpt:=1;
     getdir(0,s);
     h:=(s,'temp',cpt,'.txt');
     assign(f,h);
     rewrite(f);
     for i:=1 to l do
     for j:=1 to m do begin write(f,t[i,j]); readln end;
     cpt:=cpt+1
end;


 
Mais le compilateur n'a pas l'air d'apprecier la définition de h.  
 
Merci d'avance  
 
Lowskill


Message édité par L0WsKiLL le 14-06-2004 à 17:11:33
mood
Publicité
Posté le 02-06-2004 à 13:46:54  profilanswer
 

n°750189
antp
Super Administrateur
Champion des excuses bidons
Posté le 03-06-2004 à 10:00:23  profilanswer
 

 h:=(s,'temp',cpt,'.txt');  
-> c'est censé vouloir dire quoi ?
 
pour le problème du tableau corrompu, à mon avis c'est quand tu sors des limites. Par exemple accès à i-1 alors que i vaut 1


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°755886
auredauv
Posté le 08-06-2004 à 10:16:23  profilanswer
 

je suis désolé de te dire ça, mais :
1 : ta description de code semble correct
2 : ton code est mal écrit et je ne me suis pas fatigué à le lire
3 : j'ai juste regardé le début, et ça semble correct
4 : est-ce-que t'es sur que les valeurs du fichier sont correctements rentrées dans le tableau ?
5 : je n'ai vu nulle part l'initialisation du tableau qui allouerait l'espace mémoire nécessaire (il y a bien la déclaration, mais après tu l'utilises direct, n'oublies pas de l'initialiser par un New ou un SetLength, sinon, ton tableau ne pointes sur rien, ce qui pourrait les signes bizarres qui s'affichent)


Message édité par auredauv le 08-06-2004 à 10:19:50
n°755910
antp
Super Administrateur
Champion des excuses bidons
Posté le 08-06-2004 à 10:25:14  profilanswer
 

auredauv a écrit :

n'oublies pas de l'initialiser par un New ou un SetLength, sinon, ton tableau ne pointes sur rien, ce qui pourrait les signes bizarres qui s'affichent)


 
:heink: c'est un tableau statique (1..10)


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°763165
L0WsKiLL
Posté le 14-06-2004 à 17:11:05  profilanswer
 

Bonjour,  
 
J'ai résolu mon problème.  
 
En fait, mon tableau était trop petit pour ce que je voulais lui faire afficher. j'avais oublié de prendre en compte le caractère de fin de ligne et de retour, ce qui faisait que je sortais du tableau, d'où les hiéroglyphes.  
 
Merci pour votre aide :)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  Problème de fichiers / tableaux [RESOLU]

 

Sujets relatifs
Gestion de Fichiers. Quelle solution adopter ?Probleme avec TMsgDlgButtons de borland
[PHP] Cookies VS Fonction dans une classe [Resolu][lex] Probleme reconnaissance d une chaine par ex
probleme de conditioncomparaison de deux fichiers!! SOS
[C++][MFC] problème onglets[Résolu][Windows]Kill thread Python
[Résolu][Jar]Localisation de ressourceproblème d'affichage sur un serveur IIS
Plus de sujets relatifs à : Problème de fichiers / tableaux [RESOLU]


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR