[Include] DFile ~ Sistema de Salvamento
#1

Introduзгo
Farei depois, com mais calma.

Download(DFile.inc)
pawn Код:
#if defined _dfile_included
  #endinput
#endif
#define _dfile_included
#pragma library dfile

/**/
stock FixNumber[20];

/* Criar */
#define DFile_Create(%0) \
                                                    if(!fexist(%0)) fclose(fopen(%0,io_write))
/* Remover */
#define DFile_Remove(%0) \
                                                    if(fexist(%0)) fremove(%0)
/* Verificar Existencia */
#define DFile_Exists(%0) \
                                                    fexist(%0)
/* Getagem */
#define DFile_GetInt(%0,%1) \
                                                    strval(DFile_Get(%0, %1))
#define DFile_GetString(%0,%1) \
                                                    DFile_Get(%0, %1)
#define DFile_GetBool(%0,%1) \
                                                    DFile_Get(%0, %1)
#define DFile_GetFloat(%0,%1) \
                                                    floatstr(DFile_Get(%0, %1))
/* Setagem */
#define DFile_SetInt(%0,%1,%2) \
                                                    format(FixNumber, sizeof(FixNumber), "%d", %2), DFile_SetEx(%0, %1, FixNumber)
#define DFile_SetString(%0,%1,%2) \
                                                    DFile_SetEx(%0, %1, %2)
#define DFile_SetBool(%0,%1,%2) \
                                                    DFile_SetEx(%0, %1, %2 ? "true" : "false" )
#define DFile_SetFloat(%0,%1,%2) \
                                                    format(FixNumber, sizeof(FixNumber), "%f", %2), DFile_SetEx(%0, %1, FixNumber)

new _@strwritec[1000], _@strtoread[200], _@strtowrite[128];
stock DFile_SetEx(file[], tag[], value[])
{

    static File:_@filetowrite, _@idx;
   
    format(_@strtowrite, sizeof(_@strtowrite), "%s=%s\r\n", tag, value);

    if(!fexist(file))
        return
            _@filetowrite = fopen(file, io_write),
            fwrite(_@filetowrite, _@strtowrite),
            fclose(_@filetowrite)
        ;

    _@filetowrite = fopen(file, io_read);
    while(fread(_@filetowrite, _@strtoread))
    {
        if(~(_@idx = strfind(_@strtoread, "=")))
        {
            _@strtoread[_@idx] = EOS;
            if(strcmp(_@strtoread, tag))
            {
                _@strtoread[_@idx] = '=';
                strcat(_@strwritec, _@strtoread);
            }
        }
    }
    fclose(_@filetowrite);
    _@filetowrite = fopen(file, io_write);
    strcat(_@strwritec, _@strtowrite);

    fwrite(_@filetowrite, _@strwritec);
    return fclose(_@filetowrite), _@strwritec[0] = EOS, _@strtoread[0] = EOS, _@strtowrite[0] = EOS;
}

stock DFile_Get(file[], tag[])
{
    new _@read_s[128], _@idx;

    if(!file[0]) return _@read_s;
    if(!fexist(file)) return _@read_s;
    if(!tag[0]) return _@read_s;

    new File: _@arq = fopen(file, io_read);

    while (fread(_@arq, _@read_s))
    {
        if(~(_@idx = strfind(_@read_s, "=", false)))
        {
            _@read_s[_@idx] = '\0';
            if (strcmp(_@read_s, tag) == 0)
            {
                fclose(_@arq),
                format(_@read_s, sizeof(_@read_s), "%s", _@read_s[++_@idx]);
                return _@read_s;
            }
        }
    }
    return _@read_s;
}
Creditos
DanDRT(Escrita).
Willian_Luigi(Leitura).
Dolby, BlueX e Bruno(Ajudaram-me muito).
IpsTeam ~ Uma das melhores equipes de programaзгo.

Ps: nгo estб tгo veloz... pensei primeiro na funcionalidade da include e ainda falta melhorar muita coisa.
Reply


Messages In This Thread
DFile ~ Sistema de Salvamento - by DanDRT - 22.10.2013, 21:30
Re: DFile ~ Sistema de Salvamento - by WLSF - 22.10.2013, 21:33
Respuesta: Re: DFile ~ Sistema de Salvamento - by DanDRT - 22.10.2013, 21:34
Re: DFile ~ Sistema de Salvamento - by BielCOP - 22.10.2013, 21:36
Re: DFile ~ Sistema de Salvamento - by WLSF - 22.10.2013, 22:03
Respuesta: Re: DFile ~ Sistema de Salvamento - by DanDRT - 22.10.2013, 22:16
Re: DFile ~ Sistema de Salvamento - by zPain - 23.10.2013, 12:40
Respuesta: Re: DFile ~ Sistema de Salvamento - by DanDRT - 23.10.2013, 12:48
Re: Respuesta: Re: DFile ~ Sistema de Salvamento - by zPain - 23.10.2013, 12:56
Respuesta: Re: Respuesta: Re: DFile ~ Sistema de Salvamento - by DanDRT - 23.10.2013, 13:04

Forum Jump:


Users browsing this thread: 2 Guest(s)