专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »C 教程 » vb读写ini文件:ini文件纯C++读写实现代码 »正文

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

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: