杉宫竹苑工作室

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1923|回复: 0

版本号比较函数

[复制链接]
发表于 2019-8-16 11:09:57 | 显示全部楼层 |阅读模式

正式会员享受无限制浏览网站功能和高速网盘下载,赶快加入本站吧!

您需要 登录 才可以下载或查看,没有账号?立即注册

x


  1. ;Compare version numbers.


  2. ;Syntax:
  3. ;${VersionCompare} "[Version1]" "[Version2]" $var

  4. ;"[Version1]"        ; First version
  5. ;"[Version2]"        ; Second version
  6. ;$var                ; Result:
  7.                     ;    $var=0  Versions are equal
  8.                     ;    $var=1  Version1 is newer
  9.                     ;    $var=2  Version2 is newer


  10.         Function VersionCompare
  11.         !define VersionCompare `!insertmacro VersionCompareCall`

  12.         !macro VersionCompareCall _VER1 _VER2 _RESULT
  13.                 Push `${_VER1}`
  14.                 Push `${_VER2}`
  15.                 Call VersionCompare
  16.                 Pop ${_RESULT}
  17.         !macroend

  18.         Exch $1
  19.         Exch
  20.         Exch $0
  21.         Exch
  22.         Push $2
  23.         Push $3
  24.         Push $4
  25.         Push $5
  26.         Push $6
  27.         Push $7

  28.         begin:
  29.         StrCpy $2 -1
  30.         IntOp $2 $2 + 1
  31.         StrCpy $3 $0 1 $2
  32.         StrCmp $3 '' +2
  33.         StrCmp $3 '.' 0 -3
  34.         StrCpy $4 $0 $2
  35.         IntOp $2 $2 + 1
  36.         StrCpy $0 $0 '' $2

  37.         StrCpy $2 -1
  38.         IntOp $2 $2 + 1
  39.         StrCpy $3 $1 1 $2
  40.         StrCmp $3 '' +2
  41.         StrCmp $3 '.' 0 -3
  42.         StrCpy $5 $1 $2
  43.         IntOp $2 $2 + 1
  44.         StrCpy $1 $1 '' $2

  45.         StrCmp $4$5 '' equal

  46.         StrCpy $6 -1
  47.         IntOp $6 $6 + 1
  48.         StrCpy $3 $4 1 $6
  49.         StrCmp $3 '0' -2
  50.         StrCmp $3 '' 0 +2
  51.         StrCpy $4 0

  52.         StrCpy $7 -1
  53.         IntOp $7 $7 + 1
  54.         StrCpy $3 $5 1 $7
  55.         StrCmp $3 '0' -2
  56.         StrCmp $3 '' 0 +2
  57.         StrCpy $5 0

  58.         StrCmp $4 0 0 +2
  59.         StrCmp $5 0 begin newer2
  60.         StrCmp $5 0 newer1
  61.         IntCmp $6 $7 0 newer1 newer2

  62.         StrCpy $4 '1$4'
  63.         StrCpy $5 '1$5'
  64.         IntCmp $4 $5 begin newer2 newer1

  65.         equal:
  66.         StrCpy $0 0
  67.         goto end
  68.         newer1:
  69.         StrCpy $0 1
  70.         goto end
  71.         newer2:
  72.         StrCpy $0 2

  73.         end:
  74.         Pop $7
  75.         Pop $6
  76.         Pop $5
  77.         Pop $4
  78.         Pop $3
  79.         Pop $2
  80.         Pop $1
  81.         Exch $0
  82. FunctionEnd
复制代码


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|SgzyStudio

GMT+8, 2024-4-30 23:51 , Processed in 0.152667 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表