Inno Setup syntaxe de FilePath [Résolu/Fermé]

Signaler
Messages postés
16
Date d'inscription
vendredi 7 avril 2017
Statut
Membre
Dernière intervention
22 janvier 2020
-
Messages postés
39708
Date d'inscription
mercredi 11 avril 2007
Statut
Modérateur
Dernière intervention
2 décembre 2020
-
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

Messages postés
30442
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
2 décembre 2020
3 042
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....

Cordialement, 
Jordane                                                                 
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 76687 internautes nous ont dit merci ce mois-ci

Messages postés
16
Date d'inscription
vendredi 7 avril 2017
Statut
Membre
Dernière intervention
22 janvier 2020

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.
Messages postés
30442
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
2 décembre 2020
3 042
Bizarrement mon code en texte est apparu automatiquement"balisé", mais incorrectement...

Ce n'est pas bizarre..... c'est moi qui te l'ai édité....
Messages postés
16
Date d'inscription
vendredi 7 avril 2017
Statut
Membre
Dernière intervention
22 janvier 2020

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
Messages postés
16
Date d'inscription
vendredi 7 avril 2017
Statut
Membre
Dernière intervention
22 janvier 2020

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
Messages postés
16
Date d'inscription
vendredi 7 avril 2017
Statut
Membre
Dernière intervention
22 janvier 2020

Euh... comment marquer "Résolu"?
Merci
Messages postés
39708
Date d'inscription
mercredi 11 avril 2007
Statut
Modérateur
Dernière intervention
2 décembre 2020
9 371