cs_philpas
Messages postés77Date d'inscriptionlundi 17 octobre 2005StatutMembreDernière intervention 4 septembre 2008
-
3 nov. 2005 à 15:38
doctorsf
Messages postés1Date d'inscriptionmercredi 8 avril 2009StatutMembreDernière intervention 7 avril 2011
-
7 avril 2011 à 09:15
Bonjour,
j'ecris un programme en delphi qui lit le contenu de fichiers textes. Simple jusque là. La structure du programme ressemble à ceci
AssignFile(A,Fichier);
Reset(A);
repeat
Readln(A,Ligne);
{traitement de "Ligne"}
until Eof(A);
CloseFile(A);
Mon problème est le suivant. Mon programme doit lire des fichiers textes qui ont été enregistré soit au format ASCII (editeur MsDos) ou soit au format UTF-8 (Notepad par exemple). Ma question est la suivante: Comment savoir si le fichier que mon programme vient d'ouvrir est au format ASCII ou au format UTF-8? Y a t-il une fonction delphi qui permet de le savoir ou une autre manière de les reconnaitre?
Merci de vos réponses
comme pour l'unicode, chaque caractere est codé sur 16bits, mais a
l'inverse de l'unicode, par exemple, "a" vaux 0061 au lieu de 61 en
ascii et 6100 en unicode.
f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 202235 3 nov. 2005 à 17:04
zut ... j'ai appuyer sur tab par inadvertance.
donc modifiont definitivement notre fonction pour qu'elle reconnaisse tout les types de fichiers texte
note que un fichier non reconnus comme Unicode ou UTF8 et soit un fichier texte ascii sois un fichier de type inconnus donc
forcement Byte, d'ou le type txAnsiOrByte.
type
TxFileType = (txAnsiOrByte,txUTF8,txUNI,txUNIBIG);
implementation
function WhatTheType(filename : string) : TxFileType;
var
F : file of byte;
sign : array [0..2] of byte;
begin
try
AssignFile(F,FileName);
Reset(F);
Read(F,sign[0],sign[1],sign[2]);
finally
close(F);
end;
if (sign[0] = $ef) and (sign[1] = $bb) and (sign[2] = $bf) then
result := txUTF8
else
cs_philpas
Messages postés77Date d'inscriptionlundi 17 octobre 2005StatutMembreDernière intervention 4 septembre 2008 4 nov. 2005 à 08:50
Je te remercie f0xi. Tes explications sont claires et en plus il y un exemple pour mon traitement de fichier. C'est parfait. Je vais donc, de ce pas, m'en inspirer grandement. Merci encore.
PS: En effet pour répondre à la 1ere réponse, je programmais en turbo pascal. Voilà pourquoi cette fameuse structure de programme "AssignFile(A,Fichier);
bla, bla, bla, CloseFile(A);". Je viens seulement de commencer à programmer en delphi. J'ai donc beaucoup de chose à découvrir. Je vais jeter un coup d'oeil sur les items que je ne connais pas.
Merci.
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_philpas
Messages postés77Date d'inscriptionlundi 17 octobre 2005StatutMembreDernière intervention 4 septembre 2008 7 nov. 2005 à 08:44
Oupsss!!!! excuse moi f0xi. C'est le 1er message où je clique sur réponse acceptée. Je pensais que l'icone "réponse acceptée" validais l'ensemble des messages et non une seule réponse. Donc excuse moi encore. Je rectifie mon erreur
doctorsf
Messages postés1Date d'inscriptionmercredi 8 avril 2009StatutMembreDernière intervention 7 avril 2011 7 avril 2011 à 09:15
Bonjour.... et oui, 6 ans après ce post interesse toujours !!!!
Excellente démonstration !! Merci.
Par contre, savez vous comment enregistrer un fichier créé à partir d'une TStringList en UTF-8 ? Car si Notepad permets d'enregistrer au format ASCII ou UTF-8 au choix (option), il semblerait que le TstringList ne le permette pas :(