Int data: versionconvert (DWORD high, DWORD low)
{
Int r = 0;
R + = high> 16;
R <= 4;
R + = high & 0x0000ffff;
R <= 4;
R + = low> 16;
R <= 4;
R + = low & 0x0000ffff;
Return R;
}
Int data: versionconvert (cstring V)
{
Int r = 0;
Try
{
If (V. getlength () <= 0)
Throw 1;
V. makeupper ();
Do
{
If (R! = 0)
R <= 4;
Char c = V. getat (0 );
If (C> = 'A' & C <= 'F ')
R + = (c-'A') + 10;
Else
R + =: atoi (& C );
V = V. Right (V. getlength ()-2 );
} While (! V. isempty ());
}
Catch (...)
{
}
If (r <= 0x0fff)
R = 0;
Return R;
}
Cstring data: versionconvert (int v)
{
Cstring r = "";
Try
{
If (v <= 0)
Throw 1;
Int begin = 3;
Do
{
If (! R. isempty ())
R + = ".";
Int T = V> (4 * begin );
Cstring TMP;
TMP. Format ("% x", t );
R + = TMP;
V = V-(T <(4 * begin ));
Begin --;
If (begin <0)
Break;
} While (V> = 0 );
}
Catch (...)
{
}
Return R;
}
Tchar path [max_path];
: Getmodulefilename (null, path, max_path );
DWORD dwsize = getfileversioninfosize (path, null );
Tchar * versionbuf = new tchar [dwsize];
If (! Getfileversioninfo (path, null, dwsize, versionbuf ))
Throw tools: exception ("failed to get the local program version ");
Vs_fixedfileinfo * versioninfo;
Uint usize = sizeof (versioninfo );
Verqueryvalue (versionbuf, "//", (lpvoid *) & versioninfo, & usize );
Versionclient = versionconvert (versioninfo-> dwfileversionms, versioninfo-> dwfileversionls );