vb读写ini文件:ini文件纯C++读写实现代码来源: 发布时间:星期四, 2009年2月12日 浏览:119次 评论:0
前段时间直有朋友在向我索要EVC版本ini读取由于是公司其他人完成代码我不便于公布正好这段时间重新拾起了成都英创公司NetBox/NetBoxII相关开发工作它系统平台为DOS开发平台BC3.0它提供个ini读写代码我用了下非常好使好东西就要共享这里我想成都英创公司也不会反对毕竟我给他也做了个小小宣传(我们公司隧道广告早期通信子站就是NetBoxII所开发目前为Moxa公司通信设备):-) ini读写头文件源码: //////////////////////////////////////////////////////////////// //// //ConfigurefileReaderforVATLVersion2.0// //// //Author:Wang.Ping// //// //Ver1.42// //// //Date:18/08/99// //// [Page] //(c)CopyrightV.A.T.LDevelopmentWorkgroup// //// //!ReadMaxLineLength=2048// //----------------------------------------------------------// //Funciton:// //// //char*GetStrTitle(char*Str,char*Compstr); //Get1Par(Num,char*Par,char*ParStr);// //Get1Par(Num,long*Par,char*ParStr);// //Get1Par(Num,*Par,char*ParStr);// //Get1Par(Num,float*Par,char*ParStr);// //Get1Par(Num,unsigned*Par,char*ParStr);// //// [Page] //GetField(char*FileName,char*Group,char*Item,// //char*OutStr);// //GetField(char*FileName,char*Group,char*Item,// //Postion,char*OutStr);// //GetField(char*FileName,char*Group,char*Item,// //Postion,&OutStr);// //GetField(char*FileName,char*Group,char*Item,// //Postion,float&OutStr);// //GetField(char*FileName,char*Group,char*Item,// //Postion,long&OutStr);// //GetField(char*FileName,char*Group,char*Item,// //Postion,unsignedlong&OutStr);// //// [Page] //WriteField(char*FileName,char*Group,char*Item,// //char*OutStr,Mode=NEW);// //WriteField(char*FileName,char*Group,char*Item,// //&OutStr,Mode=NEW);// //WriteField(char*FileName,char*Group,char*Item,// //float&OutStr,Mode=NEW);// //WriteField(char*FileName,char*Group,char*Item,// //long&OutStr,Mode=NEW);// //WriteField(char*FileName,char*Group,char*Item,// //unsignedlong&OutStr,Mode=NEW);// //// //CreatGroupName(char*FileName,char*Group);// //ModyGroupName(char*FileName,char*Group,// //char*NewGroup,Mode=NEW);// //// [Page] //DeleteGroup(char*FileName,char*Group);// //DeleteField(char*FileName,char*Group,// //char*Item);// //// //FindGroupName(char*FileName,char*Group);// //// //char*READINI::GetVersion;// //// //////////////////////////////////////////////////////////////// #!d(_READINI_H) #_READINI_H #NEW0 #MODIFY1 #PreMemorySize512 #NumricSize256 enumBL{READINIOFF=0,READINION=1}; READINI { longGetFileLen(char*FileName); [Page] //-1:FileNotFound //-2:Cancle //-3:NotEnoughmemory CopyFile(char*OldName,char*NewName); BLAutoBackup; public: READINI; //Mode=0’,’ //Mode=1’;’ SplitMode; voidSetSplitMode(Mode); voidSetAutoBackup(BLAuto=READINIOFF); voidGetZero(char*Buf); voidGetZeroR(char*Buf); //ReturnTitle //Str=Str-Title //NULL=notfoundorNotenoughmemory char*GetStrTitle(char*Str,char*Compstr); //0:OK //-1:CannotgetParameters //-2:Notenoughmemory Get1Par(Num,char*Par,char*ParStr); Get1Par(Num,long*Par,char*ParStr); Get1Par(Num,*Par,char*ParStr); Get1Par(Num,float*Par,char*ParStr); Get1Par(Num,unsigned*Par,char*ParStr); //ReadDataFrom\"FileName\" //0:OK //-1:Cannotopenfile //-2:Nomatchfieldfound //-3:Notenoughmemory GetField(char*FileName,char*Group,char*Item,char*OutStr); GetField(char*FileName,char*Group,char*Item,Postion,char*OutStr); GetField(char*FileName,char*Group,char*Item,Postion,&OutStr); [Page] //GetField(char*FileName,char*Group,char*Item,Postion,unsigned&OutStr); GetField(char*FileName,char*Group,char*Item,Postion,float&OutStr); GetField(char*FileName,char*Group,char*Item,Postion,long&OutStr); GetField(char*FileName,char*Group,char*Item,Postion,unsignedlong&OutStr); //ModyDatato\"FileName\" //-1:FileNotFound //-3:NotEnoughmemory WriteField(char*FileName,char*Group,char*Item,char*OutStr,Mode=NEW); WriteField(char*FileName,char*Group,char*Item,&OutStr,Mode=NEW); WriteField(char*FileName,char*Group,char*Item,unsigned&OutStr,Mode=NEW); WriteField(char*FileName,char*Group,char*Item,float&OutStr,Mode=NEW); WriteField(char*FileName,char*Group,char*Item,long&OutStr,Mode=NEW); WriteField(char*FileName,char*Group,char*Item,unsignedlong&OutStr,Mode=NEW); // CreatGroupName(char*FileName,char*Group); ModyGroupName(char*FileName,char*Group,char*NewGroup,Mode=NEW); // DeleteGroup(char*FileName,char*Group); DeleteField(char*FileName,char*Group,char*Item); // FindGroupName(char*FileName,char*Group); [Page] //GetVersioninformation char*GetVersion; GetVer; }; externREADINIReadIni; #end 这是具体实现代码: //////////////////////////////////////////////////////////////// //// //ConfigurefileReaderforVATLVersion2.0// //// //Author:Wang.Ping// //// //Ver1.3// //// //Date:23/10/97// [Page] //// //(c)CopyrightV.A.T.LDevelopmentWorkgroup// //// //////////////////////////////////////////////////////////////// #<.h> #<stdio.h> #<stdlib.h> #<dir.h> #\"readini.h\" #MAXBUFFER200 READINIReadIni; READINI::READINI { } voidREADINI::GetZero(char*Buf) { i=0,j=0; Len=strlen(Buf); for(i=0;i<Len;i) { (Buf[i]’’){j;continue;} { for(i=0;i<strlen(Buf)-j;i) Buf[i]=Buf[i+j]; Buf[i]=’\\0’; ; } } (jLen) Buf[0]=’\\0’; for(i=0;i<strlen(Buf);i) (Buf[i]’\\n’){Buf[i]=’\\0’;;} } voidREADINI::GetZeroR(char*Buf) { i=0,j=0; for(i=0;i<strlen(Buf);i) { (Buf[i]’’){j;continue;} [Page] { for(i=0;i<strlen(Buf)-j;i) Buf[i]=Buf[i+j]; Buf[i]=’\\0’; ; } } for(i=0;i<strlen(Buf);i) { (Buf[i]!=’’){continue;} {Buf[i]=’\\0’;} } for(i=0;i<strlen(Buf);i) (Buf[i]’\\n’){Buf[i]=’\\0’;;} } //0:OK //-1:Cannotopenfile //-2:Nomatchfieldfound READINI::GetField(char*FileName,char*Group,char*Item,Postion,char*OutStr) { charBuf[300]; i=0,FLAG=0; char*ptr; FILE*Ptr; ((Ptr=fopen(FileName,\"rt\"))NULL) -1; while(!FLAG) { (fgets(Buf,256,Ptr)NULL) {FLAG=2;;} GetZero(Buf); (!stricmp(Buf,Group)) { for(;;) { (fgets(Buf,256,Ptr)NULL) ; GetZero(Buf); (Buf[i]’[’){FLAG=2;;} (Buf[i]’<’){FLAG=2;;} (Buf[i]’(’){FLAG=2;;} ptr=strtok(Buf,\"=\"); GetZero(ptr); //GetZeroR(ptr); [Page] (!stricmp(Item,ptr)) { for(i=0;i<Postion+1;i) { ptr=strtok(NULL,\",\"); GetZero(ptr); //GetZeroR(ptr); (ptrNULL) {(FLAG!=1)FLAG=2;;} {strcpy(OutStr,ptr);FLAG=1;} } } (FLAG1||FLAG2); } } } GetZero(OutStr); fclose(Ptr); (FLAG1) 0; -2; } //0:OK //-1:Cannotopenfile //-2:Nomatchfieldfound READINI::GetField(char*FileName,char*Group,char*Item,Postion,&OutStr) { charOut_Str[300]; i=GetField(FileName,Group,Item,Postion,Out_Str); OutStr=atoi(Out_Str); i; } //0:OK //-1:Cannotopenfile //-2:Nomatchfieldfound READINI::GetField(char*FileName,char*Group,char*Item,Postion,float&OutStr) { charOut_Str[300]; i=GetField(FileName,Group,Item,Postion,Out_Str); OutStr=atof(Out_Str); i; } //0:OK //-1:Cannotopenfile //-2:Nomatchfieldfound READINI::GetField(char*FileName,char*Group,char*Item,Postion,long&OutStr) [Page] { charOut_Str[300]; i=GetField(FileName,Group,Item,Postion,Out_Str); OutStr=atol(Out_Str); i; } //0:OK //-1:CannotgetParameters READINI::Get1Par(Num,char*Par,char*ParStr) { charstrptr[MAXBUFFER]; char*ptr; strcpy(strptr,ParStr); ptr=strtok(strptr,\",\"); (ptrNULL)-1; //GetZero(ptr); for(i=0;i<Num;i) { (ptrNULL) -1; ptr=strtok(NULL,\",\"); } (ptrNULL)-1; GetZero(ptr); strcpy(Par,ptr); 0; } //0:OK //-1:CannotgetParameters READINI::Get1Par(Num,*Par,char*ParStr) { charPar_Str[257]; i=Get1Par(Num,Par_Str,ParStr); *Par=atoi(Par_Str); i; } //0:OK //-1:CannotgetParameters READINI::Get1Par(Num,float*Par,char*ParStr) { charPar_Str[257]; i=Get1Par(Num,Par_Str,ParStr); *Par=atof(Par_Str); i; } //0:OK //-1:CannotgetParameters READINI::Get1Par(Num,unsigned*Par,char*ParStr) { charPar_Str[257]; i=Get1Par(Num,Par_Str,ParStr); *Par=atoi(Par_Str); [Page] i; } //0:OK //-1:CannotgetParameters READINI::Get1Par(Num,long*Par,char*ParStr) { charPar_Str[257]; i=Get1Par(Num,Par_Str,ParStr); *Par=atol(Par_Str); i; } char*READINI::GetVersion { \"1.30\"; } 由于是纯C代码在VC/EVC中直接使用即可 0
相关文章读者评论发表评论 |
|