2010-12-07 13 views
0

ログファイルを "NDSLog"という名前で作成しました。NDSLogファイルが制限を超えると、新しいファイルは名前NDSLog1などで作成する必要があります。現在、NDSLogファイルを作成することができます。制限、私はその既存のファイルを閉じます&新しいファイルを開きます。新しいログファイルを作成するMFCで指定されたサイズ(VC++)に達したら?

NDSLogをNDSLog1に増やすことができることを知りたいと思います。

ご協力いただきまして誠にありがとうございます。

私はこれにWritetoLogメソッドを使用しています。

long CNDSLog::WriteLogData(char *logData, long lDataSize) 
    { 

if (m_File == NULL) 
{ 
    GetFileName(); 
    OpenNewFile(); 
} 
else 
{ 
    long lFileSize = GetFileSize(m_sFileName); 
    if (lFileSize > m_lFileSize) 
    { 
     CloseNewFile(); 
     GetFileName(); 
     OpenNewFile(); 
    } 
} 

WriteData(logData); 

return ERR_NONE; 

}

long CNDSLog::GetFileName() 
{ 
    char ctemp[300]; 
int lLen = sprintf(ctemp,"%s",m_sFName.data()); 

if (lLen > 0) 
{  
    if (m_sFileName != NULL) 
    { 
     delete [] m_sFileName; 
     m_sFileName = NULL; 
    } 

    m_sFileName = new char[lLen + 1]; 
    memset(m_sFileName,0,lLen + 1); 
    memcpy(m_sFileName,ctemp,lLen); 
} 

return ERR_NONE; 

}。

long CNDSLog::OpenNewFile() 
{ 
    if (m_sFileName != NULL) 
    { 
     char strPathName[_MAX_PATH]; 
     ::GetModuleFileName(NULL, strPathName, _MAX_PATH);  

    // The following code will allow you to get the path. 
    CString newPath(strPathName); 
    int iPos = newPath.ReverseFind('\\'); 

    if (iPos != -1) 
    newPath = newPath.Left(iPos+1);  
    newPath += "NDSLog\\" ; 


    if (GetFileAttributes(newPath) == INVALID_FILE_ATTRIBUTES) 
    { 
     CreateDirectory(newPath,NULL); 
    } 
    newPath += m_sFileName;   

    m_File = fopen(newPath,"at"); 
} 
return ERR_NONE; 

}

答えて

0

esayの方法は、あなたのWriteLogData GetFileName(に渡す()関数int nCounter)でカウンターを持つことです。ファイル名をvreatingしている場合、あなたはそのようなカウンターを追加することができます。

sprintf(ctemp,"%s_%d",m_sFName.data(), nCounter); 

を今すぐあなたの1、2、...

今すぐあなたのWriteLogData(持っている)そのようにする必要があります:

long CNDSLog::WriteLogData(char *logData, long lDataSize) 
    { 

in nCounter = 1; // or whatever 
if (m_File == NULL) 
{ 
    GetFileName(nCounter); 
    OpenNewFile(); 
} 
else 
{ 
    long lFileSize = GetFileSize(m_sFileName); 
    if (lFileSize > m_lFileSize) 
    { 
     nCounter++; 
     CloseNewFile(); 
     GetFileName(nCounter); 
     OpenNewFile(); 
    } 
} 

WriteData(logData); 

return ERR_NONE; 
+0

しかし、NDSLog1という名前のewファイルを作成するとどのように感じるのですか...カウンタをインクリメントするだけです... –

+0

GrtFileName()関数のシグネチャも更新したため、それを使用して実際のファイル名を作成します。 – Sunscreen

+0

いいえ、それは新しいファイルを作成するために、その更新されたファイル名を取っておらず、Createfileやその他の機能を使用する必要があります。その部分はここにないと思う。 –

関連する問題