Introdução:
Olá galerinha bonita hoje venho publicar meu sistema de salvamento (Fini)
Ele trabalha com Cache estilo Y_Ini ou SII e outros sistemas parecidos
Devido meu grande esforço e com ajuda de Dark Team PT fiz o sistema de Leitura e Escrita atualmente mais rápido.
Velocidade:
Fini
Escritas por Segundo: 087269
Leituras por Segundo: 499040
Funções por Segundo: 057052
Dini
Escritas por Segundo: 221
Leituras por Segundo: 6355
Funções por Segundo: 72
Praticidade:
Para usar é igual o sistema SII,porém claro é um pouco mais rápido.
Use da seguinte Forma:
Abrimos o Arquivo:
pawn Code:
Fini_OpenFile("Arquivo.txt");
Escrevemos e fazemos a Leitura
pawn Code:
Fini_SetStr("Teste","Teste");
Fini_SaveFile(); // sempre salve arquivos depois de terminar antes de ler algo,ou depois de terminar de setar TUDO
Fini_GetStr("Teste");
Fechamos o Arquivo:
pawn Code:
Fini_CloseFile();
Desta forma ficando o Código:
pawn Code:
Fini_OpenFile("Arquivo.txt");
Fini_SetStr("Teste","Teste");
Fini_SaveFile();
Fini_GetStr("Teste");
Fini_CloseFile();
Outras Informações:
Devido a eu estrar com um pouco de pressa pois sairei daqui a pouco eu fiz apenas a base,caso querem escrever números deve formatar como String da seguinte forma:
pawn Code:
new str[3];
format(str,4,"%d",NUMERO_AQUI);
Fini_SetStr("Teste",str);
Assim escreveremos o número no arquivo
Code:
Teste=10
Códigos:
Fini:
pawn Code:
#define maxtag (00244)
#define maxfile (99999)
#define maxname (00064)
#define Fini_Exists fexist
#define Fini_GetFloat(%0) floatstr(Fini_GetStr(%0))
static
zNormal1,
zNormal2,
fStr[maxtag],
fTag[maxtag],
fFile[maxfile],
File:zFopenFile,
fName[maxname],
iSource
;
stock
Fini_OpenFile(fname[])
{
zFopenFile = fopen(fname,io_read);
while(fread(zFopenFile,fStr))
strins(fFile,fStr,strlen(fFile),maxfile);
fclose(zFopenFile);
format(fName,maxname,"%s",fname);
return true;
}
stock
Fini_SaveFile()
{
fremove(fName);
zFopenFile = fopen(fName,io_write);
fwrite(zFopenFile,fFile);
fclose(zFopenFile);
return true;
}
stock
Fini_CloseFile()
{
fFile[0] = '\0';
fName[0] = '\0';
return true;
}
stock
Fini_GetStr(ftag[])
{
zNormal1 = strfind(fFile,ftag,true);
zNormal2 = (zNormal1 + (strlen(ftag)));
strmid(fTag,fFile,zNormal2,(zNormal2 + maxtag),maxtag);
zNormal2 = strfind(fTag,"\n",true);
strmid(fStr,fTag,1,zNormal2 ,maxtag);
return fStr;
}
stock
Fini_SetStr(ftag[],fstr[])
{
format(fTag,maxtag,"%s=%s",ftag,Fini_GetStr(ftag));
zNormal1 = strfind(fFile,ftag,true);
if(zNormal1 != -1)
{
iSource = strlen( fTag ) ;
format(fStr,maxtag,"%s=%s",ftag,fstr);
strdel(fFile,zNormal1 ,(zNormal1 + iSource));
format(fStr,128,"%s",fStr);
strins(fFile,fStr,zNormal1 ,128);
}
else
{
format(fStr,maxtag,"%s=%s\r\n",ftag,fstr);
strins(fFile,fStr,strlen(fFile));
}
return true;
}
stock
Fini_Create(nFile[])
{
if (Fini_Exists(nFile)) return false;
new File:cFile = fopen(nFile,io_write);
return fclose(cFile);
}
stock
Fini_SetVal(ftag[],fval)
{
static Seting[24];
format(Seting,maxtag,"%d",fval);
Fini_SetStr(ftag,Seting);
return true;
}
stock
Fini_SetFloat(ftag[],Float:fval)
{
static Seting[24];
format(Seting,maxtag,"%f",fval);
Fini_SetStr(ftag,Seting);
return true;
}
stock
Fini_SetBool(ftag[],bool:fval)
{
static Seting[24];
format(Seting,maxtag,"%d",fval);
Fini_SetStr(ftag,Seting);
return true;
}
stock
Fini_IsSet(ftag[])
{
format(fTag,maxtag,"%s=%s",ftag,Fini_GetStr(ftag));
zNormal1 = strfind(fFile,ftag,true);
if(zNormal1 != -1)
return true;
return false;
}
stock Fini_GetBool(ftag[])
{
new Seting = strval(Fini_GetStr(ftag));
return Seting;
}
stock Fini_GetValue(ftag[])
{
new Seting = strval(Fini_GetStr(ftag));
return Seting;
}
Testes com Dini:
pawn Code:
public OnFilterScriptInit()
{
dini_Create("Dini.txt");
dini_Create("Fini.txt");
new Fini = GetTickCount(),FiniValue;
Fini_OpenFile("Fini.txt");
while(GetTickCount() - Fini < 1000)
{
Fini_SetStr("Key1","Ok1");
Fini_GetStr("Key1");
FiniValue++;
}
Fini_SaveFile();
Fini_CloseFile();
printf("Fini: %d",FiniValue);
new Dini = GetTickCount(),DiniValue;
while(GetTickCount() - Dini < 1000)
{
dini_Set("Dini.txt","Key1","Ok1");
dini_Get("Dini.txt","Key1");
DiniValue++;
}
printf("Dini: %d",DiniValue);
return true;
}
Testes de Funções:
pawn Code:
public OnFilterScriptInit()
{
Fini_Create("Fini.txt");
#define SEGUNDOS 1 //coloque aqui o número de segundos para teste de funcoes
new
Fini = GetTickCount(),
FiniValue
;
if(!Fini_Exists("Fini.txt"))
Fini_Create("Fini.txt");
Fini_OpenFile("Fini.txt");
while(GetTickCount() - Fini < (SEGUNDOS * 1000))
{
Fini_SetStr ("DraKoN" , "Kitties" );
Fini_SetBool ("Boolean" , false );
Fini_SetFloat ("Floating" , 1.8 );
Fini_SetVal ("SAMP" , 199 );
FiniValue++;
}
printf("String-%s", Fini_GetStr ("DraKoN"));
printf("Boool - %d", Fini_GetBool ("Boolean"));
printf("Value - %i", Fini_GetValue("SAMP"));
printf("Float - %f", Fini_GetFloat("Floating"));
Fini_SaveFile();
Fini_CloseFile();
printf("Fini: %d Functions in %d Seconds",((FiniValue * 5) + 5) + 4,SEGUNDOS);
return true;
Créditos:
[FeK] Ini File System é criado por:
[FeK] Ini File System é criado por:
Code:
DraKiNs - Desenvolvedor Geral Dark Team PT - Suporte em Geral JhonyTest - Sub-Desenvolvedor ~ Tester
Postador: Juninho_Boy










0 comentários:
Postar um comentário