Accueil > > > CONVERTIR UN FICHIER TEXTE UNIX EN FICHIER TEXTE WINDOWS ET VICE ET VERSA
CONVERTIR UN FICHIER TEXTE UNIX EN FICHIER TEXTE WINDOWS ET VICE ET VERSA
Information sur la source
Description
Si vous jonglez entre les systèmes Unix et Windows, vous remarquerez que les caractères "retour chariot" et "saut de ligne" ne sont pas correctement traduits. Voici le source de deux fonctions prenant en paramètre le nom comlet du fichier à convertir (chemin + nom du fichier) : - la fonction ConvertirUnixVersDos convertit un fichier texte issu du monde Unix en fichier texte pour Dos/Windows - la fonction ConvertirDosVersUnix convertit un fichier texte issu de Windows vers Unix.
Source
- procedure TForm1.ConvertirUnixVersDos(nomfic: string);
- var
- f,s:textfile;
- ch, ch2, chprec:char;
- cr,lf,cr2,lf2 :boolean;
-
- begin
- // Assignation du fichier en entrée
- assignfile(f,nomfic);
- reset(f);
- // Assignation du fichier temporaire résultat (situé dans le répertoire de l'application Delphi et porte le nom temp.txt
- assignfile(s,Extractfilepath(application.exename)+'\temp.txt');
- rewrite(s);
-
- // Initialisation du caractère précédent
- chprec :=#0;
-
- // Tant qu'on est pas à la fin du fichier d'entrée
- while not(eof(f)) do
- begin
- // Lecture du fichier en entrée caractère par caractère et stockage de celui ci dans la variable ch
- read(f,ch);
-
- // si le caractère lu est "saut de ligne"
- if ch = #13 then
- begin
- // on lit le caractère suivant du fichier entrée
- read(f,ch2);
- // écriture du caractère ch dans le fichier de sortie
- write(s,ch);
- // si le caractère ch2 est différent de "retour chariot" alors on ajute un caractère "retour chariot" dans le fichier de sortie
- if ch2 <> #10 then write(s,#10);
- // Ecriture du caractère ch2 dans le fichier de sortie
- write(s,ch2);
- // stockage du dernier caractère lu dans chprec
- chprec := ch2;
- end
- else
- begin
- // Si le caractère lu est "retour chariot"
- if ch = #10 then
- begin
- // si le caractère précédent était "saut de ligne" on écrit ch
- if chprec = #13 then write(s,ch)
- else
- begin
- // lecture du caractère suivant
- read(f,ch2);
- // si le caractère suivant est "saut de ligne"
- if ch2 = #13 then
- begin
- // il faut inverser l'ordre de ch et de ch2 dans le fichier de sortie
- write(s,ch2);
- write(s,ch);
- end
- else
- begin
- // sinon, on ajout un "saut de ligne" et on écrit les caractères ch et ch2.
- write(s,#13);
- write(s,ch);
- write(s,ch2);
- end;
- end;
- end
- // cas d'un caractère <> de "retour chariot" et de "saut de ligne", on écrit tout simplement le caractère dans le fichier de sortie.
- else write(s,ch);
-
- chprec := ch;
- end;
- end;
-
- // fermeture des fichiers
- closefile(s);
- closefile(f);
-
- // Suppression du fichier en entrée
- deletefile(nomfic);
- // Renommage du fichier temporaire en nomfic
- renamefile(Extractfilepath(application.exename)+'\temp.txt',nomfic);
- end;
-
-
- // même chose en plus simple : il suffit de supprimer les caractères #13 du fichier en entrée.
- procedure TForm1.ConvertirDosVersUnix(nomfic: string);
- var
- f,s:textfile;
- ch,ch2:char;
- begin
- assignfile(f,nomfic);
- reset(f);
- assignfile(s,Extractfilepath(application.exename)+'\temp.txt');
- rewrite(s);
-
- while not(eof(f)) do
- begin
- read(f,ch);
- if ch = #13 then read(f,ch);
- write(s,ch);
- end;
-
- closefile(f);
- closefile(s);
-
- deletefile(nomfic);
- renamefile(Extractfilepath(application.exename)+'\temp.txt',nomfic);
- end;
procedure TForm1.ConvertirUnixVersDos(nomfic: string);
var
f,s:textfile;
ch, ch2, chprec:char;
cr,lf,cr2,lf2 :boolean;
begin
// Assignation du fichier en entrée
assignfile(f,nomfic);
reset(f);
// Assignation du fichier temporaire résultat (situé dans le répertoire de l'application Delphi et porte le nom temp.txt
assignfile(s,Extractfilepath(application.exename)+'\temp.txt');
rewrite(s);
// Initialisation du caractère précédent
chprec :=#0;
// Tant qu'on est pas à la fin du fichier d'entrée
while not(eof(f)) do
begin
// Lecture du fichier en entrée caractère par caractère et stockage de celui ci dans la variable ch
read(f,ch);
// si le caractère lu est "saut de ligne"
if ch = #13 then
begin
// on lit le caractère suivant du fichier entrée
read(f,ch2);
// écriture du caractère ch dans le fichier de sortie
write(s,ch);
// si le caractère ch2 est différent de "retour chariot" alors on ajute un caractère "retour chariot" dans le fichier de sortie
if ch2 <> #10 then write(s,#10);
// Ecriture du caractère ch2 dans le fichier de sortie
write(s,ch2);
// stockage du dernier caractère lu dans chprec
chprec := ch2;
end
else
begin
// Si le caractère lu est "retour chariot"
if ch = #10 then
begin
// si le caractère précédent était "saut de ligne" on écrit ch
if chprec = #13 then write(s,ch)
else
begin
// lecture du caractère suivant
read(f,ch2);
// si le caractère suivant est "saut de ligne"
if ch2 = #13 then
begin
// il faut inverser l'ordre de ch et de ch2 dans le fichier de sortie
write(s,ch2);
write(s,ch);
end
else
begin
// sinon, on ajout un "saut de ligne" et on écrit les caractères ch et ch2.
write(s,#13);
write(s,ch);
write(s,ch2);
end;
end;
end
// cas d'un caractère <> de "retour chariot" et de "saut de ligne", on écrit tout simplement le caractère dans le fichier de sortie.
else write(s,ch);
chprec := ch;
end;
end;
// fermeture des fichiers
closefile(s);
closefile(f);
// Suppression du fichier en entrée
deletefile(nomfic);
// Renommage du fichier temporaire en nomfic
renamefile(Extractfilepath(application.exename)+'\temp.txt',nomfic);
end;
// même chose en plus simple : il suffit de supprimer les caractères #13 du fichier en entrée.
procedure TForm1.ConvertirDosVersUnix(nomfic: string);
var
f,s:textfile;
ch,ch2:char;
begin
assignfile(f,nomfic);
reset(f);
assignfile(s,Extractfilepath(application.exename)+'\temp.txt');
rewrite(s);
while not(eof(f)) do
begin
read(f,ch);
if ch = #13 then read(f,ch);
write(s,ch);
end;
closefile(f);
closefile(s);
deletefile(nomfic);
renamefile(Extractfilepath(application.exename)+'\temp.txt',nomfic);
end;
Historique
- 31 août 2004 21:48:32 :
- Correction de l'orthographe.....
Sources du même auteur
Sources de la même categorie
Commentaires et avis
|
Derniers Blogs
TECHDAYS PARIS 2012 : COMMENT SHAREPOINT A SAUVé MES TECHDAYSTECHDAYS PARIS 2012 : COMMENT SHAREPOINT A SAUVé MES TECHDAYS par ROMELARD Fabrice
Speakers : Lionel Limozin et Alain Marty La session commence par une découverte de SharePoint à travers la mise en place d'un environnement SharePoint pour la gestion des Sessions animées par BeWise. Le besoin est très ba...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice PERSPECTIVE 3.0 POUR SILVERLIGHT 5.0PERSPECTIVE 3.0 POUR SILVERLIGHT 5.0 par odewit
Je viens de publier la version 3.0 de Perspective pour Silverlight, qui regroupe un portage sous Silverlight 5.0 des fonctionnalités de Perspective 2.0, le framework 3D de haut-niveau introduit récemment et de nouveaux exemples de code. En voici la li...
Cliquez pour lire la suite de l'article par odewit TECHDAYS PARIS 2012 : TOP 10 DES BEST PRACTICES POUR SQL SERVERTECHDAYS PARIS 2012 : TOP 10 DES BEST PRACTICES POUR SQL SERVER par ROMELARD Fabrice
Speaker : Nadia Ben El Kadi Configuration machine La session commence par la toute première question à se poser lors de la mise en place d'environnement SQL Server, la configuration des machines : Type de mac...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2012 : KINECT + OFFICE 365 UN BON GESTE POUR VOTRE SITECHDAYS PARIS 2012 : KINECT + OFFICE 365 UN BON GESTE POUR VOTRE SI par ROMELARD Fabrice
Speakers : Fabrice Barbin, Samuel Blanchard, Julien Lo Presti Titre Prometteur et attractif invitant à voir comment lier le composant ludique Kinect dans le cadre d'une structure IT classique, notamment au travers de la plat...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2012 : PLEINIèRE DU PREMIER JOURTECHDAYS PARIS 2012 : PLEINIèRE DU PREMIER JOUR par ROMELARD Fabrice
KeyNotes du premier jour pour les développeurs. La session est principalement axée sur une des principales directions prise par Microsoft à travers tous ses nouveaux produits : Cloud privé ou public (Solution Azure) ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|