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 -
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) :
Cela ne fonctionne pas, alors qu'évidemment les fichiers existent bien.
Si j'entre les chemins dans FilePath1 et FilePath2 comme ci-dessous:
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.
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
-
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....
-
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. -
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 -
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 -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
-
Bonjour
A toutes fins utiles ==> https://www.commentcamarche.net/infos/25917-marquer-un-fil-de-discussion-comme-etant-resolu/
-