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

Lazarus Pascal Discussion :

Noms de fichiers avec accents


Sujet :

Lazarus Pascal

  1. #1
    Candidat au Club
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Service public

    Informations forums :
    Inscription : Août 2013
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Noms de fichiers avec accents
    Bonjour à tous de la part d'un nouveau sur le forum.

    Ancien développeur en Turbo Pascal (c'est très ancien !!!), je fais mes premiers pas avec Lazarus et FreePascal sous Windows, pour le plaisir ...

    Je commence par un programme me permettant de sauvegarder certains dossiers et fichiers sélectionnés par des boites de dialogue.

    J'ai un gros problème avec les fichiers et les dossiers dont les noms comportent des caractères accentués.

    Par exemple, la petite procédure d'essai suivante me donne pour réponse ' inconnu ' dans le cas d'un fichier dont le nom comporte des accents, alors que le nom de fichier est bien pris en compte dans FileName.

    Je ne peux donc pas continuer le traitement qui consiste à copier le fichier dans le dossier de sauvegarde.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
      procedure SelectionFichier;
      var fd:string;
      begin
        if Form1.OpenDialog1.Execute then
          begin
            fd:=Form1.OpenDialog1.FileName;
            ShowMessage(fd); 
            if FileExists(fd) then ShowMessage(fd + ' trouvé')
                              else ShowMessage(fd + ' inconnu');
          end;
      end;
    L'unité contenant cette procédure comporte la ligne suivante :

    uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, ShellApi;J'ai cherché longuement sur Internet, mais je n'ai rien trouvé (sauf que j'ai découvert ce forum ...).

    Si quelqu'un peut m'aider ! Merci d'avance.

  2. #2
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 879
    Points : 11 378
    Points
    11 378
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Basé sur la compatibilité linux, Lazarus tolère mal ces fichiers accentués... (j'ai dû créer une session avec un nom sans accent pour pouvoir installer CodeTyphon)

    Il peut s'agir d'un problème de string UTF8 (standard Lazarus) et ANSI. Il existe dans ce cas les fonctions de conversion.

    Sinon, il existe parmi les Options du dialogue la constante ofFileMustExist qui devrait éviter le test !

  3. #3
    Membre averti
    Profil pro
    au repos
    Inscrit en
    Février 2013
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : Saint-Pierre-Et-Miq.

    Informations professionnelles :
    Activité : au repos

    Informations forums :
    Inscription : Février 2013
    Messages : 156
    Points : 331
    Points
    331
    Par défaut
    bonjour,

    essaie ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     procedure SelectionFichier;
    var fd:string;
     begin
       if Form1.OpenDialog1.Execute then
         begin
           fd:=Form1.OpenDialog1.FileName;
           ShowMessage(fd);
           if FileExists(UTF8ToAnsi(fd)) then ShowMessage(fd + ' trouvé')
                             else ShowMessage(fd + ' inconnu');
         end;
    explication :
    Le Runtime Free Pascal (RTL), et la bibliothèque de composants Free Pascal (FCL), dans les versions actuelles de FPC (jusqu'à la 2.6.x) sont ANSI, vous devrez donc convertir les chaines venant des bibliothèques Unicode, ou allant vers des bibliothèques Unicode (comme la LCL). FileExists fait partie de la RTL.

    pour en savoir plus voir ici

    Amicalement, nullosse

  4. #4
    Candidat au Club
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Service public

    Informations forums :
    Inscription : Août 2013
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Remerciements tardifs ...
    Bonjour,

    Avec beaucoup de retard, je reviens sur cette discussion.

    Je remercie Nullosse et Tourlourou pour leurs réponses qui m'ont bien aidé.

    Toutefois, tout n'est pas encore très clair pour moi.

    Je reviendrai donc rapidement à la charge.

    Amicalement.

Discussions similaires

  1. [Lazarus] [1.1] TStringGrid et noms de fichiers avec accents
    Par danucc dans le forum Lazarus
    Réponses: 2
    Dernier message: 26/04/2013, 10h18
  2. [Lazarus] [1.0.4/Win XP] Nom de fichier avec accents
    Par chris78320 dans le forum Lazarus
    Réponses: 5
    Dernier message: 09/01/2013, 13h51
  3. [PHP 5.3] Archive Phar et Nom de fichiers avec accents
    Par liliwol dans le forum Langage
    Réponses: 6
    Dernier message: 31/01/2012, 00h11
  4. nom de fichier avec accent
    Par chrono23 dans le forum C#
    Réponses: 3
    Dernier message: 30/05/2008, 14h27
  5. [DOM] Problème d'accent sur les noms de fichier avec mon parseur
    Par ujoodha dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 06/04/2006, 21h55

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