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 :

Erreur fatale lors de la complilation


Sujet :

Delphi

  1. #1
    Membre régulier
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2010
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2010
    Messages : 104
    Points : 85
    Points
    85
    Par défaut Erreur fatale lors de la complilation
    Bonjour à tous,
    Lors de la compilation j'ai ce message :
    [DCC Erreur fatale] F2438 L'encodage de texte UCS-4 n'est pas supporté. Convertissez en UCS-2 ou UTF-8
    Il n'y a aucune indication de la ligne provoquant ce message.
    Avez-vous une idée ?

    Merci de vos suggestions.

    JL

  2. #2
    Membre actif
    Homme Profil pro
    libre
    Inscrit en
    Juin 2019
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : libre

    Informations forums :
    Inscription : Juin 2019
    Messages : 205
    Points : 292
    Points
    292
    Par défaut
    Voila ce que dit l'aide de Delphi à propos de cette erreur
    Cette erreur est rencontrée lorsqu'un fichier source a un encodage UCS-4, comme indiqué par son BOM (Byte-Order-Mark). Le compilateur ne prend pas en charge la compilation de fichiers source codés en UCS-4 Unicode. Pour résoudre ce problème, convertissez le fichier source au codage UCS-2 ou UTF-8.
    Il n'y a aucune indication de la ligne provoquant ce message.
    Le BOM (Byte-Order-Mark) est situé au début du fichier 4 octets indiquant l'encodage du fichier texte.
    Pour une raison ou autre un des fichiers du projet est codé en UCS-4 ou UTF-32 et le compilateur vous demande de le changer vers l'UTF-8..la solution la plus simple c'est d'utiliser le Notepad ou son équivalent pour le convertir

  3. #3
    Membre régulier
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2010
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2010
    Messages : 104
    Points : 85
    Points
    85
    Par défaut
    Citation Envoyé par wheel Voir le message
    Voila ce que dit l'aide de Delphi à propos de cette erreur
    Le BOM (Byte-Order-Mark) est situé au début du fichier 4 octets indiquant l'encodage du fichier texte.
    Pour une raison ou autre un des fichiers du projet est codé en UCS-4 ou UTF-32 et le compilateur vous demande de le changer vers l'UTF-8..la solution la plus simple c'est d'utiliser le Notepad ou son équivalent pour le convertir
    Merci de votre réponse.
    Je l'avais déjà vue en faisant des recherches.
    Je comprends ce qu'il faut faire, mais pratiquement comment le faire ? ça je ne vois pas.
    Pouvez - vous m'aider sur ce point.

    JL

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 097
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 097
    Points : 41 087
    Points
    41 087
    Billets dans le blog
    62
    Par défaut
    Bonjour,
    L'option du menu Encodage, la partie "haute" montre l'encodage actuel, la partie "basse" permet une conversion.
    Après, selon la version de Delphi, il faudra choisir entre ANSI ou les UTF x supportés

  5. #5
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 753
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 753
    Points : 13 338
    Points
    13 338
    Par défaut
    On peut modifier l'encodage depuis Delphi ; en bas de la fenêtre d'édition de l'unité concernée.

  6. #6
    Membre régulier
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2010
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2010
    Messages : 104
    Points : 85
    Points
    85
    Par défaut
    Merci de vos réponses, mais je ne vois toujours pas la manip à faire

    Faut-il éditer et modifier les octets du BOM, si oui comment faire (éditeur hexa décimal ?)

    Citation Envoyé par Andnotor Voir le message
    On peut modifier l'encodage depuis Delphi ; en bas de la fenêtre d'édition de l'unité concernée.
    Andnotor me dit qu'on peut le faire en modifiant l'encodage depuis Delphi, mais là aussi je ne vois pas comment faire pratiquement.
    où se trouve ce menu ? J'ai ouvert toutes les unités et je ne vois rien en bas de ces unités

    ça doit être évident mais désolé je ne vois pas.

    JL

  7. #7
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 560
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 560
    Points : 25 156
    Points
    25 156
    Par défaut
    Utilise Notepad++, il proposera la conversion, même NotePad de Win10 peut aussi te permettre de changer l'encodage, d'ailleurs, cet encodage rare sera surement accompagné d'un message.

    Ce fichier contient des accents, des caractères spéciaux, langues étrangères ?

  8. #8
    Membre actif
    Homme Profil pro
    libre
    Inscrit en
    Juin 2019
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : libre

    Informations forums :
    Inscription : Juin 2019
    Messages : 205
    Points : 292
    Points
    292
    Par défaut
    Faut-il éditer et modifier les octets du BOM, si oui comment faire (éditeur hexa décimal ?)
    Ce n'est pas uniquement le bom mais c'est tout le contenu qui doit être changé un caractère de UTF32 est codé sur 4 octets et celui de UTF8 est variable, il est possible de le faire dans un petit projet premièrement tester la présence du marquer UTF32 et après utiliser UCS4StringToUnicodeString pour la conversion en format texte standard et à la fin enregistrer sous le format utf8


    Créer un copie de votre projet et tester ce code sur l'ensemble des fichiers ...

    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
     const UTF32BE: array[0..3] of byte = (0,0,$FE,$FF);
          UTF32LE: array[0..3] of byte = ($FF,$FE,0,0);
    var
      BOM: Int32;
      S, Txt:string;
      St:TFilestream;
      R, Len: Integer;
      Us:UCS4String;
      Bins: TBytes;
    begin
       if not PromptForFileName(S)  then
          Exit;
       St := TFilestream.Create(S, fmOpenReadWrite);
       try
           if St.Read(BOM, 4) = 4 then
           begin
     
             if BOM = Int32(UTF32BE) then
             begin
                 Showmessage('UTF32 BE  détecté - non converti');
             end;
             if BOM = Int32(UTF32LE) then
             begin
                 Len := St.Size div SizeOf(UCS4Char) - 1;
                 SetLength(Us, Len);
                 St.Read(Us[0], Len * SizeOf(UCS4Char));
     
                 St.Size := 0;
     
                 Txt := UCS4StringToUnicodeString(Us);
                 Bins := [$EF, $BB, $BF];
                 St.WriteBuffer(Bins, 3);
                 Bins := TEncoding.UTF8.GetBytes(Txt);
                 St.WriteBuffer(Bins, Length(Bins));
                 Showmessage('UTF32 LE fichier converti');
             end;
           end;
       finally
         St.Free;
       end;
    end;

    Andnotor me dit qu'on peut le faire en modifiant l'encodage depuis Delphi, mais là aussi je ne vois pas comment faire pratiquement.
    Un clic droit dans l’éditeur et choisissez "Format de fichier" en tout cas ça n'a pas d'effet si je change vers UTF32 je n'est pas cette erreur .

  9. #9
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 560
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 560
    Points : 25 156
    Points
    25 156
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Bins := [$EF, $BB, $BF];
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Bins := TEncoding.UTF8.GetPreamble();

  10. #10
    Membre régulier
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2010
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2010
    Messages : 104
    Points : 85
    Points
    85
    Par défaut
    Merci de votre aide, j'ai résolu le problème en passant en UTF-8 avec Nopepad++

    JL

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

Discussions similaires

  1. Erreur fatale lors de la configuration d'un modèle GMF
    Par marwa21 dans le forum Eclipse Modeling
    Réponses: 2
    Dernier message: 14/04/2010, 23h48
  2. Eviter les erreurs fatales lors d'un parsing
    Par kij dans le forum Format d'échange (XML, JSON...)
    Réponses: 6
    Dernier message: 09/03/2010, 10h36
  3. [Erreur fatale] lors de la compilation
    Par GSXR1000 dans le forum EDI
    Réponses: 3
    Dernier message: 27/10/2008, 22h38
  4. erreur fatale lors de l'installation de PostgreSQL
    Par caro_caro dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 13/02/2008, 18h51
  5. Erreur fatale lors du chargement d'un formulaire
    Par oldergod dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 12/11/2007, 14h33

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