cs_TouTSpeed
Messages postés72Date d'inscriptionjeudi 5 janvier 2006StatutMembreDernière intervention30 août 2007
-
12 juin 2007 à 14:43
cs_TouTSpeed
Messages postés72Date d'inscriptionjeudi 5 janvier 2006StatutMembreDernière intervention30 août 2007
-
13 juin 2007 à 18:17
Bonjour à tous
j'ai un soucis incompréhensible avec ce bout de code
for a:=ligv-31 to (ligv+1)do
begin
assignfile(h,'fichiers\'+cells[13,0]+'.txt');
reset(f);
readln(f,occ);
append(h);
writeln(h,occ);
si le fichier h est vide cela fonctionne x fois tant qu eje ne ferme pas l eprogramme !
par contre pour écrire a la suite (fichier rempli avant)j'ai droit a une erreur e/s 32 ( fichier en utilisation) or aucun programme ne l'utilise !!!!
le but est de copié les ligne 1 à 33 du fichier f a la suite des ligne déja écrite dan le fichier h.
merci de m'éclairer ! je suis dessus depuis ce matin et même à plusieurs on trouve pas c'est bizarre comme probleme.
florenth
Messages postés1023Date d'inscriptiondimanche 1 août 2004StatutMembreDernière intervention17 août 20082 12 juin 2007 à 17:09
Ah et puis j'oubliais: postes directement le code qui pose problème, c'est plus clair pour nous que n'importe quelle explication. A condition que tes compo/variables portent des noms logiques.
Avec tout ça, tu nous validerais bien une petite réponse, non ?
Mon cher ToutSpeed, je vais me faire l'avocat du diable : il serait bien que tu te donnes réellement la peine de chercher, sinon on va t'appeler Luky Luke.
En 15 sec montre en main, j'ai tapé via google "Delphi+Fichiers" et je suis tombé sur ce lien
je cite (ca t'évitera de lire) :
c'est là que tout change : là on ne va pas utiliser reset() car on
ne veut pas préparer le fichier à la lecture mais on a le choix entre deux
procédures, rewrite() qui va supprimer le fichier F s'il existe et réécrire par
dessus mais on peut aussi utiliserappend() F</italique> et
gardera ainsi les données existantes(Attention avec append s'il n'y a pas de
fichier de ce nom il y aura une erreur).
D'après mon arbre généalogique, ma famille a inventé le pipeau (en plus c'est vrai): ben je crois que l'on a trouvé son plus grand adepte . Tu veux des parts de marchés peut etre ?
@+
Ps : Donne toi la peine de chercher un peu plus stp à l'avenir
Var
Index:Cardinal;
SourceFile,DestFile:TextFile;
Str:String;
Begin
If not FileExists(SourceFile) then Exit;
For Index:=(Ligv-31) to (Ligv+1) Do
Begin
AssignFile(SourceFile);
AssignFile(DestFile);
Reset(SourceFile);
If FileExists(DestFile) then Append(DestFile) Else Rewrite(DestFile);
While not EOF(SourceFile) Do
Begin
ReadLn(SourceFile,Str);
WriteLn(DestFile,Str);
End;
CloseFile(SourceFile);
CloseFile(DestFile);
End;
end;
begin
with stringgrid1 do begin
ligv:=32; // je souhaite lire la ligne 32
if FileExists('fichiers\'+cells[12,0]+'.txt')
then
begin
assignfile(f,'fichiers\'+cells[12,0]+'.txt');
nbch:=strtoint(compteligne(cells[12,0]))/33; // je déduis le nombre de chantier
car toute les 33 lignes j'en ai un nouveau
for i:=1 to round(nbch) do begin // on parcours autant de fois qu'il y a de chantiers
reset(F); //on se place au début
for j:=1 to ligv do begin // jusque la ligne voulue
readln(f,occ); // on recupere al ligne voulu
end;
if occ='0' then // si la ligne voulu = '0'
begin
showmessage(inttostr(ligv)); // info pour dire ou on se situe dans le prog
// ici on attaque le bout de code permettant de copier les ligne 1 à 33 si il y a un '0' à la //ligne 32
//ou ligne 34à 65 si il y a un '0' à la ligne 34
//on ajoute 33 à chaque fois..................................
for a:=ligv-31 to (ligv+1)do
begin
assignfile(h,'fichiers\'+cells[13,0]+'.txt');
cs_TouTSpeed
Messages postés72Date d'inscriptionjeudi 5 janvier 2006StatutMembreDernière intervention30 août 2007 12 juin 2007 à 16:01
j'ai retranscrit ton code en prenant en compte le mien et voila
( je précise qu ece la me sort toujours l'erreur et que les fichiers existe
et que cela est vérifier plus haut par une fonction précédente, de plu sles fichiers sont fermer par la fonction précédente.)
En plus le programme marche quand je vide le fichier de destination meme avec ton code ;) ( je peux cliquez plusieur fois lors de l apremiere instance et ça copie !) par contre il ne marche plus à la deuxieme exécution!
Je comprend pas du tout pourquoi !
Que se passe t il a la fermeture du programme !????lol
florenth
Messages postés1023Date d'inscriptiondimanche 1 août 2004StatutMembreDernière intervention17 août 20082 12 juin 2007 à 16:02
Purééeeee ! Je comprends pourquoi à plusieurs vous n'arrivez pas à trouver l'origine du problème !
Y'a pas un seul composant de nommé, tes variables ont des noms d'une seule lettre pour la plupart.
T'a trois fichiers, on sait même pas lequel sert à quoi !
En plus, entre le code que tu as posté dans ton deuxième message et celui-ci les CloseFile() ont disparu... bizarre tout ça...
Et puis, tu pourrais au moins mettre en rouge la ligne qui beuge, ça peut servir ...
florenth
Messages postés1023Date d'inscriptiondimanche 1 août 2004StatutMembreDernière intervention17 août 20082 12 juin 2007 à 16:05
Ah tiens, croisement de messages.
Mes remarques concernant le CloseFile() concernent donc le code d'avant. Ils sont revenus maintenant.... encore un coup du destin.
Allez, je laisse 3615 te résoudre ton problème, moi j'abdique.
++
PS: prière d'écrire français, maglré les clvaiers qui invresent les lerttes