⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 profile.cpp

📁 联通接收发送新程序
💻 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 + -