Pascal question de débutant

Résolu/Fermé
samsam - 8 juin 2008 à 13:32
 samsam - 9 juin 2008 à 10:18
Bonjour,

On lisant mon cours de pascal je suis tombé sur un exemple des fichier

#####################

Ecrire une procedure qui copie un fichier dans un autre fichier (voici la solution)

procedure copier(var f,g:fichier);
Begin
l reset(f); rewrite(g);
l
l while not eof(f) do
l
l begin
l l
l l g (flèche) := f(flèche);
l l get(f);
l l pud(g);
l l
l end;
end;
#####################

on remplace (flèche) par une flèche qui tend vers le haut

mes questions :
C'est quoi cette flèche ?
A quoi sert le pud(g) est quelle est la deffirense entre le get(f) et le pud(g)

amicalement
A voir également:

7 réponses

mnlad Messages postés 29 Date d'inscription samedi 7 juin 2008 Statut Membre Dernière intervention 13 août 2011 8
8 juin 2008 à 13:59
A mon avis c'est le pud c'est une procedure qu'il a faite pour permettre l'ecriture dans le segond fichier creer qui est le fichier g alors que get permet de recuperer des donneés se trouvant dans le fichier f. Je dirai c'est un peu comme le get ou getter (get en anglais )

J'espere que c'est peu etre utilie mais essaye un peu de donner tout ce qu'il y a

Amicalement
0
oh la ... a la touche (ta quel niveau ? -bac+(-10) )

merci de m'aider
y a il une réponse ?
0
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
8 juin 2008 à 17:10
comme l'a dit mnlad, il serait plus aisé de t'aider si tu nous donnes les fonctions/procédures/types/variables/unités définues avant ta fonction et que tu utilises car flèche, get et pud, ne me sont pas connu (certes je ne connais pas tout en pascal, mais tu dis question de débutant, alors...)
0
mnlad Messages postés 29 Date d'inscription samedi 7 juin 2008 Statut Membre Dernière intervention 13 août 2011 8
8 juin 2008 à 17:27
si tu trouves cela tu peut bien comprendre et d'ailleurs peut etre que les lignes des codes que tu presentes font parties d'une grande portion de code ou d'un module que tu n'as pas mais auquel on fait appel alors tu ne comprendra pas facilement si tu ne possede tout le code

Alors ... Tu peut chercher au pres de celui qui a editer ce cours pour qu'il te donnes des explications bien precises ...
0
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
8 juin 2008 à 17:31
Normalement, toutes les procédures copier doivent se ressembler (à quelques type, ou fonctions intermédiaires près)

Celle-ci est surement la plus succincte :

procedure copier(cheminF,cheminG:string);
var f,g:file of char; c:char;
begin
assign(f,cheminF);
reset(f);
assign(g,cheminG);
rewrite(g);
while not eof(f) do
begin
read(f,c);
write(g,c);
end;
close(g);
close(f);
end;
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mnlad Messages postés 29 Date d'inscription samedi 7 juin 2008 Statut Membre Dernière intervention 13 août 2011 8
8 juin 2008 à 18:10
oui comme ce que te donne KX ce la est claire, limpide et tu peut bien utiliser ce code pour bien comprendre tu peut voir le code suivant :

procedure copier(cheminF,cheminG:string);
var f,g:filer; lineread:string;
begin
lineread=' ';
assignfile(f,cheminF);

assignfile(g,CheminG);
{$I-} // On intercepte l'erreur qui peut subvenir avec l'ouverture du fichier
Reset(f);
{$I+}
if IOResult = 0 then
begin
Rewrite(g);
while not Eof(f) do
begin//On lit le contenu du fichier
ReadLn(f, lineread);//linereadpermet de stocker la valeur lue dans f
writeln(g,lineread);
WriteLn(lineread);//Affiche a l'écran la ligne copiée
inc(nombre_ligne);//On compte le nombre des lignes existantes
end;//end while
close(g);//Ferme le fichier g
CloseFile(f);//fermeture du fichier f
end else
WriteLn('Impossible d ouvrir le fichier cheminF suite a une erreur survenue ');
end;
0
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
8 juin 2008 à 23:17
Une petite remarque, ce programme ne peux s'utiliser qu'avec des fichiers contenant du texte...
De plus il y a un petit oubli concernant la déclaration de nombre_ligne :

procedure copier(cheminF,cheminG:string);
var f,g:text; lineread:string; nombre_ligne:integer;
begin
lineread:=' '; nombre_ligne:=0;

Le reste est évidemment correct...
0
mnlad Messages postés 29 Date d'inscription samedi 7 juin 2008 Statut Membre Dernière intervention 13 août 2011 8
8 juin 2008 à 18:49
Ou soit j'ai pus faire pour toi une petite procédure

procedure CopyFile(srcpath:string,destpath:string)
var
srcFile: Text;
destFile: Text;
line: string;

begin
AssignFile(srcFile, srcpath);
{$I-}
Reset(srcFile);
{$I+}
if IOResult = 0 then
begin
AssignFile(destFile, destpath);
{$I-} //Desactive le contrôle automatique des erreurs lors de l'acces au fichier
Rewrite(destFile);//Test l'ouverture du fichier
{$I+}//Active ce contrôle
if IOResult = 0 then //dans le cas ou l'ouverture s'est bien passée on fait la copie des fichiers
begin
while not Eof(srcFile) do
begin
ReadLn(srcFile, line);
WriteLn(destFile, line);
WriteLn('Copying: ', line);
end; // while not Eof

CloseFile(destFile);
WriteLn;
WriteLn('File successfully copied.');
end; // if destFile is OK
else writeln('Impossible d'ouvrir le fichier pour la lecture a cause d'une erreur survenue lors de l'ouverture'); //Sinon on ferme le fichier srcFile car on a pas su ouvrir le fichier destFile
CloseFile(srcFile);
end; // if srcFile is OK
else writeln('Impossible d'ouvrir le fichier pour la lecture a cause d'une erreur survenue lors de l'ouverture');
//On quitte le programme et l'execution s'arrete

end;
0
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
8 juin 2008 à 23:27
Là encore, valable uniquement pour des fichiers de texte, et avec quelques fautes de frappe.
Il fallait lire :

procedure CopyFile(srcpath:string;destpath:string);
var
srcFile: Text;
destFile: Text;
line: string;

begin
AssignFile(srcFile, srcpath);
{$I-}
Reset(srcFile);
{$I+}
if IOResult = 0 then
begin
AssignFile(destFile, destpath);
{$I-} //Desactive le contrôle automatique des erreurs lors de l'acces au fichier
Rewrite(destFile);//Test l'ouverture du fichier
{$I+}//Active ce contrôle
if IOResult = 0 then //dans le cas ou l'ouverture s'est bien passée on fait la copie des fichiers
begin
while not Eof(srcFile) do
begin
ReadLn(srcFile, line);
WriteLn(destFile, line);
WriteLn('Copying: ', line);
end; // while not Eof

CloseFile(destFile);
WriteLn;
WriteLn('File successfully copied.');
end // if destFile is OK
else writeln('Impossible d''ouvrir le fichier pour la lecture a cause d''une erreur survenue lors de l''ouverture'); //Sinon on ferme le fichier srcFile car on a pas su ouvrir le fichier destFile
CloseFile(srcFile);
end // if srcFile is OK
else writeln('Impossible d''ouvrir le fichier pour la lecture a cause d''une erreur survenue lors de l''ouverture');
//On quitte le programme et l'execution s'arrete
end;

La confiance n'exclue pas le contrôle (comme disait mon prof de maths)
0
mnlad Messages postés 29 Date d'inscription samedi 7 juin 2008 Statut Membre Dernière intervention 13 août 2011 8 > KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024
9 juin 2008 à 08:15
Merci beaucoup d'avoir fait cette correction car avec une bonne fatigue j'ai pas vraiment fait attention a d'autre erreurs de frappe

Merci ....
0
good comme ça c'est cool merci a vous deux
0