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

📄 mainunit.cpp

📁 一个非常实用的号码魔方工具
💻 CPP
📖 第 1 页 / 共 2 页
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "MainUnit.h" 
#include "FSelectDirectoryFile.h"
#include "MoveMobileNumber.h"      
#include "SelectMobileType.h"  
#include "OutMobileToFile.h"      
#include "About.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TfrmMain *frmMain;
//---------------------------------------------------------------------------
__fastcall TfrmMain::TfrmMain(TComponent* Owner)
	: TForm(Owner),m_isLoadData(0)
{

}
//---------------------------------------------------------------------------

void __fastcall TfrmMain::FormCreate(TObject *Sender)
{                       
    DragAcceptFiles(this->Handle, true);
	unsigned short year;
	unsigned short month;
	unsigned short day;
	Now().DecodeDate( &year, &month, &day );
	if ( !(year == 2008 && month >= 6 && month <= 12 ) )
	{
		ShowMessage( "您使用的版本时间过期,不能再继续使用。" );
		Application->Terminate();
		return;
	}
	m_hRepostEvent = CreateEvent( NULL, FALSE, FALSE, NULL );
	m_pThreadProc = new CThreadObject( this, (LPTHREAD_START_ROUTINE)ThreadLoadDataProc, "" );
}
//---------------------------------------------------------------------------
void __fastcall TfrmMain::FormClose(TObject *Sender, TCloseAction &Action)
{
	SetEvent( m_hRepostEvent );
	delete m_pThreadProc;
	CloseHandle( m_hRepostEvent );
	CloseDB();
}
//---------------------------------------------------------------------------
void __fastcall TfrmMain::MyDropFileFunction(TWMDropFiles &Msg)
{
	int NumOfFiles = DragQueryFile((HDROP)Msg.Drop, 0xFFFFFFFF, NULL, 0 );
	Screen->Cursor = crHourGlass ;
	TStringList* sList = new TStringList ;
	for(int i = 0; i < NumOfFiles; ++i )
	{
		//从Msg消息中得到文件路径
		String NameFile;
		NameFile.SetLength(MAX_PATH);
		int Length = DragQueryFile((HDROP)Msg.Drop, i, NameFile.c_str(),NameFile.Length() ) ;
		NameFile.SetLength(Length);
		//从路径中取得文件护展名;
		String NameExt = ExtractFileExt( NameFile.LowerCase() ) ;
		if ( NameExt == ".txt" ) 
		{  
			sList->LoadFromFile( NameFile );
			for( int i = 0; i < sList->Count; ++i )
			{
			  lstOldMobile->Items->Add(sList->Strings[i]) ;
			}  			
		}
	}
	Screen->Cursor = crDefault ;
	delete sList ;
	ShowOldCount() ;
    DragFinish((HDROP)Msg.Drop);
}
VOID WINAPI TfrmMain::ThreadLoadDataProc( LPVOID lParam )
{                       
    CoInitialize( NULL );
	TfrmMain * pThis = (TfrmMain*)lParam;
	if ( !pThis->OpenDB() )
	{
        return;
	}

	TADODataSet * m_data = pThis->ADODataSet1;
	AreaPack m_pack;
	while ( !m_data->Eof )		
	{
        memset( &m_pack, 0x0, sizeof(m_pack) );
		m_pack.MFID           = m_data->FieldByName("MFIX")->AsString;
		m_pack.AreaParentName = m_data->FieldByName("AreaParentname")->AsString;      // 省
		m_pack.AreaName       = m_data->FieldByName("AreaName")->AsString;            // 市
        m_pack.CardType       = m_data->FieldByName("CardType")->AsString;            // 运营商类型
        pThis->m_Areamap[m_pack.MFID] = m_pack;
		m_data->Next();
		
		if ( ::WaitForSingleObject( pThis->m_hRepostEvent, 0 ) == WAIT_OBJECT_0 )
		{
            break;
		}
	}
	pThis->m_isLoadData = 3;
	pThis->CloseDB();
	CoUninitialize();
}
bool __fastcall TfrmMain::OpenDB()
{
    m_isLoadData = 0;
	try
	{
		ADOConnection1->Connected = false;
		ADOConnection1->Connected = true;
	}catch( Exception & e )
	{
		AnsiString sDir = ExtractFileDir( Application->ExeName ) + "\\log\\" + Now().DateString() + ".log";
		WriteFileList( sDir,  "连接数据库出错:" + e.Message );
		m_isLoadData = 1;
		return false;
	}
	try
	{
		ADODataSet1->Open();
    }catch( Exception & e )
	{
		AnsiString sDir = ExtractFileDir( Application->ExeName ) + "\\log\\" + Now().DateString() + ".log";
		WriteFileList( sDir,  "打开数据库出错:" + e.Message );  
		m_isLoadData = 1;
		return false;
	}
	m_isLoadData = 2; 
	return true;
}
void __fastcall TfrmMain::CloseDB()
{
	try
	{
        ADODataSet1->Close();
		ADOConnection1->Connected = false;
    }catch( Exception & e )
	{
		AnsiString sDir = ExtractFileDir( Application->ExeName ) + "\\log\\" + Now().DateString() + ".log";
		WriteFileList( sDir,  "关闭数据库出错:" + e.Message );
	}
}
int __fastcall TfrmMain::CheckMobile( AnsiString sMobile )
{
	int nResult = -1;
	if ( sMobile.Length() == 11 )
	{
	    int nNum = atoi( sMobile.SubString( 1, 3 ).c_str() );
		if ( (nNum >= 130 && nNum <= 133) || (nNum >= 150 && nNum <= 153) )
		{
			nResult = 1;
		}else if ( (nNum >= 134 && nNum <= 139) || (nNum >= 154 && nNum <= 159) )
		{
            nResult = 2;
        }
		for ( int i = 3; i < 12 && nResult != -1; ++i )  // 检测号码正确性
		{
			if ( sMobile[i] < '0' || sMobile[i] > '9' )
			{
				nResult = -1;
				break;
			}
		}
	}
	return nResult;
}
void __fastcall TfrmMain::ShowOldCount()
{
    AnsiString str ;    
    str.sprintf("原始号码列表中共有 %d 个号码", lstOldMobile->Count ) ;
    Edit1->Text = str ;
}
void __fastcall TfrmMain::ShowNewCount()
{  
    AnsiString str ;
    str.sprintf("目标号码列表中共有 %d 个号码", lstNewMobile->Count ) ;
    Edit2->Text = str ;
}
void __fastcall TfrmMain::MoveMobileNumber( TListBox * lstOld, TListBox * lstNew )
{
    char pszBuf[12];
    memset( pszBuf, 0x0, sizeof(pszBuf) );
	TfrmMoveMobileNumber* frm = new TfrmMoveMobileNumber(this, pszBuf) ;
    if( frm->ShowModal() == mrOk )
    {
        AnsiString sMobile ;
        bool flag  ;
        Screen->Cursor = crHourGlass ;
        for( int i = 0; i < lstOld->Count; ++i )
        {
            flag = false ;
            sMobile = lstOld->Items->Strings[i] ;
            for( int j = 1; j < 12; ++j )
			{         
				if ( pszBuf[j] >= '0' && pszBuf[j] <= '9' )
				{
					char cp = *(sMobile.SubString(j+1,1).c_str()) ;
					if( pszBuf[j] == cp )
					{
						flag = true ;
					}else
					{
						flag = false ;
						break ;
					}     
				}
            }
            if( flag )
            {
                lstOld->Items->Delete(i--) ;
                lstNew->Items->Add(sMobile) ;
            }
        }   
        ShowOldCount() ;
        ShowNewCount() ;
        Screen->Cursor = crDefault ;
    }
    delete frm ;
}
void __fastcall TfrmMain::MoveMobileType( TListBox * lstOld, TListBox * lstNew )
{        
	int m_nMobileType;
	TfrmMoveMobileType * frm = new TfrmMoveMobileType( this, m_nMobileType );
	if ( frm->ShowModal() == mrOk )
	{
		int nNum;
		AnsiString sMobile; 
        Screen->Cursor = crHourGlass ;
		for ( int i = 0; i < lstOld->Items->Count; i++)
		{
			sMobile = lstOld->Items->Strings[i];
			nNum = CheckMobile( sMobile );
               //   移动                           ||       联通
			if ( (m_nMobileType == 0 && nNum == 2) || (m_nMobileType == 1 && nNum == 1) )
			{
				lstOld->Items->Delete(i--);
				lstNew->Items->Add(sMobile);  
			}
		} 
		Screen->Cursor = crDefault ;
	}
}
void __fastcall TfrmMain::MoveAllMobile( TListBox * lstOld, TListBox * lstNew )
{              
	Screen->Cursor = crHourGlass ;
	lstNew->Items->AddStrings( lstOld->Items );
	//lstNew->Items->Text = lstOld->Items->Text ;
	lstOld->Clear() ;
	Screen->Cursor = crDefault ;
	ShowOldCount() ;
	ShowNewCount() ;
}
void __fastcall TfrmMain::bitFileCleanUpClick(TObject *Sender)
{     //文件整理,对多个文件夹下面相同文件名的内容整理到目标文件夹下
	TfrmSelectDirectory * frm = new TfrmSelectDirectory( this );
	frm->ShowModal();
	delete frm;	
}
//---------------------------------------------------------------------------

void __fastcall TfrmMain::bitLoadFileClick(TObject *Sender)
{
    TStringList* sList = new TStringList ;
    if( OpenDialog1->Execute() )
    {                   
        Screen->Cursor = crHourGlass ;
        for( int i = 0; i < OpenDialog1->Files->Count; ++i )
        {
            sList->LoadFromFile(OpenDialog1->Files->Strings[i]) ;
            for( int i = 0; i < sList->Count; ++i )
            {
                lstOldMobile->Items->Add(sList->Strings[i]) ;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -