2011-06-01 2 views
2

J'essaie de fusionner deux chaînes ensemble dans NSIS. J'ai deux chaînes 2.1.3.0 et 0.0.0.27269 et la chaîne que je veux créer d'eux est 2.1.3.27269NSIS concaténant une partie de deux chaînes

Mes tentatives jusqu'ici ont pas travaillé, voici ce que j'ai essayé:

;;$VERSION  is defined with 2.1.3.0 
;;$FILEVERSION2 is defined with 0.0.0.27269 

;;debug 
DetailPrint ${VERSION} 
DetailPrint ${FILEVERSION} 

;;attempt, also it doesn't say what the variables $R0-$R2 are after values 
;;copied into them, is that normal? 
StrCpy $R0 ${FILEVERSION2} 5 -5 
StrCpy $R1 ${VERSION} -2 
StrCpy $R2 $R1"."$R0 

DetailPrint $R2 ;;this doesn't print a value, only prints "$R2" 
!define FILEVERSION3 $R2 

Toute aide serait géniale. Hunter

également affiché ici: http://forums.winamp.com/showthread.php?p=2777308#post2777308

Répondre

4

Pour concaténer variables NSIS vous avez besoin de les envelopper dans des guillemets.

;;$VERSION  is defined with 2.1.3.0 
;;$FILEVERSION2 is defined with 0.0.0.27269 

;;debug 
DetailPrint ${VERSION} 
DetailPrint ${FILEVERSION} 

StrCpy $R0 ${FILEVERSION2} 5 -5 
StrCpy $R1 ${VERSION} -2 

; This concatenates the strings together with a dot 
StrCpy $R2 "$R1.$R0" 

DetailPrint $R2 
!define FILEVERSION3 $R2 

Il pourrait aussi payer pour avoir un coup d'oeil par la NSIS string functions list. Certaines des fonctions telles que celles qui permettent d'obtenir la première et la dernière partie des chaînes peuvent rendre votre code plus robuste que de séparer des chaînes à l'aide d'index codés en dur.

+0

merci pour l'aide. J'ai testé cela et cela ne fonctionne toujours pas, la raison pour laquelle je crois est que j'essaie de manipuler les variables créées par! Define. Cette méthode fonctionne pour les variables utilisateur. Ce que j'ai fini par faire était d'écrire un petit exécutable pour passer les chaînes à la compilation. –

Questions connexes