189 lines
4.1 KiB
C++
189 lines
4.1 KiB
C++
|
|
|||
|
// stdafx.cpp : ֻ<><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><D7BC><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>Դ<EFBFBD>ļ<EFBFBD>
|
|||
|
// Vcs-Client.pch <20><><EFBFBD><EFBFBD>ΪԤ<CEAA><D4A4><EFBFBD><EFBFBD>ͷ
|
|||
|
// stdafx.obj <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԥ<EFBFBD><D4A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|||
|
|
|||
|
#include "stdafx.h"
|
|||
|
|
|||
|
|
|||
|
|
|||
|
#define MIN_XYZ_VALUE (-999999)
|
|||
|
float* g_xys = new float[3000 * 3000 * 2];
|
|||
|
int g_xyz_flag = 0;
|
|||
|
|
|||
|
|
|||
|
#define Q_R 1500
|
|||
|
#define X0 1500
|
|||
|
#define Y0 1500
|
|||
|
|
|||
|
inline float abs_m(float lf)
|
|||
|
{
|
|||
|
if (lf < 0) lf *= -1;
|
|||
|
return lf;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
CString g_strSavePath = "";
|
|||
|
CString g_strCurTime = "";
|
|||
|
|
|||
|
void LogOutToFile(const char* fmt, ...)
|
|||
|
{
|
|||
|
static CRITICAL_SECTION stCritical;
|
|||
|
static BOOL bInit = FALSE;
|
|||
|
static CString strLogPath;
|
|||
|
if (FALSE == bInit)
|
|||
|
{
|
|||
|
bInit = TRUE;
|
|||
|
GetModuleFileName(NULL, strLogPath.GetBuffer(2048), 2047);
|
|||
|
strLogPath.ReleaseBuffer();
|
|||
|
strLogPath = strLogPath.Left(strLogPath.ReverseFind('\\'));
|
|||
|
strLogPath += "\\log\\runtime.log";
|
|||
|
|
|||
|
InitializeCriticalSection(&stCritical);
|
|||
|
}
|
|||
|
|
|||
|
EnterCriticalSection(&stCritical);
|
|||
|
|
|||
|
va_list ap;
|
|||
|
va_start(ap, fmt);
|
|||
|
char pBuffer[800] = "";
|
|||
|
if (vsnprintf_s(pBuffer, 796, _TRUNCATE, fmt, ap) > 0)
|
|||
|
{
|
|||
|
|
|||
|
if (strlen(pBuffer) == 0 || pBuffer[strlen(pBuffer) - 1] != '\n')
|
|||
|
{
|
|||
|
pBuffer[strlen(pBuffer) + 1] = '\0';//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><D7B7>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊԭ<CEAA><D4AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>з<EFBFBD>
|
|||
|
pBuffer[strlen(pBuffer)] = '\n';
|
|||
|
}
|
|||
|
}
|
|||
|
va_end(ap);
|
|||
|
|
|||
|
TRACE("%s\n", pBuffer);
|
|||
|
|
|||
|
FILE* pFile = NULL;
|
|||
|
fopen_s(&pFile, strLogPath.GetBuffer(), "ab+");
|
|||
|
if (NULL != pFile)
|
|||
|
{
|
|||
|
char acTime[32] = { 0 };
|
|||
|
SYSTEMTIME stTime;
|
|||
|
GetLocalTime(&stTime);
|
|||
|
sprintf_s(acTime, 32, "[%02d-%02d %02d:%02d:%02d.%03d] ", stTime.wMonth, stTime.wDay, stTime.wHour, stTime.wMinute, stTime.wSecond, stTime.wMilliseconds);
|
|||
|
|
|||
|
fwrite(acTime, 1, strlen(acTime), pFile);
|
|||
|
fwrite(pBuffer, 1, strlen(pBuffer), pFile);
|
|||
|
fwrite("\r\n", 1, strlen("\r\n"), pFile);
|
|||
|
fclose(pFile);
|
|||
|
}
|
|||
|
|
|||
|
LeaveCriticalSection(&stCritical);
|
|||
|
}
|
|||
|
|
|||
|
int g_nMsgIdx = 998;
|
|||
|
|
|||
|
string _UnicodeToUtf8(CString Unicodestr)
|
|||
|
{
|
|||
|
wchar_t* unicode = Unicodestr.AllocSysString();
|
|||
|
int len;
|
|||
|
len = WideCharToMultiByte(CP_UTF8, 0, unicode, -1, NULL, 0, NULL, NULL);
|
|||
|
char *szUtf8 = (char*)malloc(len + 1);
|
|||
|
memset(szUtf8, 0, len + 1);
|
|||
|
WideCharToMultiByte(CP_UTF8, 0, unicode, -1, szUtf8, len, NULL, NULL);
|
|||
|
string result = szUtf8;
|
|||
|
free(szUtf8);
|
|||
|
return result;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
// UTF8<46><38><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD>(MultiByte)<29><>ת
|
|||
|
CString UTF8AndMB_Convert(const CString &strSource, UINT nSourceCodePage, UINT nTargetCodePage)
|
|||
|
{
|
|||
|
int nSourceLen = strSource.GetLength();
|
|||
|
int nWideBufLen = MultiByteToWideChar(nSourceCodePage, 0, strSource, -1, NULL, 0);
|
|||
|
|
|||
|
wchar_t* pWideBuf = new wchar_t[nWideBufLen + 1];
|
|||
|
memset(pWideBuf, 0, (nWideBufLen + 1) * sizeof(wchar_t));
|
|||
|
|
|||
|
MultiByteToWideChar(nSourceCodePage, 0, strSource, -1, (LPWSTR)pWideBuf, nWideBufLen);
|
|||
|
|
|||
|
char* pMultiBuf = NULL;
|
|||
|
int nMiltiBufLen = WideCharToMultiByte(nTargetCodePage, 0, (LPWSTR)pWideBuf, -1, (char *)pMultiBuf, 0, NULL, NULL);
|
|||
|
|
|||
|
pMultiBuf = new char[nMiltiBufLen + 1];
|
|||
|
memset(pMultiBuf, 0, nMiltiBufLen + 1);
|
|||
|
|
|||
|
WideCharToMultiByte(nTargetCodePage, 0, (LPWSTR)pWideBuf, -1, (char *)pMultiBuf, nMiltiBufLen, NULL, NULL);
|
|||
|
|
|||
|
CStringA strTarget(pMultiBuf);
|
|||
|
|
|||
|
delete[] pWideBuf;
|
|||
|
delete[] pMultiBuf;
|
|||
|
|
|||
|
return strTarget;
|
|||
|
}
|
|||
|
|
|||
|
CStringA UTF8ToMB(const CStringA& utf8Str)
|
|||
|
{
|
|||
|
if (IsTextUTF8(utf8Str, utf8Str.GetLength()))
|
|||
|
{
|
|||
|
return UTF8AndMB_Convert(utf8Str, CP_UTF8, CP_ACP);
|
|||
|
}
|
|||
|
return utf8Str;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
bool IsTextUTF8(const char* str, ULONGLONG length)
|
|||
|
{
|
|||
|
DWORD nBytes = 0;//UFT8<54><38><EFBFBD><EFBFBD>1-6<><36><EFBFBD>ֽڱ<D6BD><DAB1><EFBFBD>,ASCII<49><49>һ<EFBFBD><D2BB><EFBFBD>ֽ<EFBFBD>
|
|||
|
UCHAR chr;
|
|||
|
bool bAllAscii = true; //<2F><><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ASCII, ˵<><CBB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>UTF-8
|
|||
|
for (int i = 0; i < length; i++)
|
|||
|
{
|
|||
|
chr = *(str + i);
|
|||
|
if ((chr & 0x80) != 0) // <20>ж<EFBFBD><D0B6>Ƿ<EFBFBD>ASCII<49><49><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,˵<><CBB5><EFBFBD>п<EFBFBD><D0BF><EFBFBD><EFBFBD><EFBFBD>UTF-8,ASCII<49><49>7λ<37><CEBB><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ֽڴ<D6BD>,<2C><><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>Ϊ0,o0xxxxxxx
|
|||
|
bAllAscii = false;
|
|||
|
if (nBytes == 0) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ASCII<49><49>,Ӧ<><D3A6><EFBFBD>Ƕ<EFBFBD><C7B6>ֽڷ<D6BD>,<2C><><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD>
|
|||
|
{
|
|||
|
if (chr >= 0x80)
|
|||
|
{
|
|||
|
if (chr >= 0xFC && chr <= 0xFD)
|
|||
|
nBytes = 6;
|
|||
|
else if (chr >= 0xF8)
|
|||
|
nBytes = 5;
|
|||
|
else if (chr >= 0xF0)
|
|||
|
nBytes = 4;
|
|||
|
else if (chr >= 0xE0)
|
|||
|
nBytes = 3;
|
|||
|
else if (chr >= 0xC0)
|
|||
|
nBytes = 2;
|
|||
|
else
|
|||
|
{
|
|||
|
return false;
|
|||
|
}
|
|||
|
nBytes--;
|
|||
|
}
|
|||
|
}
|
|||
|
else //<2F><><EFBFBD>ֽڷ<D6BD><DAB7>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD>ֽ<EFBFBD>,ӦΪ 10xxxxxx
|
|||
|
{
|
|||
|
if ((chr & 0xC0) != 0x80)
|
|||
|
{
|
|||
|
return false;
|
|||
|
}
|
|||
|
nBytes--;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
if (nBytes > 0) //Υ<><CEA5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
return false;
|
|||
|
}
|
|||
|
|
|||
|
if (bAllAscii) //<2F><><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ASCII, ˵<><CBB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>UTF-8
|
|||
|
{
|
|||
|
return false;
|
|||
|
}
|
|||
|
return true;
|
|||
|
}
|
|||
|
|