www.pudn.com > xltsm.rar > smset.cpp


#include "StdAfx.h" 
#include "smset.h" 
 
void GetSetting(const char * file, const char * segment, const char * key, const char * defvalue, char * lpValue, int cbValue) 
{ 
	char * pName, szFileName[_MAX_PATH]; 
 
	GetModuleFileName(NULL, szFileName, sizeof(szFileName)); 
	pName = strrchr(szFileName, '\\'); 
	if (pName == NULL){ 
		pName = szFileName; 
	} else { 
		pName ++; 
	} 
 
	strcpy(pName, file); 
 
	memset(lpValue, 0, cbValue); 
 
	if (GetPrivateProfileString(segment, key, "", lpValue, cbValue, szFileName) <= 0){ 
		strncpy(lpValue, defvalue, cbValue - 1); 
		WritePrivateProfileString(segment, key, lpValue, szFileName); 
	} 
 
	return; 
} 
 
void GetSetting(const char * file, const char * segment, const char * key, int defvalue, int* pnValue) 
{ 
	char defbuf[20], valbuf[20]; 
	itoa(defvalue, defbuf, 10); 
	GetSetting(file, segment, key, defbuf, valbuf, sizeof(valbuf)); 
	* pnValue = atoi(valbuf); 
} 
 
BOOL MakeSureDBConnected(CMyDatabase &db, CString& rcsError) 
{ 
	char szServer[129]; 
	char szDatabase[129]; 
	char szLogId[129]; 
	char szLogPass[129]; 
	int nTimeOut; 
 
	if (db.IsOpen()) return TRUE; 
 
	GetSetting("db.ini", "Database", "SERVER", "localhost", szServer, sizeof(szServer));	// 远程网关地址 
	GetSetting("db.ini", "Database", "DATABASE", "edu", szDatabase, sizeof(szDatabase));	// 远程网关地址 
	GetSetting("db.ini", "Database", "LOGID", "sa", szLogId, sizeof(szLogId));	// 远程网关地址 
	GetSetting("db.ini", "Database", "LOGPASS", "", szLogPass, sizeof(szLogPass));	// 远程网关地址 
	GetSetting("db.ini", "Database", "TIMEOUT", 10, &nTimeOut);	 
 
	if (!db.ConnectDB(szServer, szDatabase, szLogId, szLogPass, nTimeOut, rcsError, "xltsm")) return FALSE; 
 
	return TRUE; 
} 
 
void LogError(const char *ext, const char *dir, const char *format, ...) 
{ 
	// 关键错误,不是记录数据库标识,所以创建一个文件,并把语句写入 
	time_t tThis; 
	char szTimeBuf[20]; 
	char szFilePath[_MAX_PATH]; 
	va_list ap; 
	char szCurDir[_MAX_PATH] = ""; 
 
	time(&tThis); 
	strftime(szTimeBuf, sizeof(szTimeBuf), "%Y%m%d%s", localtime(&tThis)); 
 
	if (GetModuleFileName(NULL, szCurDir, sizeof(szCurDir)) <= 0) FatalAppExit(0, "系统错误:不能取得当前目录。"); 
 
	char *p = strrchr(szCurDir, '\\'); 
	if (p == NULL) FatalAppExit(0, "系统错误:当前目录无效。"); 
	*p = '\0'; 
 
	sprintf(szFilePath, "%s\\%s", szCurDir, dir); 
	mkdir(szFilePath); // 确保存在该路径 
 
	strcat(szFilePath, "\\"); 
	strcat(szFilePath, szTimeBuf); 
	strcat(szFilePath, ext); 
 
	FILE *fp = fopen(szFilePath, "a"); 
	if (fp == NULL) FatalAppExit(0, "系统错误:不能创建临时文件。"); 
 
	va_start(ap, format); 
	vfprintf(fp, format, ap); 
	va_end(ap); 
 
	fclose(fp); 
	return; 
}