1.以下代码:
TCHAR st[]=_T("6.001.35");
我现在要用st中的值与5.06比较
if (st>5.06) 不行
请问如何做?
2.某文件有文件版本号:5.50.4134.600,产品版本号:1.0.3705.12
现已将文件信息读入到vsf变量中,但是其中的vsf.dwFileVersionLS和vsf.dwProductVersionLS的值一样这是怎么回事?另外如何取得产品版本号中的3705??
TCHAR st[]=_T("6.001.35");
我现在要用st中的值与5.06比较
if (st>5.06) 不行
请问如何做?
2.某文件有文件版本号:5.50.4134.600,产品版本号:1.0.3705.12
现已将文件信息读入到vsf变量中,但是其中的vsf.dwFileVersionLS和vsf.dwProductVersionLS的值一样这是怎么回事?另外如何取得产品版本号中的3705??
解决方案 »
- 对话框加完工具栏后怎么响应?(在线等)
- 有做过串口控制伺服电机的没
- 透明窗体刷新问题
- 我想为视图文件加个函数,怎么加?
- VC 断点设置不了的问题
- 有关 MFC SDI 中的m_pMainWnd的一个问题
- 请问用ATL编写的IE Toolbar,怎么选中其中一块儿文本呢?
- 《VC++数字图像处理(第二版)》这本书该怎么看----欢迎有志者讨论
- 求教:VC+ADO+SQL SERVER,查询一段时候后总会出错:Run Time Error.程序非正常结束。会是什么造成的???请高手指点。
- 高分求教Dll问题
- 初用SDK,但第一个程序编译就出错。打击大了……
- 如何让视图中的编辑控件(CEdit)有下陷的效果!!
int main()
{
TCHAR st[]=_T("6.001.35");
double dvalue = atof(str1);
if ( dvalue >5.6)
cout<<"True!"<<endl;
}
* as strings can be converted to numeric values
* using the atof, atoi, and atol functions.
*/#include <stdlib.h>
#include <stdio.h>void main( void )
{
char *s; double x; int i; long l; s = " -2309.12E-15"; /* Test of atof */
x = atof( s );
printf( "atof test: ASCII string: %s\tfloat: %e\n", s, x ); s = "7.8912654773d210"; /* Test of atof */
x = atof( s );
printf( "atof test: ASCII string: %s\tfloat: %e\n", s, x ); s = " -9885 pigs"; /* Test of atoi */
i = atoi( s );
printf( "atoi test: ASCII string: %s\t\tinteger: %d\n", s, i ); s = "98854 dollars"; /* Test of atol */
l = atol( s );
printf( "atol test: ASCII string: %s\t\tlong: %ld\n", s, l );
}
Outputatof test: ASCII string: -2309.12E-15 float: -2.309120e-012
atof test: ASCII string: 7.8912654773d210 float: 7.891265e+210
atoi test: ASCII string: -9885 pigs integer: -9885
atol test: ASCII string: 98854 dollars long: 98854
TCHAR st[]=_T("6.001.35");
float fVer = 5.06;
CString strVer;
strVer.Format( %f", fVer );
if( strcmp( st, strVer ) > 0 )
...2、取版本的完整方法:
#include <winver.h>
#pragma comment ( lib, "version.lib" )void GetVer( int &iVerMajor, int &iVerMinor, int &iVerBuildTimes )
{
char szFile[MAX_PATH];
GetModuleFileName( NULL, szFile, sizeof(szFile) );VS_FIXEDFILEINFO *lpInfo;
DWORD dw;
DWORD dwSize = GetFileVersionInfoSize( szFile, &dw );LPVOID lpData = (LPVOID)new char[dwSize];
GetFileVersionInfo( szFile, 0, dwSize, lpData );UINT ui;
VerQueryValue( lpData, "\\", (LPVOID*)&lpInfo, &ui );iVerMajor = HIWORD( lpInfo->dwFileVersionMS );
iVerMinor = LOWORD( lpInfo->dwFileVersionMS );
iVerBuildTimes = LOWORD( lpInfo->dwFileVersionLS );delete [] lpData;
}
2.我要的是精确比较。
3.关于取文件产品版本号,我的代码:
HRESULT hr;
VS_FIXEDFILEINFO vsf; hr = GetFileVersion (szFileName, &vsf); if (FAILED(hr))
{
throw hr;
}
//我的文件版本号为5.50.4134.600
//产品版本号为1.0.3705.12
DWORD dwFileVersionLS = vsf.dwFileVersionLS >> 16;
//这样dwFileVersionLS中的值为4134
//我想得到产品版本号中的3705如何得到?
//用vsf.dwProductVersionLS不行,因为它的值跟dwFileVersionLS一样,怎么解决?//GetFileVersion函数HRESULT GetFileVersion (LPTSTR filename, VS_FIXEDFILEINFO *pvsf)
{
DWORD dwHandle;
HRESULT hrReturn = S_OK;
char* pver = NULL; try
{
DWORD cchver = GetFileVersionInfoSize(filename,&dwHandle);
if (cchver == 0)
{
throw LastError();
}
pver = new char[cchver]; if (!pver)
{
throw E_OUTOFMEMORY;
} BOOL bret = GetFileVersionInfo(filename,dwHandle,cchver,pver);
if (!bret)
{
throw LastError();
}
UINT uLen;
void *pbuf;
bret = VerQueryValue(pver,_T("\\"),&pbuf,&uLen);
if (!bret)
{
throw LastError();
}
memcpy(pvsf,pbuf,sizeof(VS_FIXEDFILEINFO));
}
catch (HRESULT hr)
{
hrReturn = hr;
} delete[] pver;
return hrReturn;
}HRESULT LastError ()
{
HRESULT hr = HRESULT_FROM_WIN32(GetLastError());
if (SUCCEEDED(hr))
{
hr = E_FAIL;
}
return hr;
}
来晚了!
这里也有很简单的问题可得分的:
http://expert.csdn.net/Expert/TopicView1.asp?id=1189886
Convert strings to double (atof), integer (atoi, _atoi64), or long (atol).double atof( const char *string );int atoi( const char *string );__int64 _atoi64( const char *string );long atol( const char *string );2.GetFileVersionInfo
This function returns version information about a specified file. BOOL GetFileVersionInfo(
LPTSTR lptstrFilename,
DWORD dwHandle,
DWORD dwLen,
LPVOID lpData);