📄 profile.cpp
字号:
static const char* sccsid = "@(#)profile.cpp v1.0.0 2000-08-08";
/* Copyright(C) 1999, 2000 by JiangSu Bell Software CO.,LTD. */
/*
Name: profile.cpp Version: 1.0.0
Created by HanBing Date: 2000-08-22
Comment: Our group defining all base-class sets
Modified:
1) 2000-08-22 HanBing - Create;
*/
#include <fstream.h>
#include "common.h"
const int MaxLineLen = 250;
extern "C" long SearchSection( FILE * & pfile, const char* Section )
{
long Found = 0;
if ( !Section || !strlen( Section ) )
return Found;
char* pcTmp = new char [ MaxLineLen ];
char* pcSec = new char [ strlen(Section)+3 ];
strcpy( pcTmp, Section );
Ltrim( pcTmp );
Rtrim( pcTmp );
sprintf( pcSec, "[%s]", pcTmp );
if( pfile != NULL )
{
while( ! feof( pfile ) && !Found )
{
fgets ( pcTmp, MaxLineLen-1, pfile );
if ( strstr( pcTmp, pcSec ) == pcTmp )
Found = ftell( pfile );
}
}
delete pcTmp;
delete pcSec;
return Found;
}
extern "C" long SearchEntry( FILE * & pfile, const char* Entry, char* Result, bool flag = false )
{
long Found = 0;
if ( !Entry || !strlen( Entry ) )
return Found;
bool Out = false;
char* pcTmp = new char [ MaxLineLen ];
if( pfile != NULL )
{
while( !Found && !Out && ! feof( pfile ) )
{
long temp = ftell( pfile ); //定位
pcTmp[0] = 0;
fgets ( pcTmp, MaxLineLen-1, pfile );
Ltrim( pcTmp );
char *pcTmpResult = strstr( pcTmp, Entry );
if ( pcTmpResult == pcTmp )
{
pcTmpResult += strlen( Entry );
Ltrim( pcTmpResult );
if ( *pcTmpResult == '=' )
{
pcTmpResult++;
Ltrim( pcTmpResult );
if ( flag )
{
strcpy( Result, pcTmpResult );
int len = strlen( Result );
while ( len > 0 && ( Result[len-1] == '\n' || Result[len-1] == '\r' || Result[len-1] == ' ' ) )
{
Result[len-1] = 0;
len -= 1;
}
}
Found = temp;
}
}
else if ( pcTmp[0] == '[' )
Out = true;
}
}
delete pcTmp;
return Found;
}
bool GetProfileStr( const char* File, const char* Section, const char* Entry, char* Result )
{
bool ret = false;
if ( !File || !strlen( File ) )
return ret;
FILE * pfile = fopen( File, "a+" );
if ( pfile != NULL )
{
if ( SearchSection( pfile, Section ) )
{
if ( SearchEntry( pfile, Entry, Result, true ) )
ret = true;
}
}
fclose( pfile );
return ret;
}
extern "C" bool WriteSection( const char* File, const char* Section, const char* Entry, char* Result )
{
bool ret = false;
if ( !File || !strlen( File ) )
return ret;
char* pcSec = new char [ strlen(Section)+1 ];
strcpy( pcSec, Section );
Ltrim( pcSec );
Rtrim( pcSec );
FILE * pfile = fopen( File, "a+" );
if( pfile != NULL )
{
fprintf( pfile, "\n[%s]\n", pcSec );
fprintf( pfile, "%s = %s\n", Entry, Result );
ret = true;
}
fclose( pfile );
delete pcSec;
return ret;
}
bool WriteProfileStr( const char* File, const char* Section, const char* Entry, char* Result )
{
bool ret = false;
long section = 0;
long entry = 0;
FILE * pfile = fopen( File, "a+" );
if ( pfile != NULL )
{
section = SearchSection( pfile, Section );
if ( section )
entry = SearchEntry( pfile, Entry, Result );
}
fclose( pfile );
if ( !section )
ret = WriteSection( File, Section, Entry, Result );
else
{
char* pcTmp = new char [ MaxLineLen ];
char *TmpFile = tmpnam( NULL );
FILE * pout = fopen( TmpFile, "w" );
FILE * pin = fopen( File, "r" );
long temp = ftell( pin );
while ( temp < section && ! feof( pin ) )
{
pcTmp[0] = 0;
fgets( pcTmp, MaxLineLen-1, pin );
fprintf( pout, "%s", pcTmp );
temp = ftell( pin );
}
if ( entry )
{
while ( temp < entry && ! feof( pin ) )
{
pcTmp[0] = 0;
fgets( pcTmp, MaxLineLen-1, pin );
fprintf( pout, "%s", pcTmp );
temp = ftell( pin );
}
}
fprintf( pout, "%s = %s\n", Entry, Result );
if ( entry )
fgets( pcTmp, MaxLineLen-1, pin );
while ( ! feof( pin ) )
{
pcTmp[0] = 0;
fgets( pcTmp, MaxLineLen-1, pin );
if ( strlen( pcTmp ) )
fprintf( pout, "%s", pcTmp );
}
fclose( pin );
fclose( pout );
remove( File );
rename( TmpFile, File );
}
return ret;
}
char AppName[100] = "default";
char LogName[100] = "program.log";
char ConfName[100] = ".config.ini";
extern "C" bool ReadTime( char *Date, char *Time );
void WriteTime( FILE * & logf )
{
char pc_date[10];
char pc_time[10];
ReadTime( pc_date, pc_time );
fprintf( logf, " -- time: %s-%s -- \n", pc_date, pc_time );
}
void LOG :: DBG( const long x, const char* file, const int line )
{
FILE * logf = fopen( LogName, "a+" );
if( logf != NULL )
{
if ( file )
fprintf( logf, "%s line:%ld", file, line );
WriteTime( logf );
fprintf( logf, "%ld\n", x );
}
fclose( logf );
}
void LOG :: DBG( const double x, const char* file, const int line )
{
FILE * logf = fopen( LogName, "a+" );
if( logf != NULL )
{
if ( file )
fprintf( logf, "%s line:%ld", file, line );
WriteTime( logf );
fprintf( logf, "%f\n", x );
}
fclose( logf );
}
void LOG :: DBG( const char* x, const char* file, const int line )
{
FILE * logf = fopen( LogName, "a+" );
if( logf != NULL )
{
if ( file )
fprintf( logf, "%s line:%ld", file, line );
WriteTime( logf );
fprintf( logf, "%s\n", x );
}
fclose( logf );
}
short DebugLevel = -1;
bool DoDebug( short lvl )
{
if ( DebugLevel < 0 )
{
char level[5] = "0";
if ( !GetConfigStr( "DebugLevel", level ) )
WriteConfigStr( "DebugLevel", "0" );
DebugLevel = atoi( level );
}
return ( DebugLevel >= lvl ? true : false );
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -