IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Delphi Discussion :

Lecture/écriture de fichiers UTF 16 LE


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Par défaut Lecture/écriture de fichiers UTF 16 LE
    Bonjour à tous,

    je cherche à lire et écrire des fichiers textes au format Unicode UTF16 Little Endian avec Delphi 7, mais je rencontre quelques problèmes...

    Tous les caractères de ce fichier font partie du jeu ASCII, mais lorsque je les lis, cela me donne des trucs bizarres, genre "ÿ&¬HH"...

    Comment convertir une chaîne unicode vers une chaîne normale? Et comment lire/écrire des fichiers dans ce format?


    Merci d'avance

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2003
    Messages : 582
    Par défaut
    je crois qu'en utilisant les WideString dans delphi...et les TFilestream...

    j'imagine que WideCharToStrVar() sera surment ton ami?

    Citation Envoyé par Aide de Delphi
    Wide strings are strings composed of 16-bit Unicode characters
    Bon, je suis peut-être à côté de la traque?
    Comment dupliquer un disque...ça vous intéresse?
    Tutoriel et code source delphi ici

  3. #3
    Membre Expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Par défaut
    Non, ça à l'air pas mal... enfin c'est un bon début!

    et comment on lit un de ces fichiers ligne par ligne en stockant chaque ligne dans une WideString?

    Merci de ton aide

  4. #4
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2003
    Messages : 582
    Par défaut
    Tu peux m'envoyer un bout du fichier à lire... j'en ai pas sous la main ....
    ca va aider beaucoup...
    Comment dupliquer un disque...ça vous intéresse?
    Tutoriel et code source delphi ici

  5. #5
    Membre Expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Par défaut
    Voilu

    ça ne contient que de l'ASCII, mais si tu l'ouvre avec un edi hexa, tu verras que les caractères sont sur 2 octets
    Fichiers attachés Fichiers attachés

  6. #6
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2003
    Messages : 582
    Par défaut
    Désolé mais je ne suis pas capable de downloader ton fichier...

    Donc voici ce que ca pourrait donner...
    La fonction de lecture lit un fichier au complet et met toutes les
    ligne dans un TStringList....

    pour la sauvegarde, on Reconverti en WideString avant la sauvegarde.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
     
     
    //=======================================================
    //=== Lecture d'un fichier sous forme WideString et met toutes les lignes
    //=== disponible dans un TStringList.
    procedure LectureUTF16LE(FileName:string;ItemsListe:TStrings);
    var
        TempStream:TMemoryStream;
        TempStr:string;
    begin
        TempStream:=TMemoryStream.Create();
        TempStream.LoadFromFile(FileName);
        TempStream.Position:=0;
        try
            TempStr:=WideCharToString(TempStream.Memory );
            ItemsListe.Text:=TempStr;
        finally
            TempStream.Free;
        end;
    end;
     
    //=======================================================
    //=== Ecrit le contenue d'un TString dans un fichier sous forme WideString
    procedure EcritureUTF16LE(FileName:string;ItemsListe:TStrings);
    var
        TempStream:TMemoryStream;
        Buffer:pWideChar;
        SizeWC:Cardinal;
    begin
        TempStream:=TMemoryStream.Create();
        SizeWC:=(Length(ItemsListe.Text)+1)*SizeOf(WideChar);
        Buffer:=AllocMem(SizeWC);
        try
            StringToWideChar( ItemsListe.text,Buffer,SizeWC);
            TempStream.Write(Buffer[0],SizeWC);
            TempStream.SaveToFile(FileName);
        finally
            freeMem(Buffer);
            TempStream.Free;
        end;
    end;
     
    //========================================================
    //=== Exemple d'utilisation:
    procedure TForm1.Button1Click(Sender: TObject);
    var
        AllLine:TStringList;
    begin
        AllLine:=TStringList.Create;
        try
            AllLine.Add('allo');
            AllLine.Add('Toi');
            AllLine.Add('Merci');
            EcritureUTF16LE('c:\test.txt',AllLine);
     
            LectureUTF16LE('c:\test.txt',AllLine);
        finally
            AllLine.Free;
        end;
    end;
    Comment dupliquer un disque...ça vous intéresse?
    Tutoriel et code source delphi ici

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 16
    Dernier message: 28/02/2011, 22h10
  2. Lecture/écriture de fichiers INI
    Par albertgl dans le forum MATLAB
    Réponses: 4
    Dernier message: 23/01/2010, 15h33
  3. Lecture/écriture de fichiers de configuration
    Par Matthieu Brucher dans le forum Boost
    Réponses: 13
    Dernier message: 10/11/2008, 19h31
  4. [VS2005]lecture/écriture dans fichier binaire
    Par shadowmoon dans le forum Windows Forms
    Réponses: 10
    Dernier message: 25/09/2007, 17h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo