Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define ITP(%0) pini:%0
- #define PTI(%0) int:%0
- #define IOP_PARAMS_4 30// Максимально открытых файлов
- #define IOP_PARAMS_6 30 // Максимальная длина строки адреса файла
- #define IOP_PARAMS_7 20 // Максимальная длина имени ключа
- #define IOP_PARAMS_8 2005 // Максимум ключей в 1 файле
- #define IOP_PARAMS_9 100 // Максимальная длина значения ключа
- #define ERROR_EXIST_FAYL -1
- #define ERROR_CREATE_FAYL -2
- #define ERROR_DELETE_FAYL -3
- #define ERROR_OPEN_FAYL -4
- #define ERROR_CLOSE_FAYL -5
- #define ERROR_SET_FAYL -6
- #define ERROR_GET_FAYL -7
- static stock pini:FILEOPENNED[IOP_PARAMS_4],
- FILEADRESS[pini:IOP_PARAMS_4][IOP_PARAMS_6],
- FILEKEYKOLVO[pini:IOP_PARAMS_4],
- FILEKEY[pini:IOP_PARAMS_4][IOP_PARAMS_8][IOP_PARAMS_7],
- FILEKEYVALUE[pini:IOP_PARAMS_4][IOP_PARAMS_8][IOP_PARAMS_9],
- hashstr[IOP_PARAMS_7+IOP_PARAMS_9+10],
- positionf;
- stock pini:OpenFile(adress[])
- {
- new File:Fili;
- Fili=fopen(adress,io_read);
- if (!Fili)
- {
- Fili=fopen(adress,io_read);
- if (!Fili) {fclose(Fili);return pini:ERROR_OPEN_FAYL;}
- }
- new pini:pFile=pini:-1;
- for(new i=1;i<IOP_PARAMS_4,pFile==pini:-1;i++)
- pFile= (FILEOPENNED[i]==pini:0) ? (pini:i) : pFile;
- if pFile==pini:-1 *then {fclose(Fili);return pini:ERROR_OPEN_FAYL;}
- FILEOPENNED[int:pFile]=pFile;
- for FILEKEYKOLVO[pFile]=-1; (FILEKEYKOLVO[pFile]++)<IOP_PARAMS_8-1 && fread(Fili,hashstr); do
- {
- positionf=strfind(hashstr,"=");
- strmid(FILEKEY[pFile][FILEKEYKOLVO[pFile]],hashstr,0,positionf);
- strmid(FILEKEYVALUE[pFile][FILEKEYKOLVO[pFile]],hashstr,positionf+1,strlen(hashstr)-1);
- }
- fclose(Fili);
- strmid(FILEADRESS[pFile],adress,0,IOP_PARAMS_6);
- return pFile;
- }
- stock CloseFile(pini:File)
- {
- if !FILEOPENNED[int:File] *then return pini:ERROR_CLOSE_FAYL;
- fremove(FILEADRESS[File]);
- new File:pFile;// = fopen(FILEADRESS[File]);
- //fclose(pFile);
- pFile = fopen(FILEADRESS[File],io_write);
- if !pFile *then return pini:ERROR_CLOSE_FAYL;
- for positionf=-1;positionf++<(FILEKEYKOLVO[File]-1); do
- {
- fwrite(pFile,FILEKEY[File][positionf]);
- fputchar(pFile,'=',false);
- fwrite(pFile,FILEKEYVALUE[File][positionf]);
- fputchar(pFile,'\n',true);
- FILEKEY[File][positionf]="";
- FILEKEYVALUE[File][positionf]="";
- }
- fclose(pFile);
- FILEOPENNED[File]=pini:0;
- FILEADRESS[File][0]=0;
- FILEKEYKOLVO[File]=0;
- return true;
- }
- stock SetStringFile(pini:File,key[],source[])
- {
- if !FILEOPENNED[int:File] *then return pini:ERROR_SET_FAYL;
- positionf=-1;
- for new i=-1;i++<(FILEKEYKOLVO[File]-1) && positionf==-1; do
- if FILEKEY[File][i][0]==key[0] *then
- positionf=strcmp(key,FILEKEY[File][i],true)==0 ? i:-1;
- if positionf==-1 *then
- {
- if 1+FILEKEYKOLVO[File] >IOP_PARAMS_8 *then return pini:ERROR_SET_FAYL;
- FILEKEYKOLVO[File]+=1;
- positionf=FILEKEYKOLVO[File]-1;
- format(FILEKEY[File][positionf],IOP_PARAMS_7,"%s",key);
- }
- format(FILEKEYVALUE[File][positionf],IOP_PARAMS_9,"%s",source);
- return true;
- }
- stock GetStringFile(pini:File,const key[],dest[])
- {
- if !FILEOPENNED[int:File] *then return pini:ERROR_GET_FAYL;
- positionf=-1;
- for new i=-1;i++<(FILEKEYKOLVO[File]-1) && positionf==-1; do
- if FILEKEY[File][i][0]==key[0] *then
- positionf=strcmp(key,FILEKEY[File][i],true)==0 ? i:-1;
- if positionf==-1 *then return ERROR_GET_FAYL;
- format(dest,IOP_PARAMS_9,"%s",FILEKEYVALUE[File][positionf]);
- return true;
- }
- stock SetIntegerFile(pini:File,key[],source)
- {
- if !FILEOPENNED[int:File] *then return pini:ERROR_SET_FAYL;
- positionf=-1;
- for new i=-1;i++<(FILEKEYKOLVO[File]-1) && positionf==-1; do
- if FILEKEY[File][i][0]==key[0] *then
- positionf=strcmp(key,FILEKEY[File][i],true)==0 ? i:-1;
- if positionf==-1 *then
- {
- if(1+FILEKEYKOLVO[File] >IOP_PARAMS_8) return pini:ERROR_SET_FAYL;
- FILEKEYKOLVO[File]+=1;
- positionf=FILEKEYKOLVO[File]-1;
- format(FILEKEY[File][positionf],IOP_PARAMS_7,"%s",key);
- }
- format(FILEKEYVALUE[File][positionf],IOP_PARAMS_9,"%d",source);
- return true;
- }
- stock GetIntegerFile(pini:File,const key[],&dest)
- {
- if !FILEOPENNED[int:File] *then return pini:ERROR_GET_FAYL;
- positionf=-1;
- for new i=-1;i++<(FILEKEYKOLVO[File]-1) && positionf==-1; do
- if FILEKEY[File][i][0]==key[0] *then
- positionf=strcmp(key,FILEKEY[File][i],true)==0 ? i:-1;
- if positionf==-1 *then return ERROR_GET_FAYL;
- dest=strval(FILEKEYVALUE[File][positionf]);
- return true;
- }
- stock SetFloatFile(pini:File,key[],Float:source)
- {
- if !FILEOPENNED[int:File] *then return pini:ERROR_SET_FAYL;
- positionf=-1;
- for new i=-1;i++<(FILEKEYKOLVO[File]-1) && positionf==-1; do
- if FILEKEY[File][i][0]==key[0] *then
- positionf=strcmp(key,FILEKEY[File][i],true)==0 ? i:-1;
- if positionf==-1 *then
- {
- if(1+FILEKEYKOLVO[File] >IOP_PARAMS_8) return pini:ERROR_SET_FAYL;
- FILEKEYKOLVO[File]+=1;
- positionf=FILEKEYKOLVO[File]-1;
- format(FILEKEY[File][positionf],IOP_PARAMS_7,"%s",key);
- }
- format(FILEKEYVALUE[File][positionf],IOP_PARAMS_9,"%f",source);
- return true;
- }
- stock GetFloatFile(pini:File,const key[],&Float:dest)
- {
- if !FILEOPENNED[int:File] *then return pini:ERROR_GET_FAYL;
- positionf=-1;
- for new i=-1;i++<(FILEKEYKOLVO[File]-1) && positionf==-1; do
- if FILEKEY[File][i][0]==key[0] *then
- positionf=strcmp(key,FILEKEY[File][i],true)==0 ? i:-1;
- if positionf==-1 *then return ERROR_GET_FAYL;
- dest=floatstr(FILEKEYVALUE[File][positionf]);
- return true;
- }
- stock SetBooleanFile(pini:File,key[],bool:source)
- {
- if !FILEOPENNED[int:File] *then return pini:ERROR_SET_FAYL;
- positionf=-1;
- for new i=-1;i++<(FILEKEYKOLVO[File]-1) && positionf==-1; do
- if FILEKEY[File][i][0]==key[0] *then
- positionf=strcmp(key,FILEKEY[File][i],true)==0 ? i:-1;
- if positionf==-1 *then
- {
- if(1+FILEKEYKOLVO[File] >IOP_PARAMS_8) return pini:ERROR_SET_FAYL;
- FILEKEYKOLVO[File]+=1;
- positionf=FILEKEYKOLVO[File]-1;
- format(FILEKEY[File][positionf],IOP_PARAMS_7,"%s",key);
- }
- if(source)
- format(FILEKEYVALUE[File][positionf],IOP_PARAMS_9,"1");
- else
- format(FILEKEYVALUE[File][positionf],IOP_PARAMS_9,"0");
- return true;
- }
- stock GetBooleanFile(pini:File,const key[],&bool:dest)
- {
- if !FILEOPENNED[int:File] *then return pini:ERROR_GET_FAYL;
- positionf=-1;
- for new i=-1;i++<(FILEKEYKOLVO[File]-1) && positionf==-1; do
- if FILEKEY[File][i][0]==key[0] *then
- positionf=strcmp(key,FILEKEY[File][i],true)==0 ? i:-1;
- if positionf==-1 *then return ERROR_GET_FAYL;
- dest = strval(FILEKEYVALUE[File][positionf])==1 ? true : false;
- return true;
- }
- stock CreateFile(adress[])
- {
- if fexist(adress) *then return ERROR_EXIST_FAYL;
- new File:Fili=fopen(adress);
- if(!int:Fili) return ERROR_CREATE_FAYL;
- fclose(Fili);
- return true;
- }
- stock DeleteFile(adress[])
- {
- if(!fexist(adress)) return ERROR_EXIST_FAYL;
- if(!fremove(adress)) return ERROR_DELETE_FAYL;
- return true;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement