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 :

[Linux] La fonction système ChangeFileExt ne fonctionne pas (ou je suis vraiment mauvais ?) [Lazarus]


Sujet :

Lazarus Pascal

  1. #1
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 729
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 729
    Points : 15 133
    Points
    15 133
    Par défaut [Linux] La fonction système ChangeFileExt ne fonctionne pas (ou je suis vraiment mauvais ?)
    ou je n'ai pas les yeux en face des trous ?


    Bonsoir, et regardez :

    Nom : changefileext_kc.png
Affichages : 315
Taille : 12,4 Ko

    C'est ex-ac-te-ment comme si la ligne ChangeFileExt( n'existait pas.

    Alors bon, j'ai réécrit la fonction et là, c'est bon :

    Nom : changefileext_ok.png
Affichages : 304
Taille : 15,8 Ko

    Le temps que j'ai encore perdu avec cette c0nn3r13, même pas je vous raconte,

    Pensez-y, quand vous coderez vos machins…

    EDIT : je ne voulais pas mourir idiot alors j'ai démarré une machine virtuelle XP SP2 avec un Laz 1.8 et le problème est identique, ouf !

    Nom : changefileext_sous_xp.png
Affichages : 271
Taille : 16,6 Ko


    EDIT2 : pour faciliter la vie de ceux qui voudraient tester, copiez/collez ce qui suit dans la proc d'un bouton, ou du FormCreate, puis F9 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    var   
      tmpfile: string;
    begin
      tmpfile := GetTempFileName(GetTempDir, 'abc');
     
      ChangeFileExt(tmpfile, '.jpg');
      // décommenter, au choix, dessus ou dessous (et commenter l'autre), pour voir ce qui se passe ou pas.
      //tmpfile := copy(tmpfile, 1, length(tmpfile)-length(ExtractFileExt(tmpfile))) + '.jpg';
     
      ShowMessage(tmpfile);
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  2. #2
    Membre confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2013
    Messages
    343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2013
    Messages : 343
    Points : 536
    Points
    536
    Billets dans le blog
    2
    Par défaut ChangeFileExt() est une fonction
    Prototype de ChangeFileExt

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    function ChangeFileExt(const FileName, Extension: RawByteString): RawByteString;
    Je pense que çà fonctionnera mieux avec ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     tmpfile := GetTempFileName(GetTempDir, 'abc');
     tmpfile :=  ChangeFileExt(tmpfile, '.jpg');
     Showmessage(tmpfile);
    Je suppose que vous avez connu un ChangeFileExt() sous forme d'une procédure ou d'une fonction avec un prototype de la forme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    function ChangeFileExt(var FileName: RawByteString; const Extension: RawByteString): boolean; 
     
    procedure ChangeFileExt(var FileName: RawByteString; const Extension: RawByteString);

  3. #3
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 729
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 729
    Points : 15 133
    Points
    15 133
    Par défaut
    Bonsoir,

    Bien vu !

    Je dois donc commencer à devenir mauvais, la solution proposée ne m'ayant absolument pas effleuré l'esprit...

    Faut dire aussi que l'aide n'est pas d'une grande aide, qu'on en juge :
    Citation Envoyé par aide Lazarus
    ChangeFileExt changes the file extension in FileName to Extension.
    En lisant ça, on se dit que la manière dont j'ai écrit ma ligne ça aurait dû le faire, un peu comme quand on écrit inc(i, nbre).

    Regardez la différence avec ExtractFileDir :
    Citation Envoyé par aide Lazarus
    ExtractFileDir returns only the directory part of FileName, including a driveletter.
    Une fonction change directement, l'autre retourne une chaîne modifiée,

    Bon, allez, je suis mauvais, va falloir que je songe à me ranger, en attendant, mon besoin tient sur une ligne, du coup :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tmpfile := ChangeFileExt(GetTempFileName(GetTempDir, 'abc'), '.jpg');


    Merci, bye-bye,
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

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

Discussions similaires

  1. TALEND : La fonction Export / Import ne fonctionne pas
    Par chebdo dans le forum Installation, migration et administration
    Réponses: 2
    Dernier message: 30/05/2011, 17h03
  2. [SQL] Fonction SUM qui ne fonctionne pas !
    Par nigg4z dans le forum PHP & Base de données
    Réponses: 15
    Dernier message: 11/10/2007, 16h20
  3. ma fonction avec FTP ne fonctionne pas
    Par DIE dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 01/09/2007, 23h51
  4. [Système] mkdir ne fonctionne pas
    Par Invité dans le forum Langage
    Réponses: 16
    Dernier message: 02/03/2007, 10h33
  5. Fonction While {} qui ne fonctionne pas
    Par zoom61 dans le forum Langage
    Réponses: 3
    Dernier message: 15/11/2006, 12h17

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