Files
coco df489d5640 a
2026-07-03 16:05:30 +08:00

166 lines
4.0 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// OperTxtFile.cpp: implementation of the COperTxtFile class.
//
//////////////////////////////////////////////////////////////////////
#include "geomative.h"
#include "OperTxtFile.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
extern int g_iUILanguage;
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
COperTxtFile::COperTxtFile()
{
m_uiParamWidth = 18;
m_pFile = NULL;
}
COperTxtFile::~COperTxtFile()
{
if (m_pFile)
{
fclose(m_pFile);
m_pFile = NULL;
}
}
void COperTxtFile::SetParamWidth(UINT uiWidth)
{
if (uiWidth < 6 || uiWidth >50)
{
CString str = _T("");
if (LANG_ZHCN == g_iUILanguage)
{
str.Format(_T("设置参数宽度错误!值为%d"), uiWidth);
AfxMessageBox(str);
}
else
{
str.Format(_T("Set Parameter Width error!value = %d"), uiWidth);
MessageBoxEx(NULL, str, STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
}
return;
}
m_uiParamWidth = uiWidth;
}
void COperTxtFile::CloseFile()
{
if (m_pFile)
{
fclose(m_pFile);
m_pFile = NULL;
}
}
bool COperTxtFile::OpenFileforWrite(CString strFileName)
{
if (strFileName.IsEmpty())
{
if (LANG_ZHCN == g_iUILanguage)
AfxMessageBox(_T("文件名不能为空"));
else
MessageBoxEx(NULL, _T("File's name can not be empty!"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
return false;
}
if (m_pFile)
{
CloseFile();
}
m_pFile = fopen(strFileName, "w+");
if (NULL == m_pFile)
{
CString strShow = _T("");
if (LANG_ZHCN == g_iUILanguage)
{
strShow.Format(_T("打开文件 %s 失败!错误码 = %d"), strFileName, GetLastError());
AfxMessageBox(strShow);
}
else
{
strShow.Format(_T("Open file %s failed!ErrorCode = %d"), strFileName, GetLastError());
MessageBoxEx(NULL, strShow, STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
}
return false;
}
CFileOperTools::GetInstance()->WriteComLog(_T("zm: COperTxtFile::OpenFileforWrite export file -------------------") + strFileName);
return true;
}
//按照m_uiParamWidth来写TXT文件,不足的部分以空格来填充
bool COperTxtFile::WriteFileContent(const CStringArray& strArrContent)
{
CString strText = _T("");
for (int i = 0; i < strArrContent.GetSize(); i++)
{
int nLen = strArrContent[i].GetLength();
if (nLen > m_uiParamWidth)
{
if (LANG_ZHCN == g_iUILanguage)
{
strText.Format(_T("内容长度(%s)(%d)超过参数宽度(%d)!"), strArrContent[i], nLen, m_uiParamWidth);
AfxMessageBox(strText);
}
else
{
strText.Format(_T("The length of content(%s)(%d) is over than parameter width(%d)!"), strArrContent[i], nLen, m_uiParamWidth);
MessageBoxEx(NULL, strText, STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
}
//return false;
}
strText.Empty();
strText = strArrContent[i];
for (int j = 0; j < (m_uiParamWidth - nLen); j++)
{
strText += _T(" ");
}
//在最后一个元素前面加上换行符
if (i == strArrContent.GetSize()-1)
{
strText += _T("\r\n");
}
nLen = fwrite(strText, 1, strText.GetLength(), m_pFile);
if (nLen != strText.GetLength())
{
CString str = _T("");
if (LANG_ZHCN == g_iUILanguage)
{
str.Format(_T("写文件错误!应该写长度= %d,写长度=%d, error_code=%d"),
strText.GetLength(), nLen, GetLastError());
AfxMessageBox(str);
}
else
{
str.Format(_T("Write file error!should write length = %d, writed length = %d, error_code = %d"),
strText.GetLength(), nLen, GetLastError());
MessageBoxEx(NULL, str, STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
}
return false;
}
}
fflush(m_pFile);
return true;
}
bool COperTxtFile::WriteEmptyRow()
{
CString strText = _T("\r\n");
fwrite(strText, 1, strText.GetLength(), m_pFile);
fflush(m_pFile);
return true;
}