Advertisement
DanGT

DFile

Oct 21st, 2013
441
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.90 KB | None | 0 0
  1. #if defined _dfile_included
  2.   #endinput
  3. #endif
  4. #define _dfile_included
  5. #pragma library dfile
  6.  
  7. /**/
  8. stock FixNumber[20];
  9.  
  10. /* Criar */
  11. #define DFile_Create(%0) \
  12.                                                     if(!fexist(%0)) fclose(fopen(%0,io_write))
  13. /* Remover */
  14. #define DFile_Remove(%0) \
  15.                                                     if(fexist(%0)) fremove(%0)
  16. /* Verificar Existencia */
  17. #define DFile_Exists(%0) \
  18.                                                     fexist(%0)
  19. /* Getagem */
  20. #define DFile_GetInt(%0,%1) \
  21.                                                     strval(DFile_Get(%0, %1))
  22. #define DFile_GetString(%0,%1) \
  23.                                                     DFile_Get(%0, %1)
  24. #define DFile_GetBool(%0,%1) \
  25.                                                     DFile_Get(%0, %1)
  26. #define DFile_GetFloat(%0,%1) \
  27.                                                     floatstr(DFile_Get(%0, %1))
  28. /* Setagem */
  29. #define DFile_SetInt(%0,%1,%2) \
  30.                                                     format(FixNumber, sizeof(FixNumber), "%d", %2), DFile_SetEx(%0, %1, FixNumber)
  31. #define DFile_SetString(%0,%1,%2) \
  32.                                                     DFile_SetEx(%0, %1, %2)
  33. #define DFile_SetBool(%0,%1,%2) \
  34.                                                     DFile_SetEx(%0, %1, %2 ? "true" : "false" )
  35. #define DFile_SetFloat(%0,%1,%2) \
  36.                                                     format(FixNumber, sizeof(FixNumber), "%f", %2), DFile_SetEx(%0, %1, FixNumber)
  37.  
  38. new _@strwritec[1000], _@strtoread[200], _@strtowrite[128];
  39. stock DFile_SetEx(file[], tag[], value[])
  40. {
  41.     static File:_@filetoread, File:_@filetowrite;
  42.  
  43.     _@strwritec[0] = EOS;
  44.     _@strtoread[0] = EOS;
  45.     _@strtowrite[0] = EOS;
  46.  
  47.     format(_@strtowrite, sizeof(_@strtowrite), "%s=%s\r\n", tag, value);
  48.  
  49.     if(!fexist(file))
  50.         return
  51.             _@filetowrite = fopen(file, io_write),
  52.             fwrite(_@filetowrite, _@strtowrite),
  53.             fclose(_@filetowrite)
  54.         ;
  55.     _@filetoread = fopen(file, io_read), _@filetowrite = fopen(file, io_write);
  56.     while(fread(_@filetoread, _@strtoread))
  57.     {
  58.         if(strfind(_@strtoread, tag, false) == -1)
  59.             strcat(_@strwritec, _@strtoread);
  60.         else
  61.             strcat(_@strwritec, _@strtowrite);
  62.     }
  63.     fclose(_@filetoread);
  64.     strcat(_@strwritec, _@strtowrite);
  65.  
  66.     fwrite(_@filetowrite, _@strwritec);
  67.     return fclose(_@filetowrite);
  68. }
  69.  
  70. stock DFile_Get(file[], tag[])
  71. {
  72.     new _@read_s[128], _@idx;
  73.  
  74.     if(!file[0]) return _@read_s;
  75.     if(!fexist(file)) return _@read_s;
  76.     if(!tag[0]) return _@read_s;
  77.  
  78.     new File: _@arq = fopen(file, io_read);
  79.  
  80.     while (fread(_@arq, _@read_s))
  81.     {
  82.         if(~(_@idx = strfind(_@read_s, "=", false)))
  83.         {
  84.             _@read_s[_@idx] = '\0';
  85.             if (strcmp(_@read_s, tag) == 0)
  86.             {
  87.                 format(_@read_s, sizeof(_@read_s), "%s", _@read_s[++_@idx]);
  88.                 fclose(_@arq);
  89.                 return _@read_s;
  90.             }
  91.         }
  92.     }
  93.     return _@read_s;
  94. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement