[Include] bCini5 Cache Include - Final
#1

Bom, o meu desejo era terminar as minhas postagens sobre a bCini...

Entao aн vai a quinta e ъltima bCini...

Agora com funзхes programadas totalmente em inglкs, mais otimizaзгo, correзгo de loops infinitos e setґs / readґs mais rбpidos que DOF2 e mais eficientes que bIni.

Eu nгo tenho muito а dizer, sobre a include, caso vocкs queiram saber mais sobre ela, acessem: https://sampforum.blast.hk/showthread.php?tid=469974

Bom... Vamos ao que interessa!

As funзхes estгo na include e sгo renomeadas para o inglкs: O modo de uso й o mesmo.

Vamos supor que vocк usava bCini3_GetarTexto... Agora vocк deverб usar bCini5_ReadText.

E assim por diante!

Testes de velocidade (Como eu estou sem LightShot, eu vou digitar) ~>

Quote:
bCini (Mexendo com o Sistema de Arquivos): 13487 ms, Funcionalidade: 90%.
bCini2 (Mexendo com o Sistema de Arquivos): 6524 ms, Funcionalidade: 92%.
bCini3 (Mexendo com o Sistema de Arquivos): 5347 ms, Funcionalidade: 91%.
bCini4 (Mexendo com o Sistema de Arquivos): 3321 ms, Funcionalidade: 95%.
bCini5 (Mexendo com o Sistema de Arquivos): 1291 ms, Funcionalidade: 100%.
DOF (Mexendo com o Sistema de Arquivos): 5564 ms, Funcionalidade: 97%.
DOF2 (Mexendo com o Sistema de Arquivos): 1294 ms, Funcionalidade: 100%.
RocksFile (Mexendo com o Sistema de Arquivos): 3215 ms, Funcionalidade: 92%.
bIni (Mexendo com o Sistema de Arquivos): 954 ms, Funcionalidade: 87%.
Y_Ini (Mexendo com o Sistema de Arquivos): 634 ms, Funcionalidade: 100%.

Foi um pouco melhor do quк eu esperava, pois com a funcionalidade 100%, estгo Y_Ini, bCini5 e DOF2.

pawn Код:
// Include bCini5

#define bCini5_Open fopen
#define bCini5_Exists fexist
#define bCini5_Write fwrite
#define bCini5_Read fread
#define bCini5_Close fclose

#define bCini5_Create(%0) if(!bCini5_Exists(%0)) bCini5_Close(bCini5_Open(%0,io_write)) && bCini5_OpenArchive(%0)
#define bCini5_Delete(%0) if(bCini5_Exists(%0)) fremove(%0)

// Definitions Of Include

#define bCini5_Lines 100
#define bCini5_Capacity 128

#define bCini5_Separator "="

#define bCini5_Console_Fail "O arquivo nгo existe! "
#define bCini5_Console_Up "Console do arquivo "

// Variables

stock bCini5_Archive_Line_Value[bCini5_Lines][bCini5_Capacity];
stock bCini5_Archive_Value[bCini5_Lines][bCini5_Capacity];

stock bCini5_Archive_Name[bCini5_Capacity];

stock bCini5_Archive_Lines;
stock bCini5_Archive_Line_ID;

stock bool:bCini5_Archive_Has_Been_Used;

// Functions

stock Include_bCini5[bCini5_Capacity];

#define bCini5_ReadInt(%0,%1) strval(bCini5_ReadText(%0,%1))
#define bCini5_ReadBool(%0,%1) bool:strval(bCini5_ReadText(%0,%1))
#define bCini5_ReadFloat(%0,%1) floatstr(bCini5_ReadText(%0,%1))

#define bCini5_SetInt(%0,%1,%2) format(Include_bCini5,sizeof(Include_bCini5),"%d",%2) && bCini5_SetText(%0,%1,Include_bCini5)
#define bCini5_SetBool(%0,%1,%2) format(Include_bCini5,sizeof(Include_bCini5),"%d",%2) && bCini5_SetText(%0,%1,Include_bCini5)
#define bCini5_SetFloat(%0,%1,%2) format(Include_bCini5,sizeof(Include_bCini5),"%f",%2) && bCini5_SetText(%0,%1,Include_bCini5)

#define bCini5_CleanArchive(%0) if(bCini5_Exists(%0)) bCini5_OpenArchive(%0); for(new i; i < bCini5_Archive_Lines; ++i) bCini5_DeleteSet(%0,bCini5_Archive_Line_Value[i])
#define bCini5_Log(%0,%1) new File:bCini5_Archive = bCini5_Open(%0,io_append); bCini5_Write(bCini5_Archive,%1) && bCini5_Close(bCini5_Archive)

stock bCini5_SetText(archive[],line[],value[])
{
    if(bCini5_Archive_Lines == bCini5_Lines)
    {
        return 1;
    }
    if(!bCini5_Exists(archive))
    {
        bCini5_Create(archive);
    }
    if(!line[0])
    {
        strcat(line,"(null)",7);
    }
    if(!value[0])
    {
        strcat(value,"(null)",7);
    }
    bCini5_OpenArchive(archive);

    new bCini5_1,bCini5_2,bCini5_Archive[bCini5_Capacity];

    format(bCini5_Archive,sizeof(bCini5_Archive),"%s%s%s\r\n",line,bCini5_Separator,value);

    bCini5_1 = strlen(bCini5_Archive);
    bCini5_2 = strlen(value);

    if(!bCini5_IsSet(archive,line))
    {
        strmid(bCini5_Archive_Line_Value[bCini5_Archive_Lines],bCini5_Archive,0,bCini5_1,bCini5_1+1);
        strmid(bCini5_Archive_Value[bCini5_Archive_Lines],value,0,bCini5_2,bCini5_2+1);

        ++bCini5_Archive_Lines;
    }
    else
    {
        strmid(bCini5_Archive_Line_Value[bCini5_Archive_Line_ID],bCini5_Archive,0,bCini5_1,bCini5_1+1);
        strmid(bCini5_Archive_Value[bCini5_Archive_Line_ID],value,0,bCini5_2,bCini5_2+1);
    }
    bCini5_Archive_Has_Been_Used = true;
    return 1;
}
stock bCini5_ReadText(archive[],line[])
{
    if(!bCini5_Exists(archive) || !bCini5_IsSet(archive,line) || !line[0])
    {
        return bCini5_Archive_Value[bCini5_Archive_Lines];
    }
    return bCini5_Archive_Value[bCini5_Archive_Line_ID];
}
stock bCini5_IsSet(archive[],line[])
{
    if(!bCini5_Exists(archive) || !line[0])
    {
        return 0;
    }
    bCini5_OpenArchive(archive);

    bCini5_Archive_Line_ID = bCini5_Archive_Lines;

    for(new i; i < bCini5_Archive_Lines; ++i)
    {
        if(bCini5_Archive_Line_Value[i][0])
        {
            if(strfind(bCini5_Archive_Line_Value[i],bCini5_Separator,true) ^ -1)
            {
                if(strfind(bCini5_Archive_Line_Value[i],line,true) ^ -1)
                {
                    bCini5_Archive_Line_ID = i;
                    return 1;
                }
            }
        }
    }
    return 0;
}
stock bCini5_DeleteSet(archive[],line[])
{
    if(!bCini5_Exists(archive) || !bCini5_IsSet(archive,line))
    {
        return 1;
    }
    bCini5_Archive_Line_Value[bCini5_Archive_Line_ID][0] = 0;
    bCini5_Archive_Value[bCini5_Archive_Line_ID][0] = 0;

    bCini5_Archive_Has_Been_Used = true;
    return 1;
}
stock bCini5_Console(archive[])
{
    if(!bCini5_Exists(archive))
    {
        printf("%s(%s)",bCini5_Console_Fail,archive);
        return 1;
    }
    bCini5_OpenArchive(archive);

    printf("%s%s:\r\n",bCini5_Console_Up,archive);

    for(new i; i < bCini5_Archive_Lines; ++i)
    {
        if(bCini5_Archive_Line_Value[i][0])
        {
            print(bCini5_Archive_Line_Value[i]);
        }
    }
    return 1;
}
stock bCini5_Copy(archive[],archive2[],bool:delete_archive)
{
    if(!bCini5_Exists(archive))
    {
        return 1;
    }
    bCini5_OpenArchive(archive);

    new File:bCini5_Archive_Used = bCini5_Open(archive2,io_write);

    for(new i; i < bCini5_Archive_Lines; ++i)
    {
        if(bCini5_Archive_Line_Value[i][0])
        {
            bCini5_Write(bCini5_Archive_Used,bCini5_Archive_Line_Value[i]);

            bCini5_Archive_Line_Value[i][0] = 0;
            bCini5_Archive_Value[i][0] = 0;
        }
    }
    bCini5_Close(bCini5_Archive_Used);

    if(delete_archive)
    {
        bCini5_Delete(archive);
    }
    return 1;
}

// Open & Close

stock bCini5_OpenArchive(archive[])
{
    if(!bCini5_Exists(archive) || bCini5_Archive_Name[0] && strcmp(bCini5_Archive_Name[0],archive,true) == 0)
    {
        return 1;
    }
    bCini5_CloseArchive();

    new bCini5_1,i,bCini5_Archive[bCini5_Capacity],File:bCini5_Archive_Used = bCini5_Open(archive,io_read);

    bCini5_1 = strlen(archive);

    strmid(bCini5_Archive_Name,archive,0,bCini5_1,bCini5_1+1);

    bCini5_Archive_Lines = 1;

    while(bCini5_Read(bCini5_Archive_Used,bCini5_Archive))
    {
        if(bCini5_Archive[0])
        {
            i = strlen(bCini5_Archive);

            strmid(bCini5_Archive_Line_Value[bCini5_Archive_Lines],bCini5_Archive,0,i,i+1);

            if(bCini5_Archive[i-1] == '\r' || bCini5_Archive[i-1] == '\n')
            {
                bCini5_Archive[i-1] = 0;
            }
            if(bCini5_Archive[i-2] == '\r' || bCini5_Archive[i-2] == '\n')
            {
                bCini5_Archive[i-2] = 0;
            }
            i = strlen(bCini5_Archive);

            strmid(bCini5_Archive_Value[bCini5_Archive_Lines],bCini5_Archive,strfind(bCini5_Archive,bCini5_Separator)+1,i,i+1);

            ++bCini5_Archive_Lines;
        }
    }
    bCini5_Close(bCini5_Archive_Used);
    return 1;
}
stock bCini5_CloseArchive()
{
    if(!bCini5_Exists(bCini5_Archive_Name) || !bCini5_Archive_Has_Been_Used)
    {
        if(bCini5_Archive_Has_Been_Used)
        {
            for(new i; i < bCini5_Archive_Lines; ++i)
            {
                if(bCini5_Archive_Line_Value[i][0])
                {
                    bCini5_Archive_Line_Value[i][0] = 0;
                    bCini5_Archive_Value[i][0] = 0;
                }
            }
            bCini5_Archive_Has_Been_Used = false;
        }
        bCini5_Archive_Name[0] = 0;
        bCini5_Archive_Lines = 0;

        return 1;
    }
    if(bCini5_Archive_Has_Been_Used)
    {
        new File:bCini5_Archive_Used = bCini5_Open(bCini5_Archive_Name,io_write);

        for(new i; i < bCini5_Archive_Lines; ++i)
        {
            if(bCini5_Archive_Line_Value[i][0])
            {
                bCini5_Write(bCini5_Archive_Used,bCini5_Archive_Line_Value[i]);

                bCini5_Archive_Line_Value[i][0] = 0;
                bCini5_Archive_Value[i][0] = 0;
            }
        }
        bCini5_Close(bCini5_Archive_Used);
        bCini5_Archive_Has_Been_Used = false;
    }
    bCini5_Archive_Name[0] = 0;
    bCini5_Archive_Lines = 0;

    return 1;
}

// End Of Include
E assim se encerra os cуdigos destinados а bCini, muito obrigado а quem me ajudou todo este tempo.

CRЙDITOS:

Biel_COP - Programaзгo Geral e Idealizaзгo de todas as versхes da bCini.
Willian Luigi - Ajuda na bCini e bCini2.
Ips Bruno - Ajuda na bCini.
zSuYaNw - Ajuda na funзгo de criar arquivos.
DracoBlue - Lуgica proposta na bCini, bCini2 e bCini3.
Reply
#2

Nossa, pensei que tinha abandonado o pawn.
Que bom que finalizou seu projeto
Reply
#3

Nгo kk'

Eu renasci das cinzas pelo tуpico do Josma.

Eu tinha que dar o meu 'post naquele tуpico'.

Mas eu queria a minha conta de volta e pelo jeito nгo vai colar :/
Reply
#4

Biel_COP?
Pensei q tu tinha infartado cara '-'
Eu te via na HTS todo dia , os lek te zuava (eutm) kk'
Ai tu desapareceu
Atй senti falta kk'
Voltando ao tуpico, bela include, mais ainda nгo vou trocar por sii xD
Talves eu troco
Reply
#5

Й muito bom ver que vc ainda nao desistiu desses seu projeto ai.

Gostei e vi as suas evolucoes.

Parabens cara.
Reply
#6

Muito boa a include , Nota 10 .
Reply
#7

Include atualizada.

Agora teve um ganho de 0.354% na velocidade.
Reply
#8

Parece ser uma boa include, mas mesmo assim prefiro dof2
Reply
#9

1 ano com pensamento em ser melhor que eu, AUHEAUHEUAHHEHA.

Nгo vou enganar, a include tб boa mesmo.. Parabйns, mesmo sendo um cuzгo.
Reply
#10

eae de novo fera, parabйns pela include, e outra, vc fechou o server ?
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)