实用函数库——方便大家少写点代码。。。

// Coding by Friecin

#ifndef DUJUNLITOOLSCPP 
#define DUJUNLITOOLSCPP 
//函数库2002-11-15 19:26 
#include <vcl.h> 
#include <grids.hpp> 
#include <stdio.h> 
#include <utilcls.h> 
#include <printers.hpp> 
#include <IdBaseComponent.hpp> 
#include <IdCoder.hpp> 
#include <IdCoderMessageDigest.hpp> 
///md5 
AnsiString __fastcall Strip(AnsiString S) 

return S.Delete(1, 2); 



AnsiString md5ToString(AnsiString S) 

    AnsiString AHex; 


    for (int i=1; i<=S.Length(); i++) 
    { 
     AHex += IntToHex((unsigned char)S[i], 2);// + " "; 
    } 


    return AHex; 

String Md5Str(String src) 

TIdCoderMD5 *md5=new TIdCoderMD5(NULL); 
md5->Reset(); 
md5->AutoCompleteInput = true; 
String tmp=md5ToString(Strip(md5->CodeString(src))); 
delete md5; 
md5=NULL; 
return tmp; 

//md5 end 
bool OpenForm(TForm * WForm) 



  //if(OpenForm(frmmem)==False) 
  // { 
  // frmmem=new Tfrmmem(Application); 
  // OpenForm(frmmem); 
  // }//使用例子 
  int i; 
  bool FormExist; 


  if(WForm==NULL) return False; 
  FormExist=False; 
  for(i=0;i<Screen->FormCount;i++) 
      if(Screen->Forms[i]->ClassType()==WForm->ClassType()) 
        { 
          FormExist=True; 
          break; 
        } 
  if(FormExist==False) return FormExist; 


  if(WForm->WindowState==wsMinimized) 
    ShowWindow(WForm->Handle,SW_SHOWNORMAL); 
  else 
    ShowWindow(WForm->Handle,SW_SHOWNA); 
  if(!WForm->Visible) WForm->Visible=True; 


  if(GetWindowLong(WForm->Handle,GWL_EXSTYLE&WS_EX_APPWINDOW)!=WS_EX_APPWINDOW) 
     SetWindowLong(WForm->Handle,GWL_EXSTYLE,WS_EX_APPWINDOW); 


  WForm->BringToFront(); 
  WForm->SetFocus(); 
  return True; 

//---------------------------------------------------------------- 
String repl(String sstr,String fstr,String repstr) 

//替换字符串函数 
String tmpstr=""; 
int x = sstr.AnsiPos(fstr); 
if(x==0) 
   { 
   tmpstr=sstr; 
   //Application->MessageBoxA(sstr.c_str(),"",MB_OK); //未找到查找字串,原样返回 
   return tmpstr; 
   } 
while(x != 0) 
  { 
  tmpstr +=sstr.SubString(1,x-1) + repstr; 
  sstr = sstr.SubString(x+fstr.Length(),sstr.Length()); 
  x = sstr.AnsiPos(fstr); 
  } 
tmpstr+=sstr; 
//Application->MessageBoxA(tmpstr.c_str(),"",MB_OK); 
return tmpstr; 

//--------------------------------------------- 
String sqlstr(String sqlstr) 

// 
if(sqlstr!="") 
  { 
  sqlstr=repl(sqlstr,"'","''"); 
  } 
return sqlstr; 

//------------------------------------- 
TDateTime pmon(TDateTime dt) 
{//取上一个月的日期 
  unsigned short year, mon, day, hour, min, sec,msec; 
  dt.DecodeDate( &year,&mon,&day); 
  dt.DecodeTime( &hour, &min, &sec, &msec ); 
  if(mon<=1) 
    { 
      year-=1; 
      mon=12; 
    } 
  else 
    { 
    mon-=1; 
    } 
  dt=::EncodeDate(year,mon,day); 
  return dt; 

TDateTime nmon(TDateTime dt) 
{//取下一个月的日期 
  unsigned short year, mon, day, hour, min, sec,msec; 
  dt.DecodeDate( &year,&mon,&day); 
  dt.DecodeTime( &hour, &min, &sec, &msec ); 
  if(mon>=12) 
    { 
      year+=1; 
      mon=1; 
    } 
  else 
    { 
    mon+=1; 
    } 
  dt=::EncodeDate(year,mon,day); 
  return dt; 

// 
//将数据集得数据导出到Excel; 
//void DataSetToExcel(TDataSet* DataSet,bool H); //H:表按行排(正常) 
//Variant Ex,Wbs,Wb,Sh1; 
// 
//--------------------------------------------------------------------------- 
/* 
//不完善,错误为:如果数据含有过滤属性,则用RecCount就不合适 
void DataSetToExcel(TDataSet* DataSet,bool H) 

  Variant Ex,Wbs,Wb,Sh1; 
  int CurrRow,CurrCol; 
  CurrCol=0; 
  CurrRow=0; 
  Screen->Cursor=crHourGlass ; 
  if(Ex.IsEmpty()) 
      try 
        { 
        HWND hPrevApp = ::FindWindow(NULL,"Microsoft Excel"); 
        if(!hPrevApp) 
          { 
          Ex=Variant::CreateObject("Excel.Application"); 
          } 
        else 
          { 
          Ex=Variant::GetActiveObject("Excel.Application"); 
          } 
        } 
      catch(...) 
        { 
        Screen->Cursor=crDefault; 
        ShowMessage("打开Excel出错,请确认你已经正确安装了MS Office!"); 
        return; 
        } 
    try 
      { 


      if(Ex.OlePropertyGet("ActiveWorkBook").IsEmpty()) 
        Ex.OlePropertyGet("WorkBooks").OleProcedure("ADD"); 
      if(Wb.IsEmpty()) 
        Wb=Ex.OlePropertyGet("ActiveWorkBook"); 
      Sh1=Wb.OlePropertyGet("Sheets").OleFunction("Add"); 
      Ex.OlePropertySet("Visible",true); 
      } 
    catch(...) 
      { 
      Ex=Ex.Empty(); 
      Wb=Wb.Empty(); 
      DataSetToExcel(DataSet,H); 
      } 
    if(H) 
      { 


      for (int j=0;j<DataSet->Fields->Count;j++) 
            { 
            if(DataSet->Fields->Fields[j]->Visible) 
              { 
                CurrCol++; 
                Sh1.OlePropertyGet("Cells",1,CurrCol).OlePropertySet("value",DataSet->Fields->Fields[j]->FieldName); 
              } 
            } 
      DataSet->First(); 
      for (int i=0;i<DataSet->RecordCount;i++) 
        { 
          CurrCol=0; 
          for (int j=0;j<DataSet->Fields->Count;j++) 
            { 
            if(DataSet->Fields->Fields[j]->Visible) 
              { 
                CurrCol++; 
                Sh1.OlePropertyGet("Cells",i+2,CurrCol).OlePropertySet("value",DataSet->Fields->Fields[j]->AsString); 
              } 
            } 
          Application->ProcessMessages(); 
          DataSet->Next(); 
        } 
      } 
    else 
      { 
        for (int j=0;j<DataSet->Fields->Count;j++) 
        { 
          if(DataSet->Fields->Fields[j]->Visible) 
            { 
            CurrRow++ ; 
            Sh1.OlePropertyGet("Cells",CurrRow,1).OlePropertySet("value",DataSet->Fields->Fields[j]->FieldName); 
            DataSet->First(); 
            for (int i=0;i<DataSet->RecordCount;i++) 
              { 
                Sh1.OlePropertyGet("Cells",CurrRow,i+2).OlePropertySet("value",DataSet->Fields->Fields[j]->AsString); 
                DataSet->Next(); 
              } 
            } 
        } 
      } 
    Screen->Cursor=crDefault; 
} */ 
void DataSetToExcel(TDataSet* DataSet,bool H) 

  Variant Ex,Wbs,Wb,Sh1; 
  int CurrRow,CurrCol; 
  CurrCol=0; 
  CurrRow=0; 
  Screen->Cursor=crHourGlass ; 
  if(Ex.IsEmpty()) 
      try 
        { 
        HWND hPrevApp = ::FindWindow(NULL,"Microsoft Excel"); 
        if(!hPrevApp) 
          { 
          Ex=Variant::CreateObject("Excel.Application"); 
          } 
        else 
          { 
          Ex=Variant::GetActiveObject("Excel.Application"); 
          } 
        } 
      catch(...) 
        { 
        Screen->Cursor=crDefault; 
        ShowMessage("打开Excel出错,请确认你已经正确安装了MS Office!"); 
        return; 
        } 
    try 
      { 


      if(Ex.OlePropertyGet("ActiveWorkBook").IsEmpty()) 
        Ex.OlePropertyGet("WorkBooks").OleProcedure("ADD"); 
      if(Wb.IsEmpty()) 
        Wb=Ex.OlePropertyGet("ActiveWorkBook"); 
      Sh1=Wb.OlePropertyGet("Sheets").OleFunction("Add"); 
      } 
    catch(...) 
      { 
      Ex=Ex.Empty(); 
      Wb=Wb.Empty(); 
      DataSetToExcel(DataSet,H); 
      } 
    if(H) 
      { 


      for (int j=0;j<DataSet->Fields->Count;j++) 
            { 
            if(DataSet->Fields->Fields[j]->Visible) 
              { 
                CurrCol++; 
                Sh1.OlePropertyGet("Cells",1,CurrCol).OlePropertySet("value",DataSet->Fields->Fields[j]->FieldName); 
              } 
            } 
      DataSet->First(); 
/*      for (int i=0;i<DataSet->RecordCount;i++) 
        { 
          CurrCol=0; 
          for (int j=0;j<DataSet->Fields->Count;j++) 
            { 
            if(DataSet->Fields->Fields[j]->Visible) 
              { 
                CurrCol++; 
                Sh1.OlePropertyGet("Cells",i+2,CurrCol).OlePropertySet("value",DataSet->Fields->Fields[j]->AsString); 
              } 
            } 
          Application->ProcessMessages(); 
          DataSet->Next(); 
        } 
*/ 
          int i=0; 
          while(!DataSet->Eof) 
             { 
              CurrCol=0; 
              for (int j=0;j<DataSet->Fields->Count;j++) 
                { 
                if(DataSet->Fields->Fields[j]->Visible) 
                  { 
                    CurrCol++; 
                    Sh1.OlePropertyGet("Cells",i+2,CurrCol).OlePropertySet("value",DataSet->Fields->Fields[j]->AsString); 
                  } 
                } 
              Application->ProcessMessages(); 
              DataSet->Next(); 
              i++; 
              } 
      } 
    else 
      { 
        for (int j=0;j<DataSet->Fields->Count;j++) 
        { 
          if(DataSet->Fields->Fields[j]->Visible) 
            { 
            CurrRow++ ; 
            Sh1.OlePropertyGet("Cells",CurrRow,1).OlePropertySet("value",DataSet->Fields->Fields[j]->FieldName); 
            DataSet->First(); 
            int i=0; 
            while(!DataSet->Eof) 
              { 
                Sh1.OlePropertyGet("Cells",CurrRow,i+2).OlePropertySet("value",DataSet->Fields->Fields[j]->AsString); 
                Application->ProcessMessages(); 
                DataSet->Next(); 
                i++; 
              } 
            } 
        } 
      } 
    Ex.OlePropertySet("Visible",true); 
    Screen->Cursor=crDefault; 

//------------------------------------------------------------------------- 
String makestr(String mstr,char b,int len,bool QH)//QH在前或者后加字符 

int slen=mstr.Length(); 
        String tmp=""; 
        if(slen<len) 
          { 
             if(QH) 
               { 
                tmp=AnsiString::StringOfChar(b,len-slen)+mstr; 
               } 
             else 
               { 
                tmp=mstr+AnsiString::StringOfChar(b,len-slen); 
               } 
          } 
        else 
          { 
             tmp=mstr; 
          } 
        return tmp; 

//------------------------------------------------------------------------ 
String getdtbh() 

        //按日期生成类似20001025--000001的编号 
        TDateTime dt; 
        unsigned short year,month,day; 
        ::DecodeDate(dt.CurrentDate(),year,month,day); 
        String tmp=""; 
        tmp=String(year)+makestr(month,'0',2,true)+makestr(day,'0',2,true); 
        return tmp; 

//------------------------------------------------------------------------


//============================================================================= 
//   函数使用说明:输入表名称,取得所有纪录的最大值加一,转换成n位的00001形式 
//   输入:cTableName 数据库中的某一表的名称 
//         nNumkeep 格式化后字符串的总长度 
//============================================================================= 
AnsiString  __fastcall TMainForm::GetPerId(AnsiString cTableName,int nNumkeep) 



      ADOQuery1->SQL->Clear(); 
      ADOQuery1->SQL->Add("Select Count(*) AS curn from "+cTableName); 
      ADOQuery1->Prepared; 
      ADOQuery1->Active=true; 
      ADOQuery1->Open(); 
//      ShowMessage(ADOQuery1->Fields->Fields[0]->AsString) ; 
      int ngetn=ADOQuery1->FieldByName("curn")->AsInteger; 
      ADOQuery1->Active=false; 
      ADOQuery1->Close(); 
      return Get00Str(ngetn+1,nNumkeep); 



/*----------------------------------------------------------------------- 
  函数:Get00Str 
  功能:生成 0000000x 形字符串 
  输入: oragn 被转换的整形数 
         nNumkeep 格式化后字符串的总长度 
------------------------------------------------------------------------*/ 


AnsiString  __fastcall TMainForm::Get00Str(int oragn,int nNumkeep) 



         AnsiString cc=IntToStr(oragn); 
          cc=cc.Trim(); 
          AnsiString tmp0=""; 
          int Flen=cc.Length(); 
          for(int j=0;j<nNumkeep-Flen;j++) 
           { 
            tmp0="0"+tmp0; 
           } 
          cc=tmp0+cc; 
          return cc; 



//==============================================================================




void SetEditCell(TStringGrid *sg,int x,int y) 

//任一CELLS获得焦点,并可直接使用键盘输入 
TGridRect myRect; 
myRect.Left = x; 
myRect.Top = y; 
myRect.Right = x; 
myRect.Bottom = y; 
sg->Selection = myRect; 
sg->Options<<goEditing; 
SendMessage(sg->Handle,WM_LBUTTONDOWN,0,0); 

//------------------------------------------------------------------------ 
void DeleteRow(TStringGrid *sg,int x) // 删除第x行(0...) 

for (int y=0;y<sg->ColCount;y++) 

TStringList *ss=new TStringList(); 
ss->AddStrings(sg->Cols[y]); 
ss->Add(""); 
ss->Delete(x); 
sg->Cols[y]=ss; 
delete ss; 


//------------------------------------------------------------------------- 
int IsNum(String s) 

try 

s.ToInt(); 
return 1; 

catch(EConvertError &s) 

ShowMessage("不是整数!"); 
return 0; 


//------------------------------------------------------------------------------------ 
void SetPaperSize(int w,int h,bool bHengXiang) // 设置缺省打印机纸张大小 w*h(*0.1mm) 

char Device[CCHDEVICENAME]; 
char Driver[MAX_PATH]; 
char Port[32]; 
THandle hDMode; 
PDevMode pDMode; 


TPrinter *Prn = Printer(); 
Prn->GetPrinter(Device,Driver,Port,hDMode); 
if (hDMode!=NULL) 

pDMode=(PDevMode)GlobalLock((HGLOBAL &)hDMode); 
if (pDMode!=NULL) 

pDMode->dmPaperSize= 256; 
pDMode->dmFields=pDMode->dmFields | DM_PAPERSIZE; 
pDMode->dmPaperLength =h; //高 *0.1mm 
pDMode->dmFields =pDMode->dmFields| DM_PAPERLENGTH; 
pDMode->dmPaperWidth = w; //宽 *0.1mm 
pDMode->dmFields =pDMode->dmFields| DM_PAPERWIDTH; 
if(bHengXiang) 
pDMode->dmOrientation=DMORIENT_LANDSCAPE; 
else 
pDMode->dmOrientation=DMORIENT_PORTRAIT; 

ResetDC(Prn->Handle,pDMode); 
GlobalUnlock((HGLOBAL &)hDMode); 


//------------------------------------------------------------------------------------- 
String SafeTrunc(const String s, int count) 

String result; 
int ws_len=count; 
WideString ws(s); 


do 
ws= ws.SubString(1,ws_len--); 
while((result=ws).Length()>count); 


return result; 



String NewGUID() 

//产生唯一GUID 
_GUID gid; 
String GUID; 
try 

CreateGUID(gid); //CreateClassID() 
GUID=GUIDToString(gid); 

catch(...) 

return ""; 

return GUID; 



int splitstr(TStringList *value,String splitStr,String sourceStr) 



//分隔字符串 
//TStringList *value=new TStringList(); 
value->Text=""; 
//String splitStr="//\\"; 
//AnsiString sourceStr="asd//\\fgh//\\jkl"; 
int sp=splitStr.Length(); 
int index=0; 
int pos=sourceStr.Pos(splitStr); 
String tmp; 
int capa=0; 
while (pos>0) 

value->Strings[index] 
tmp=sourceStr.SubString(1,pos-1); 
value->Add(tmp); 
sourceStr.SubString(pos,sourceStr.Length()-pos+1); 
//MessageBox(Handle,value->Strings[index].c_str(),"",MB_OK); 
sourceStr.Delete(1,pos); 
sourceStr=sourceStr.SubString(pos+sp,sourceStr.Length()-pos-sp+1); 
pos=sourceStr.Pos(splitStr); 
index++; 

value->Add(sourceStr); 
capa=value->Count; 
return capa; 
/* 
for(int m=0;m<capa;m++) 
MessageBox(Handle,value->Strings[m].c_str(),"",MB_OK); 
*/ 
//value->Strings[index]=sourceStr; 
//delete value; 

void nextdlg() 

if(Key==VK_RETURN) 

Key=0; 
SendMessage(Handle,WM_NEXTDLGCTL,0,0); 



AnsiString ConvertHZToPY(char *as_HzString) 

//提出汉字首字母 
static int li_SecPosvalue[]={1601,1637,1833,2078,2274,2302,2433,2594,2787,3106,3212,3472,3635,3722,3730,3858,4027,4086,4390,4558,4684,4925,5249}; 
static char* lc_FirstLetter[] = {"A", "B","C","D","E","F","G","H","J","K","L","M","N","O","P","Q","R","S","T","W","X","Y","Z"}; 
static char* ls_SecondSecTable = 
"CJWGNSPGCGNE[Y[BTYYZDXYKYGT[JNNJQMBSGZSCYJSYY[PGKBZGY[YWJKGKLJYWKPJQHY[W[DZLSGMRYPYWWCCKZNKYYGTTNJJNYKKZYTCJNMCYLQLYPYQFQRPZSLWBTGKJFYXJWZLTBNCXJJJJTXDTTSQZYCDXXHGCK[PHFFSS[YBGXLPPBYLL[HLXS[ZM[JHSOJNGHDZQYKLGJHSGQZHXQGKEZZWYSCSCJXYEYXADZPMDSSMZJZQJYZC[J[WQJBYZPXGZNZCPWHKXHQKMWFBPBYDTJZZKQHY" 
"LYGXFPTYJYYZPSZLFCHMQSHGMXXSXJ[[DCSBBQBEFSJYHXWGZKPYLQBGLDLCCTNMAYDDKSSNGYCSGXLYZAYBNPTSDKDYLHGYMYLCXPY[JNDQJWXQXFYYFJLEJPZRXCCQWQQSBNKYMGPLBMJRQCFLNYMYQMSQYRBCJTHZTQFRXQHXMJJCJLXQGJMSHZKBSWYEMYLTXFSYDSWLYCJQXSJNQBSCTYHBFTDCYZDJWYGHQFRXWCKQKXEBPTLPXJZSRMEBWHJLBJSLYYSMDXLCLQKXLHXJRZJMFQHXHWY" 
"WSBHTRXXGLHQHFNM[YKLDYXZPYLGG[MTCFPAJJZYLJTYANJGBJPLQGDZYQYAXBKYSECJSZNSLYZHSXLZCGHPXZHZNYTDSBCJKDLZAYFMYDLEBBGQYZKXGLDNDNYSKJSHDLYXBCGHXYPKDJMMZNGMMCLGWZSZXZJFZNMLZZTHCSYDBDLLSCDDNLKJYKJSYCJLKWHQASDKNHCSGANHDAASHTCPLCPQYBSDMPJLPZJOQLCDHJJYSPRCHN[NNLHLYYQYHWZPTCZGWWMZFFJQQQQYXACLBHKDJXDGMMY" 
"DJXZLLSYGXGKJRYWZWYCLZMSSJZLDBYD[FCXYHLXCHYZJQ[[QAGMNYXPFRKSSBJLYXYSYGLNSCMHZWWMNZJJLXXHCHSY[[TTXRYCYXBYHCSMXJSZNPWGPXXTAYBGAJCXLY[DCCWZOCWKCCSBNHCPDYZNFCYYTYCKXKYBSQKKYTQQXFCWCHCYKELZQBSQYJQCCLMTHSYWHMKTLKJLYCXWHEQQHTQH[PQ[QSCFYMNDMGBWHWLGSLLYSDLMLXPTHMJHWLJZYHZJXHTXJLHXRSWLWZJCBXMHZQXSDZP" 
"MGFCSGLSXYMJSHXPJXWMYQKSMYPLRTHBXFTPMHYXLCHLHLZYLXGSSSSTCLSLDCLRPBHZHXYYFHB[GDMYCNQQWLQHJJ[YWJZYEJJDHPBLQXTQKWHLCHQXAGTLXLJXMSL[HTZKZJECXJCJNMFBY[SFYWYBJZGNYSDZSQYRSLJPCLPWXSDWEJBJCBCNAYTWGMPAPCLYQPCLZXSBNMSGGFNZJJBZSFZYNDXHPLQKZCZWALSBCCJX[YZGWKYPSGXFZFCDKHJGXDLQFSGDSLQWZKXTMHSBGZMJZRGLYJB" 
"PMLMSXLZJQQHZYJCZYDJWBMYKLDDPMJEGXYHYLXHLQYQHKYCWCJMYYXNATJHYCCXZPCQLBZWWYTWBQCMLPMYRJCCCXFPZNZZLJPLXXYZTZLGDLDCKLYRZZGQTGJHHGJLJAXFGFJZSLCFDQZLCLGJDJCSNZLLJPJQDCCLCJXMYZFTSXGCGSBRZXJQQCTZHGYQTJQQLZXJYLYLBCYAMCSTYLPDJBYREGKLZYZHLYSZQLZNWCZCLLWJQJJJKDGJZOLBBZPPGLGHTGZXYGHZMYCNQSYCYHBHGXKAMTX" 
"YXNBSKYZZGJZLQJDFCJXDYGJQJJPMGWGJJJPKQSBGBMMCJSSCLPQPDXCDYYKY[CJDDYYGYWRHJRTGZNYQLDKLJSZZGZQZJGDYKSHPZMTLCPWNJAFYZDJCNMWESCYGLBTZCGMSSLLYXQSXSBSJSBBSGGHFJLYPMZJNLYYWDQSHZXTYYWHMZYHYWDBXBTLMSYYYFSXJC[DXXLHJHF[SXZQHFZMZCZTQCXZXRTTDJHNNYZQQMNQDMMG[YDXMJGDHCDYZBFFALLZTDLTFXMXQZDNGWQDBDCZJDXBZGS" 
"QQDDJCMBKZFFXMKDMDSYYSZCMLJDSYNSBRSKMKMPCKLGDBQTFZSWTFGGLYPLLJZHGJ[GYPZLTCSMCNBTJBQFKTHBYZGKPBBYMTDSSXTBNPDKLEYCJNYDDYKZDDHQHSDZSCTARLLTKZLGECLLKJLQJAQNBDKKGHPJTZQKSECSHALQFMMGJNLYJBBTMLYZXDCJPLDLPCQDHZYCBZSCZBZMSLJFLKRZJSNFRGJHXPDHYJYBZGDLQCSEZGXLBLGYXTWMABCHECMWYJYZLLJJYHLG[DJLSLYGKDZPZXJ" 
"YYZLWCXSZFGWYYDLYHCLJSCMBJHBLYZLYCBLYDPDQYSXQZBYTDKYXJY[CNRJMPDJGKLCLJBCTBJDDBBLBLCZQRPPXJCJLZCSHLTOLJNMDDDLNGKAQHQHJGYKHEZNMSHRP[QQJCHGMFPRXHJGDYCHGHLYRZQLCYQJNZSQTKQJYMSZSWLCFQQQXYFGGYPTQWLMCRNFKKFSYYLQBMQAMMMYXCTPSHCPTXXZZSMPHPSHMCLMLDQFYQXSZYYDYJZZHQPDSZGLSTJBCKBXYQZJSGPSXQZQZRQTBDKYXZK" 
"HHGFLBCSMDLDGDZDBLZYYCXNNCSYBZBFGLZZXSWMSCCMQNJQSBDQSJTXXMBLTXZCLZSHZCXRQJGJYLXZFJPHYMZQQYDFQJJLZZNZJCDGZYGCTXMZYSCTLKPHTXHTLBJXJLXSCDQXCBBTJFQZFSLTJBTKQBXXJJLJCHCZDBZJDCZJDCPRNPQCJPFCZLCLZXZDMXMPHJSGZGSZZQLYLWTJPFSYASMCJBTZKYCWMYTCSJJLJCQLWZMALBXYFBPNLSFHTGJWEJJXXGLLJSTGSHJQLZFKCGNNNSZFDEQ" 
"FHBSAQTGYLBXMMYGSZLDYDQMJJRGBJTKGDHGKBLQKBDMBYLXWCXYTTYBKMRTJZXQJBHLMHMJJZMQASLDCYXYQDLQCAFYWYXQHZ"; 




AnsiString result = ""; 
int H,L,W; 
unsigned int i, stringlen = strlen(as_HzString); 
int j; 


for( i = 0; i < stringlen; i ++ ) 

H = (unsigned char)(as_HzString[i + 0]); 
L = (unsigned char)(as_HzString[i + 1]); 
if(H < 0xA1 || L < 0xA1) 

result += as_HzString[i]; 
continue; 

else 
W = (H - 160) * 100 + L - 160; 


if(W > 1600 && W < 5590) 

for(j = 22; j >= 0; j --) 
if(W >= li_SecPosvalue[j]) 

result += lc_FirstLetter[j]; 
i ++; 
break; 

continue; 

else 

i ++; 
W = ( H - 160 - 56 )*94 + L - 161; 
if(W >= 0 && W <= 3007) 
result += ls_SecondSecTable[W]; 
else 

result += (char)H; 
result += (char)L; 





return result; 



String makestr(String mstr, char b, int len, bool QH) 

int slen=mstr.Length(); 
String tmp=""; 
if(slen<len) 

if(QH) 

tmp=AnsiString::StringOfChar(b,len-slen)+mstr; 

else 

tmp=mstr+AnsiString::StringOfChar(b,len-slen); 


else 

tmp=mstr; 

return tmp; 



String makelen(String mstr, int len) 

if(mstr.Length()<len) 

return makestr(mstr,' ',len,false); 

else 
return mstr; 



以分为单位 
AnsiString GetBigMoney(AnsiString s) 

if ((s.Length()<= && (s.ToIntDef(0)==0)) return "币零元零角整"; 
AnsiString odxc,odxs,oszc,oscc,oscc0; int oi,oi0,i; 
double ormb=StrToFloat(s); //金额小写 
if (ormb==0.00) return "币零元零角整"; 
odxc="分角圆拾佰仟万拾佰仟亿拾佰仟万拾佰仟亿"; 
odxs="零壹贰叁肆伍陆柒捌玖"; 
oszc=FloatToStr(abs(ormb)); 
i=AnsiPos('.',s); 
oszc.Delete(i,1); // stuf(oszc,18,1,''); 
oszc=Trim(oszc); oscc=""; oi0=0; 
for (oi=oszc.Length();oi>0;oi--) 
{ oscc=odxc.SubString(oi0*2+1,2)+oscc; oscc=odxs.SubString(StrToInt(oszc.SubString(oi,1))*2+1,2)+oscc; 
oi0++; } 
oscc0=""; 
for (oi=1;oi<=oscc.Length();oi=oi+4) 
{ if (oscc.SubString(oi,2)=="零" ) 
{ if ( oscc.SubString(oi+2,2)=="万" ) 
{ if ( oscc0.SubString(oscc0.Length()-3,4)!="亿零" ) 
{ if (oscc0.SubString(oscc0.Length()-1,2)=="零" ) 
oscc0=oscc0.SubString(1,oscc0.Length()-2)+"万"; 
else oscc0=oscc0+"万"; } 
continue; } 
if ( oscc.SubString(oi+2,2)=="圆") 

if (oscc0.SubString(oscc0.Length()-1,2)=="零") 
oscc0=oscc0.SubString(1,oscc0.Length()-2)+"圆"; 
else oscc0=oscc0+"圆"; 
continue; 

if ( oscc.SubString(oi+2,2)=="亿" ) 

if (oscc0.SubString(oscc0.Length()-1,2)=="零") 
oscc0=oscc0.SubString(1,oscc0.Length()-2)+"亿"; 
else oscc0=oscc0+"亿"; 
continue; } 
if (oscc0.SubString(oscc0.Length()-1,2)!="零" ) 
oscc0=oscc0+"零"; 

else oscc0=oscc0+oscc.SubString(oi,4); 

if ((oscc0.SubString(oscc0.Length()-3,4)=="圆零") ) 
{ oscc0=oscc0.SubString(1,oscc0.Length()-2)+"整"; 
return oscc0; } 
if ((oscc0.SubString(oscc0.Length()-3,4)=="角零" )) 
{ oscc0=oscc0.SubString(1,oscc0.Length()-2)+"整"; 
return oscc0; 

if ((oscc0.SubString(oscc0.Length()-1,2)=="零" )) 
oscc0=oscc0.SubString(1,oscc0.Length()-2)+"圆整"; 
return oscc0; 




String UpperMoney(double jn) 

int L , ZL , Z , U , V; 
AnsiString F = "壹贰叁肆伍陆柒捌玖" ; 
AnsiString G = "元万亿万拾佰仟分角" ; 
AnsiString AA , B , JNS; 
JNS.SetLength(255); 
double je ; 


if(jn<=0) 
return "零" ; 


je=(jn<1?jn*100:jn); 


printf(JNS.c_str(),"%26.2f",je) ; 
JNS=TrimRight(TrimLeft(JNS)) ; 


L = StrLen(JNS.c_str()) ; 
L=(jn<1?(jn<0.1?1:2):L) ; 


ZL = L+1 ; 


AA =AnsiString("") ; 
B = AnsiString("") ; 


for( ;L>0; ) 

Z = StrToInt(JNS.SubString(ZL-L,1)) ; 
U = int(L/4) ; 
V = L%4 ; 


if( Z>0 ) 

U=(V==0?U+U-1:V+V+(U>0?7:13)) ; 
AA = AA+B+F.SubString(Z+Z-1,2)+G.SubString(U,2) ; 
B = "" ; 

else 

if(L==1) 
AA=AA+"整" ; 
else 

if(V==0) 
AA=AA+G.SubString(U*2-1,2); 
else 
AA=AA+"" ; 



B=(V>=0?"零":"") ; 

L=(L==4?2:L-1) ; 

return AA ; 

//简单加解密函数 
String SimCry(String SrcStr) 

//bfxontn加密 
String pass=SrcStr; 
int j=pass.Length(); 
char dM,eM; 
String fM=""; 
for(int i=1;i<=j;i++) 

dM=pass[i]; 
eM=(dM-i); 
fM=fM + eM; 

return fM; 

String SimEnCry(String ESrcStr) 

//bfxontn解密 
String pass=ESrcStr; 
int j=pass.Length(); 
char dM,eM; 
String fM=""; 
for(int i=1;i<=j;i++) 

dM=pass[i]; 
eM=(dM+i); 
fM=fM + eM; 

return fM; 

//简单加解密函数结束 
#endif // DUJUNLITOOLSCPP


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
HzToPy汉字转拼音函数说明 函数原型如下: HzToPy(Hz As String, Optional Sep As String = "", Optional ShowNotation As Boolean = True, Optional ShowInitialOnly As Boolean, Optional ShowOnlyOneChar As Boolean = True) As String 参数名 参数类型 说明 第1个参数 Hz 字符型 为汉字字符串 第2个参数 Sep 字符型,可选 设定拼音间隔字符,默认为空("") 第3个参数 ShowNotation 布尔型,可选 设定是否显示注音符号,默认显示 第4个参数 ShowInitialOnly 布尔型,可选 设定是否仅显示拼音首字,默认显示全部 第5个参数 ShowOnlyOneChar 布尔型,可选 设定是否仅显示拼音首字母("zh"显示为"z"),默认只显示首字母 应用举例 目标汉字: 汉字转拼音举例 1 显示用空格分开的拼音 公式: =HzToPy($b$19," ") 结果: hàn zì zhuǎn pīn yīn jǔ lì 2 显示用空格分开的拼音,同时不显示注音符号 公式: =HzToPy($b$19," ",false) 结果: han zi zhuan pin yin ju li 3 显示用空格分开的拼音,不显示注音符号,同时仅显示拼音的首字,并大写 公式: =HzToPy($b$19," ",false,true,false) 结果: H Z ZH P Y J L 4 显示用空格分开的拼音,不显示注音符号,同时仅显示拼音的首字母,并大写 公式: =HzToPy($b$19," ",false,true) 结果: H Z Z P Y J L GetPy()说明 取汉字拼音的首字母(大写) 公式 =GETPY(B35) 结果 GS 函数原型:getpy(string) PinYin()说明 取单个汉字或首个汉字首拼音首字母(小写) 公式 =pinyin(B43) 结果 g 函数原型:pinyin(string)

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值