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
UNE JOLIE-HORLOGE ET PAS QU'UN PEU !UNE JOLIE-HORLOGE ET PAS QU'UN PEU ! par neodante
Pour les possesseurs d'iPhone, ça y est Bijin Tokei - qui se traduit littéralement en Français par " Jolie Horloge " - est arrivé et GRATUITEMENT s'il vous plaît ! Après la version Tokyo, Hokkaido, night club, racing, Gal, "pour les mademoiselles'", . voi...
Cliquez pour lire la suite de l'article par neodante TECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICESTECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICES par ROMELARD Fabrice
Animé par: Gaetan Bouveret et Julien Chomarat Business Connectivity Services (BCS) est dans SharePoint 2010 la version 2 de Business Data Catalog (BDC dans SharePoint 2007). Il s'agit de la solution permettant de visualiser des données provenan...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
RE : SAVEDIALOGRE : SAVEDIALOG par JulioDelphi
Cliquez pour lire la suite par JulioDelphi RE : SAVEDIALOGRE : SAVEDIALOG par zeydounnounou
Cliquez pour lire la suite par zeydounnounou RE : SAVEDIALOGRE : SAVEDIALOG par JulioDelphi
Cliquez pour lire la suite par JulioDelphi SAVEDIALOGSAVEDIALOG par zeydounnounou
Cliquez pour lire la suite par zeydounnounou
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
Comparez les prix

HTC Hero
Entre 550€ et 550€
|