Nous sommes le Lun 23 Juin, 2025 16:12
Supprimer les cookies

Page 3 sur 4Précédent 1, 2, 3, 4 SuivantPortabliser une application ?

Image Image Forum dédié à notre projet de clé USB nomade libre sous Windows

Ven 26 Mai, 2006 19:56

Merci beaucoup vous deux !

C'est vraiment sympas le NSIS , bien que c'est vraiment différent du C/C++, je m'y perd un peu :|
danyl

Messages : 21

Sam 27 Mai, 2006 12:02

salut à tous :)

Me revoilà avec un soucis:p

voilà ce que j'ai fait :

Code: Tout sélectionner
ouverture_reg:   
      ClearErrors
      FileOpen $0 "$EXEDIR\${SETTINGSDIR}\reg.txt" "r"
      StrCpy $n 1 ;
         Goto boucle_reg_debut
   
   boucle_reg_debut:
      FileRead $0 $2
      IfErrors LaunchNow

        ${registry::SaveKey} "$2" "${BACKUPDIRECTORY}\${CUTNAME}_$n.reg" "/G=1 /D=2"  $R0
      IntOp $n $n + 1
         Goto boucle_reg_debut


En principe : il y a d'abord l'ouverture de reg.txt (ca ca fonctionne) , initialisation de $n à 1 puis on va dans la boucle ...

là, si j'ai bien compris fileread, il lit mon fichier ligne par ligne, la ligne etant enregistrée dans $2. Si il n'y a plus rien à lire, je vais dans LaunchNow.

Sinon, j'enregistre cette fameuse ligne dans un fichier avec le numero de la ligne ($n).

J'incremente n et je retourne au début de la boucle ...

Donc $n est bien incrémenté, les lignes sont bien lue les unes après les autres, seulement, une fois la boucle finie, il n'y a que le dernier fichier qui est créé, par exemple XX_20.reg (si il y a 20 clés dans reg.txt).

Tous les autres passent à la trappe. Vous auriez une idée ?
danyl

Messages : 21

Sam 27 Mai, 2006 15:24

danyl a écrit:salut à tous :)
...
Code: Tout sélectionner
ouverture_reg:   
      ClearErrors
      FileOpen $0 "$EXEDIR\${SETTINGSDIR}\reg.txt" "r"
      StrCpy $n 1 ;
         Goto boucle_reg_debut
   
   boucle_reg_debut:
      FileRead $0 $2
      IfErrors LaunchNow

        ${registry::SaveKey} "$2" "${BACKUPDIRECTORY}\${CUTNAME}_$n.reg" "/G=1 /D=2"  $R0
      IntOp $n $n + 1
         Goto boucle_reg_debut



Le problème, je croit, c'est que FileRead lit bien de fichier ligne par ligne. Seulement il le lit toutes les lignes dans chaque boucles de 1 à n, et la valeur prise en compte par FileRead est la dernière. Celle de la dernière ligne. Par contre je ne comprend toujours pas comment tu peux sortir de cette boucle.
Au lieu de FileRead, il faut que tu utilises une fonction qui permet de lire une ligne bien précise dans ton fichier, à chaque boucle tu vas lui dire de lire la ligne qui a le même rang que la boucle.
La fonction dont tu as besoin : Read_from_text_file_line_number.
Sauf mention contraire, le message ci-dessus, ses erreurs et ses fautes d'orthographes n'engagent que son auteur.
Tuxmouraille

Messages : 1044

Sam 27 Mai, 2006 17:44

ok, merci ca à l'air de bien fonctioner.

donc maintenant, ca donne ca :

Code: Tout sélectionner
   boucle_debut_reg:
      StrCmp $n 5 LaunchNow
      Push $n ;line number to read from
      Push "$EXEDIR\${SETTINGSDIR}\reg.txt"
      Call ReadFileLine
      Pop $0
      # Copie & suppression des entrées dejà existantes
        ${registry::SaveKey} $0 "${BACKUPDIRECTORY}\${CUTNAME}_$n.reg" "/G=1 /D=2"  $R0
      IntOp $n $n + 1
      Goto boucle_debut_reg


$0 me retourne bien le contenu de chaque ligne.

Par contre, je me demandais si au lieu de faire ca :

StrCmp $n 5 LaunchNow

On ne pouvais pas arrêter la boucle lorsqu'il n'y a plus rien à lire ?

J'ai essayé en mettant : StrCmp $0 "" LaunchNow en dessous de Pop $0 mais ca n'a pas l'air de fonctionner.

et bizzarement, registry::SaveKey ne me sauvegarde plus rien du tous dans les fichiers .reg :S je suppose que ca doit pas être grand chose, je continue de chercher...

[edit] par contre, si je remplace $0 par une clé quelconque, ca fonctionne tout a fait correctement :/

[edit] donc en mettant $0 $R0 me retourne 1 (erreur donc).

[edit] Ce que je capte pas c'est qu'avec Reg Rapper, il utilise ca avec des variables sans problème :(

[edit] trouvé l'origine du soucis : en fait $0 prend en compte un retour à la ligne après la fin de ligne, plus qu'à trouver comment corriger

[edit] Voilà j'ai trouvé cette fonction de remplacement. Elle fonctionne, sauf que si je remplace $\n par quelque chose d'autre , ca fonctionne pas, il me prend pas en compte le $\n (j'ai essayé \n aussi), vous avez une idée ?
danyl

Messages : 21

Dim 28 Mai, 2006 11:28

Ok je commence à comprendre :
FileRead fonctionne bien en fait, pas besoin de Read_from_text_file_line_number.

Le soucis est d'enlever le retour a la ligne qui se case à chaque fin de ligne , sauf la derniere bien sur, puisqu'après il n'y a rien, voilà pourquoi seule la derniere ligne etait enregistrée.

Plus qu'à enlever le retour a la ligne qui se case à chaque fin de ligne...

[edit] Problème résolu avec la fonction Trim :)

Est ce que vous pourriez m'en dire plus (son but) sur la fonction GetParameters que vous utilisez dans vous scripts ?
danyl

Messages : 21

Dim 28 Mai, 2006 15:18

Ben, en fait certaines applications peuvent être lancée avec des paramètres, et cette fonction GetParameters, permet juste de pouvoir les lui passer même au travers du lanceur.
"Heureux l’étudiant qui comme la rivière peut suivre son cours sans quitter son lit" -- Dicton étudiant
mageti

Messages : 234
Géo : Valenciennes pdt les vacances, Bordeaux sinon

Dim 28 Mai, 2006 19:05

Ah ok merci :D
danyl

Messages : 21

Mar 30 Mai, 2006 11:25

Bonjour,

Voici une premiere version fonctionnelle : ici .

qu'en dites vous ?
danyl

Messages : 21

Mar 30 Mai, 2006 11:49

Salut danyl,
Ce serait sympa pour tout le monde que tu sois un peu plus précis sur ce que tu proposes en téléchargement. Une petite explication serait la bienvenue pour aiguiller les utilisateurs.
Merci par avance, et bravo pour t'atteler à NSIS.
Un "tiens" vaut mieux que deux "tu l'auras".
pseudo wengo : stefpaillet
sarkos

Messages : 708
Géo : Marseille

Mar 30 Mai, 2006 12:10

Salut,

Aucun soucis, je poste une description dans la soiré :)
danyl

Messages : 21

Qui est en ligne ?

Utilisateur(s) parcourant actuellement ce forum : Aucun utilisateur inscrit