2

NSISで2つの文字列をマージしようとしています。2.1.3.0と0.0.0.27269の2つの文字列があり、それらから作成したい文字列は2.1.3.27269です。

これまでの私の試みはうまくいきませんでした、これが私が試みたものです:

;;$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

どんな助けでも素晴らしいでしょう。猟師

こちらにも投稿されています:http://forums.winamp.com/showthread.php?p = 2777308#post2777308

4

1 に答える 1

4

NSISで変数を連結するには、変数を引用符で囲む必要があります。

;;$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

また、NSIS文字列関数リストを確認することもお勧めします。文字列の最初と最後の部分を取得する関数などの一部の関数は、ハードコードされたインデックスを使用して文字列を分割するよりもコードを堅牢にすることができます。

于 2011-06-02T09:42:18.323 に答える