Wednesday, October 04, 2006 6:44 PM
kkchan
Program to compare product version
I was preparing my company HR software product for Microsoft Platform Test for ISV in order to get Microsoft Certified Partner status.
One of the elective requirement must be complied by our application is Requires SQL Server 2000 SP3 or later. Due to this, I wrote an simple program to parse product version (e.g. 8.00.760) and compare with other product version value.
Sample :
?dChkVer('8.00.760', '8.00.2338') && Return 'A'
?dChkVer('8.00.760', '8.00.110') && Return 'B'
?dChkVer('8.00.760', '8.00.760') && Return 'S'
*)Return Value : 1. 'A' - tcVersionToCompare is later than tcVersion
*) 2. 'B' - tcVersionToCompare is earlier than tcVersion
*) 3. 'S' - tcVersionToCompare is same as tcVersion
FUNCTION dChkVer
LPARAMETERS tcVersion AS String, tcVersionToCompare AS String
LOCAL lnMajor AS Integer, ;
lnMinor AS Integer, ;
lnBuild AS Integer, ;
lnMajor2 AS Integer, ;
lnMinor2 AS Integer, ;
lnBuild2 AS Integer, ;
lnPos AS Integer, ;
lnPos2 AS Integer, ;
lcResult AS String
lnPos = AT('.', tcVersion, 1)
lnPos2 = AT('.', tcVersion, 2)
lnMajor = VAL(LEFT(tcVersion, lnPos + 1))
lnMinor = VAL(SUBSTR(tcVersion, lnPos + 1, lnPos2- lnPos))
lnBuild = VAL(SUBSTR(tcVersion, lnPos2 + 1))
lnPos = AT('.', tcVersionToCompare , 1)
lnPos2 = AT('.', tcVersionToCompare , 2)
lnMajor2= VAL(LEFT(tcVersionToCompare , lnPos + 1))
lnMinor2= VAL(SUBSTR(tcVersionToCompare , lnPos + 1, lnPos2- lnPos))
lnBuild2= VAL(SUBSTR(tcVersionToCompare , lnPos2 + 1))
DO CASE
CASE lnMajor2 > lnMajor
lcResult = 'A'
CASE lnMajor2 = lnMajor AND lnMinor2 > lnMinor
lcResult = 'A'
CASE lnMajor2 = lnMajor AND lnMinor2 = lnMinor AND lnBuild2 > lnBuild
lcResult = 'A'
CASE lnMajor2 = lnMajor AND lnMinor2 = lnMinor AND lnBuild2 = lnBuild
lcResult = 'S'
OTHERWISE
lcResult = 'B'
ENDCASE
RETURN lcResult
If anyone has simpler way for this function and willing to share, please don't hesitate to email me. :)
Filed Under:
Visual FoxPro