设为首页 加入收藏

TOP

VC资源文件版本解析类: (2) 源文件 (五)
2014-11-23 21:34:49 来源: 作者: 【 】 浏览:378
Tags:源文件 版本 解析
:npos)
331 {
332 return string::npos;
333 }
334 pos = strLine.find('\"',++pos);
335 if (pos == string::npos)
336 {
337 return string::npos;
338 }
339 size_t pos1 = ++pos;
340 pos = strLine.rfind('\"');
341 if (pos == string::npos)
342 {
343 return string::npos;
344 }
345 strVal = strLine.substr(pos1,pos-pos1);
346 return pos1;
347}
348/**//// 使用字节数判断是否到达文件末尾
349bool CRCVersion::eof() const
350{
351 assert(INVALID_HANDLE_VALUE != m_hFile);
352 DWORD dwCurLow = SetFilePointer(m_hFile,0,NULL,FILE_CURRENT);
353 DWORD dwEndLow = SetFilePointer(m_hFile,0,NULL,FILE_END);
354 bool bEof = (dwCurLow == dwEndLow);
355 SetFilePointer(m_hFile,dwCurLow,NULL,FILE_BEGIN);
356 return bEof;
357}
358/**//// 获取每行的文本
359void CRCVersion::getline(string& strLine) const
360{
361 assert(UNKNOW != m_nCharEncodeType);
362
363 char buf[2] = {'\0'}; wstring wstrLine;
364 for (DWORD dwRead,dwReaded;;)
365 {
366 dwRead = (ANSI == m_nCharEncodeType 1 : 2);
367 if (!ReadFile(m_hFile,buf,dwRead,&dwReaded,NULL)||0==dwReaded)
368 {
369 break;
370 }
371 if (1==dwReaded)
372 {
373 strLine += buf[0];
374 if (buf[0]=='\r')
375 {
376 if (!ReadFile(m_hFile,&buf[1],1,&dwReaded,NULL)||0==dwReaded)
377 {
378 break;
379 }
380 if (buf[1]=='\n')
381 {
382 strLine += buf[1];
383 }
384 else
385 {
386 SetFilePointer(m_hFile,-1,NULL,FILE_CURRENT);
387 }
388 break;
389 }
390 else if (buf[0]=='\n')
391 {
392 break;
393 }
394 }
395 else
396 {
397 if ((is_big_endian() ^ (UNICODE_BIG==m_nCharEncodeType)))
398 {
399 swap(buf[0],buf[1]);
400 }
401 wchar_t wch; memcpy(&wch,buf,sizeof(wchar_t));
402 wstrLine += wch;
403 if (wch==L'\r')
404 {
405 if (!ReadFile(m_hFile,buf,2,&dwReaded,NULL)||0==dwReaded)
406 {
407 break;
408 }
409 if ((is_big_endian() ^ (UNICODE_BIG==m_nCharEncodeType)))
410 {
411 swap(buf[0],buf[1]);
412 }
413 memcpy(&wch,buf,sizeof(wchar_t));
414 if (wch==L'\n')
415 {
416 wstrLine += wch;
417 }
418 else
419 {
420 SetFilePointer(m_hFile,-2,NULL,FILE_CURRENT);
421 }
422 break;
423 }
424 else if (wch==L'\n')
425 {
426 break;
427 }
428 }
429 }
430 if (ANSI != m_nCharEncodeType)
431 {
432 wstr2astr(wstrLine.c_str(),strLine);
433 TRACE4(L"%s",wstrLine.c_str());
434 }
435 else
436 {
437 TRACE4("%s",strLine.c_str());
438 }
439}
440
441/**///////////////////////////////////////////////////////////////////////////
442const tstring& CRCVersion::GetCompanyName() const
443{
444 return m_tstrCompanyName;
445}
446
447const tstring& CRCVersion::GetProductName() const
448{
449 return m_tstrProductName;
450}
451
452
首页 上一页 2 3 4 5 6 下一页 尾页 5/6/6
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇VC中Unicode字符串的处理 下一篇VC++ MFC的ActiveX窗口处理相关知..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: