Inno Setup syntaxe de FilePath

Résolu
Rataxes64 Messages postés 20 Statut Membre -  
baladur13 Messages postés 47306 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour à tous,
J'ai un problème de syntaxe de FilePath dans une recherche de fichiers existants qui concernent les chemins particuliers suivants
=> "Mes documents"
L'intitulé complet de ce chemin dépend du nom de l'utilisateur
=> "Program File"
L'intitulé dépend de la version de windows : avec ou sans "(x86)"
Pour cela j'a voulu passer par les balises
=> {pf32} pour Program File / Program Files (x86)
=> {userdocs} pour le chemin complet vers Mes documents

Voici mon code (en texte, car je n'ai pas su trouver quel modèle choisir) :
function InitializeSetup(): Boolean; 
var
        FilePath1: String
        FilePath2: String
        Result1: Boolean
        Result2: Boolean
        Result3: Booean
begin
        FilePath1: = '{pf32} \Chemin1\Fichier1.txt'
        FilePath2: = '{userdocs} \Chemin2\Fichier2.txt'
        Result1:= [/contents/1174-objet-filesystemobject-fso FileExists](FilePath1)
        Result2: = FileExists(FilePath2)
        Result3: = Result1 or Result2
end;

Cela ne fonctionne pas, alors qu'évidemment les fichiers existent bien.
Si j'entre les chemins dans FilePath1 et FilePath2 comme ci-dessous:

=> sous XP : c'est OK
FilePath1: = 'C:\Program Files\Chemin1\Fichier1.txt'
FilePath2: = 'C:\Documents and Settings\MonNom\Chemin2\Fichier2.txt'
=> sous W10 : le codage "(x86)" est refusé
FilePath1: = 'C:\Program Files (x86)\Chemin1\Fichier1.txt'
FilePath2: = 'C:\Documentsans Settings\MonNom\Chemin2\Fichier2.txt'


EDIT : Ajout des balises de code

Après maintes recherches je suis sans solution...
Merci à toute âme charitable de me dire où est mon erreur.

Cordialement.

5 réponses

  1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    Bonjour,

    Pour les balises de code : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

    Pour ton souci, ne serait-ce pas l'espace en trop qui pose problème ?
    FilePath1: = '{pf32} \Chemin1\Fichier1.txt'
    

    A tester :
    FilePath1: = "{pf32}\Chemin1\Fichier1.txt"
    


    edit : et les doubles quotes au lieu des simples....

    1
  2. Rataxes64 Messages postés 20 Statut Membre
     
    Bonjour,
    Bizarrement mon code en texte est apparu automatiquement"balisé", mais incorrectement...
    Le voici corrigé et balisé en Delphi

    [Code]
    function InitializeSetup(): Boolean; 
    var
            FilePath1: String
            FilePath2: String
            Result1: Boolean
            Result2: Boolean
            Result3: Boolean
    begin
            FilePath1: = '{pf32}\Chemin1\Fichier1.txt'
            FilePath2: = '{userdocs}\Chemin2\Fichier2.txt'
            Result1: = FileExists(FilePath1)
            Result2: = FileExists(FilePath2)
            Result3: = Result1 or Result2
    end;
    


    Pour répondre à Jordane45 (que je remercie de sa réaction rapide), effectivement, il n'y a pas d'espace en trop, et la syntaxe de FilePath dans l'aide indique bien le simple quote.
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Bizarrement mon code en texte est apparu automatiquement"balisé", mais incorrectement...

      Ce n'est pas bizarre..... c'est moi qui te l'ai édité....
      0
  3. Rataxes64 Messages postés 20 Statut Membre
     
    Oh! pardon Jordane45... et merci quand même.

    En fouillant encore, j'ai cru comprendre qu'utiliser ExpandConstant dans [Code] en tête de begin pourrait être une solution...

    [Code]
    function InitializeSetup(): Boolean; 
    var
            PfDir: String;
            UsDir: String;
            FilePathA: Sring;
            FilePathB: String;
            FilePath1: String
            FilePath2: String
            Result1: Boolean
            Result2: Boolean
            Result3: Boolean
    begin
            PfDir: = ExpandConstant('{pf32}')
            UsDir: = ExpandConstant('{userdocs}')
            FilePathA: = '\Chemin1\Fichier1.txt'
            FilePathB: = '\Chemin2\Fichier2.txt'        
            FilePath1: = 'PfDir + FilePathA'
            FilePath2: = 'UsDir + FilePathB'
            Result1: = FileExists(FilePath1)
            Result2: = FileExists(FilePath2)
            Result3: = Result1 or Result2
    end;


    Hélas, que néni, ça ne marche toujours pas... sauf à entrer l'intitulé exact des chemins à la mimine, et encore, seulement sous XP!
    Là, je sèche complet, et prends mon mal en patience, en attendant les secours!
    Cordialement
    0
  4. Rataxes64 Messages postés 20 Statut Membre
     
    Bonjour à tous,

    J'ai (enfin) trouvé!
    Voici le bon code ci-dessous :

    [Code]
    function InitializeSetup(): Boolean; 
    var
            PfDir: String;
            UsDir: String;
            FilePath1: String
            FilePath2: String
            Result1: Boolean
            Result2: Boolean
            Result3: Boolean
    begin
            PfDir: = ExpandConstant('{pf32}')
            UsDir: = ExpandConstant('{userdocs}')
            FilePath1: = '\Chemin1\Fichier1.txt'
            FilePath2: = '\Chemin2\Fichier2.txt'        
            Result1: = FileExists(PfDir + FilePath1)
            Result2: = FileExists(UsDir + FilePath2)
            Result3: = Result1 or Result2
    end;


    J'espère que cela évitera ma galère à d'autres ...
    Cordialement
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question