📄 gsm_phone.cpp
字号:
//---------------------------------------------------------------------------
#pragma hdrstop
#include <stdio>
#include <IniFiles.hpp>
#include "gsm_phone.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
// class
CGsmPhone::CGsmPhone() {
}
CGsmPhone::~CGsmPhone() {
}
// parsers
BOOL CGsmPhone::ArrComp(unsigned char *Src, int SrcSize, unsigned char *Pattern, int PattSize, int *Position) {
// is Pattern contained in Src?
int i, p_n=0;
for (i=0; i<SrcSize; i++) {
if (Src[i]==Pattern[p_n])
p_n++;
else
p_n=0;
if (p_n==PattSize) {
*Position=i;
return true;
}
}
*Position=0;
return false;
}
int CGsmPhone::CalcImeiChk(unsigned char *Imei) {
int i, Sum=0, Table[]={0, 2, 4, 6, 8, 1, 3, 5, 7, 9};
for (i=0; i<14; i+=2) {
Sum+=Imei[i]-0x30;
Sum+=Table[Imei[i+1]-0x30];
}
return (Sum%10==0) ? 0 : 10-(Sum%10);
}
DWORD CGsmPhone::DwordReverse(DWORD Original) {
unsigned char Tmp[4], Res[4];
memcpy(Tmp, &Original, 4);
Res[0]=Tmp[3];
Res[1]=Tmp[2];
Res[2]=Tmp[1];
Res[3]=Tmp[0];
return *((DWORD *)Res);
}
// operators
void CGsmPhone::MccMncToOperator(char *IniFileName, char *ProviderCode, char *Provider) {
int i;
TIniFile *Ini;
strcpy(Provider, "Unknown");
if (FileExists(IniFileName)) {
Ini=new TIniFile(IniFileName);
if (Ini->ValueExists("MCC_MNC", ProviderCode))
strcpy(Provider, Ini->ReadString("MCC_MNC", ProviderCode, "").c_str());
delete Ini;
}
}
void CGsmPhone::EnumOperators(char *IniFileName, TStrings *Destiny) {
TIniFile *Ini;
TStrings *Sections;
int i;
if (FileExists(IniFileName)) {
Destiny->Clear();
Ini=new TIniFile(IniFileName);
// load all sections
Sections=new TStringList;
Ini->ReadSection("MCC_MNC", Sections);
for (i=0; i<Sections->Count; i++)
Destiny->Add(Ini->ReadString("MCC_MNC", Sections->Strings[i], ""));
delete Sections;
delete Ini;
}
}
void CGsmPhone::OperatorToMccMnc(char *IniFileName, char *ProviderCode, char *Provider) {
TIniFile *Ini;
TStrings *Sections;
int i;
if (FileExists(IniFileName)) {
Ini=new TIniFile(IniFileName);
// load all sections
Sections=new TStringList;
Ini->ReadSection("MCC_MNC", Sections);
for (i=0; i<Sections->Count; i++)
if (strcmp(Ini->ReadString("MCC_MNC", Sections->Strings[i], "").c_str(), Provider)==0)
strcpy(ProviderCode, Sections->Strings[i].c_str());
delete Sections;
delete Ini;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -