From: boca4711 <boc...@us...> - 2005-10-16 12:10:19
|
Update of /cvsroot/anyedit/AnyEditv2 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv19983 Added Files: FilePropWordCount.cpp FilePropWordCount.h Log Message: Page to show statistical file informations. --- NEW FILE: FilePropWordCount.cpp --- // FilePropWordCount.cpp: Implementierungsdatei // #include "stdafx.h" #include "anyedit.h" #include "FilePropWordCount.h" #include "AnyEditDoc.h" #include "AnyEditView.h" #include "FilePropertyDlg.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // Dialogfeld CFilePropWordCount CFilePropWordCount::CFilePropWordCount(CWnd* pParent /*=NULL*/) : CPropertyPage(CFilePropWordCount::IDD) { //{{AFX_DATA_INIT(CFilePropWordCount) // HINWEIS: Der Klassen-Assistent fügt hier Elementinitialisierung ein //}}AFX_DATA_INIT m_pFileProp = NULL; } void CFilePropWordCount::DoDataExchange(CDataExchange* pDX) { CPropertyPage::DoDataExchange(pDX); //{{AFX_DATA_MAP(CFilePropWordCount) // HINWEIS: Der Klassen-Assistent fügt hier DDX- und DDV-Aufrufe ein //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CFilePropWordCount, CPropertyPage) //{{AFX_MSG_MAP(CFilePropWordCount) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // Behandlungsroutinen für Nachrichten CFilePropWordCount BOOL CFilePropWordCount::OnInitDialog() { CPropertyPage::OnInitDialog(); SetDlgItemText(IDC_EDIT_LINEMARKS, _T("1")); SetDlgItemText(IDC_EDIT_WHOLE_WORD, _T("0")); SetDlgItemText(IDC_EDIT_TEXT, _T("0")); SetDlgItemText(IDC_EDIT_COUNT_ALL, _T("0")); SetDlgItemText(IDC_EDIT_RADIO1, _T("")); SetDlgItemText(IDC_EDIT_RADIO2, _T("")); SetDlgItemText(IDC_EDIT_RADIO3, _T("")); SetDlgItemText(IDC_EDIT_RADIO4, _T("")); CString strFileName; if (m_pFileProp) { strFileName = m_pFileProp->m_strTempFilePath; long lCharCount = 0; long lLineCount = 0; long lSpaceCount = 0; long lWordCount = 0; if (!strFileName.IsEmpty() && CountWords(strFileName, lCharCount, lLineCount, lSpaceCount, lWordCount)) { TCHAR szFormat[32] = {0}; wsprintf(szFormat, _T("%d"), lLineCount); SetDlgItemText(IDC_EDIT_LINEMARKS, szFormat); wsprintf(szFormat, _T("%d"), lWordCount); SetDlgItemText(IDC_EDIT_WHOLE_WORD, szFormat); wsprintf(szFormat, _T("%d"), lCharCount); SetDlgItemText(IDC_EDIT_TEXT, szFormat); wsprintf(szFormat, _T("%d"), lSpaceCount + lCharCount); SetDlgItemText(IDC_EDIT_COUNT_ALL, szFormat); } strFileName = m_pFileProp->m_strSelFilePath; if (! strFileName.IsEmpty()) { if (CountWords(strFileName, lCharCount, lLineCount, lSpaceCount, lWordCount)) { TCHAR szFormat[32] = {0}; wsprintf(szFormat, _T("%d"), lLineCount); SetDlgItemText(IDC_EDIT_RADIO1, szFormat); wsprintf(szFormat, _T("%d"), lWordCount); SetDlgItemText(IDC_EDIT_RADIO2, szFormat); wsprintf(szFormat, _T("%d"), lCharCount); SetDlgItemText(IDC_EDIT_RADIO3, szFormat); wsprintf(szFormat, _T("%d"), lSpaceCount + lCharCount); SetDlgItemText(IDC_EDIT_RADIO4, szFormat); } } } return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX-Eigenschaftenseiten sollten FALSE zurückgeben } bool CFilePropWordCount::CountWords(LPCTSTR lpszFileName, long& lCharCount, long& lLineCount, long& lSpaceCount, long& lWordCount) { if (lpszFileName == NULL) return false; ATLASSERT(lpszFileName); lCharCount = 0; lLineCount = 0; lSpaceCount = 0; lWordCount = 0; FILE* pFile = _tfopen(lpszFileName, _T("rb")); if (pFile != NULL) { int c = 0, nState = 0; const int chNewLine = _T('\n'); while ((c = _gettc(pFile)) != EOF) { if (!_istspace(c)) ++lCharCount; if (c == chNewLine) ++lLineCount; if (_istspace(c)) { nState = 0; if (!_istcntrl(c)) ++lSpaceCount; } else if (nState == 0) { nState = 1; ++lWordCount; } } fclose(pFile); return true; } return false; } void CFilePropWordCount::SetFileInfo(CFileProperty *pFileInfo) { m_pFileProp = pFileInfo; } --- NEW FILE: FilePropWordCount.h --- (This appears to be a binary file; contents omitted.) |