Advertisement
ipsBruno

(Pawn) bLines V1 - Editor de Arquivos

Jul 18th, 2012
284
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.18 KB | None | 0 0
  1.  
  2. ///////////////////////////////////////////////////////////////////////////////  
  3. //  
  4. //  
  5. //        #### ########   ######     ######## ########    ###    ##     ##  
  6. //         ##  ##     ## ##    ##       ##    ##         ## ##   ###   ###  
  7. //         ##  ##     ## ##             ##    ##        ##   ##  #### ####  
  8. //         ##  ########   ######        ##    ######   ##     ## ## ### ##  
  9. //         ##  ##              ##       ##    ##       ######### ##     ##  
  10. //         ##  ##        ##    ##       ##    ##       ##     ## ##     ##  
  11. //        #### ##         ######        ##    ######## ##     ## ##     ##  
  12. //  
  13. //  
  14. //                    Criado por Bruno da Silva (iPs DraKiNs)  
  15. //  
  16. //          Acesse meu blog sobre programação [url]www.brunodasilva.com.br[/url]  
  17. //  
  18. //                    Seja membro de nossa equipe de programação  
  19. //         [url]http://ips-team.forumeiros.com/t2-informacao-inscricao-na-ips[/url]  
  20. //  
  21. //                    [iPs]TeaM soluções de programação em geral  
  22. //  
  23. //  
  24. //                     bLine Files (mais rápido que bini)  
  25. //  
  26. //  
  27. // > Funções <  
  28. // File_Isset(linha)  
  29. // File_Get(linha)  
  30. // File_GetFloat(linha)  
  31. // File_GetInt(linha)  
  32. // File_GetBool(linha)  
  33. // File_SetBool(linha, bool:valor)  
  34. // File_SetPersonal(linha, "format", var)  
  35. // File_SetInt(linha, Int:valor)  
  36. // File_SetFloat(linha, Float:valor)  
  37. // File_Set(linha, string[])  
  38.  
  39. // File_Open(arquivo[])  
  40. // File_Save() // apenas em onGameModeExit para fechar a include  
  41. //  
  42. //  
  43. //  
  44. /////////////////////////////////////////////////////////////////////////////////  
  45.  
  46. // Configurações  
  47. #define MAX_LINE_FILE   500  
  48. #define MAX_LINE_TEXT   500  
  49. #define MAX_FILE_NAME   064  
  50.  
  51. // Definições e Declarações  
  52.  
  53. stock  
  54.     totalLines,  
  55.     bool:fileOpen,  
  56.     bool:fileWrited,  
  57.     _filed[MAX_LINE_TEXT],  
  58.     blineset[MAX_LINE_FILE],  
  59.     fileOpenned[MAX_FILE_NAME],  
  60.     bcache[MAX_LINE_FILE+1][MAX_LINE_TEXT+1];  
  61.  
  62. #define File_Isset(%0) \  
  63.         !!bcache[%0][0]  
  64.  
  65. #define File_Get(%0) \  
  66.         bcache[%0]  
  67.  
  68. #define File_GetFloat(%0) \  
  69.         floatstr(bcache[%0])  
  70.  
  71. #define File_GetInt(%0) \  
  72.         strval(bcache[%0])  
  73.  
  74. #define File_GetBool(%0) \  
  75.         !strcmp(bcache[%0], "true")  
  76.  
  77. #define File_SetPersonal(%0,%1,%2) \  
  78.         File_Set(%0, (format((_filed[0] = EOS, _filed), MAX_LINE_TEXT, %1, %2), _filed))  
  79.  
  80. #define File_SetInt(%0,%1) \  
  81.         File_SetPersonal(%0, "%d", %1)  
  82.  
  83. #define File_SetFloat(%0,%1) \  
  84.         File_SetPersonal(%0, "%f", %1)  
  85.  
  86. // Funções  
  87.  
  88. stock File_SetBool(line, bool:value) {  
  89.     return value ? File_Set(line, "true") :  File_Set(line, "false");  
  90. }  
  91.  
  92.  
  93. stock File_Set(line, value[]) {  
  94.  
  95.     if(line > totalLines) {  
  96.         totalLines = line;  
  97.     }  
  98.     blineset[line] = 1;  
  99.     return fileWrited = true, bcache[line][0] = EOS, strcat(bcache[line], value, MAX_LINE_TEXT);  
  100. }  
  101.  
  102.  
  103.  
  104. static
  105.     totalContadoINIHASHFILE
  106. ;  
  107. stock File_HashStr(buffer[])  
  108. {  
  109.     totalContadoINIHASHFILE = 0;  
  110.     for(new i = strlen(buffer); i != -1; i--) {  
  111.         totalContadoINIHASHFILE += buffer[i];  
  112.     }  
  113.     return totalContadoINIHASHFILE;  
  114. }  
  115.  
  116.  
  117.  
  118. stock File_Open(file[])  
  119. {  
  120.  
  121.     if(fileOpen && File_HashStr(file) == File_HashStr(fileOpenned) && !strcmp(file, fileOpenned, false)) {  
  122.             return true;  
  123.     }  
  124.     else {  
  125.         File_Save();  
  126.     }  
  127.  
  128.  
  129.     static  
  130.         f_i,  
  131.         len,  
  132.         File: f;  
  133.  
  134.     f = fopen(file, io_readwrite);  
  135.  
  136.     if(f) {  
  137.         fileOpenned[0] = EOS;  
  138.         strcat(fileOpenned, file, MAX_FILE_NAME);  
  139.         f_i = 0;  
  140.  
  141.         while((len = fread(f, bcache[f_i]))) StripNewLine(bcache[f_i], len),++ f_i, blineset[f_i-1] = 1;  
  142.  
  143.         fclose(f);  
  144.  
  145.         fileOpen = true;  
  146.         return totalLines = f_i, bcache[f_i +1][0] = EOS, 1;  
  147.  
  148.     }  
  149.     return false;  
  150. }  
  151.  
  152.  
  153. stock File_Save()  
  154. {  
  155.  
  156.     if(fileWrited) {  
  157.         if(fileOpenned[0]) {  
  158.  
  159.             static File: f, f_i, s_I;  
  160.  
  161.             f = fopen(fileOpenned,  io_write );  
  162.  
  163.             {  
  164.  
  165.                 f_i = 0;  
  166.  
  167.                 while(f_i != totalLines +1) {  
  168.                     if(blineset[f_i]) {  
  169.                         s_I = strlen(bcache[f_i]);  
  170.  
  171.                         StripNewLine(bcache[f_i], s_I);  
  172.  
  173.                         strcat(bcache[f_i], "\r\n");  
  174.                         fwrite(f, bcache[f_i]);  
  175.  
  176.                         blineset[f_i] = 0;  
  177.                     }  
  178.                     f_i++;  
  179.                 }  
  180.             }  
  181.  
  182.             fclose(f);  
  183.             fileOpenned = "";  
  184.  
  185.             return fileWrited = false, fileOpen = false, bcache[0][0] = EOS, totalLines = 0, fileOpenned[0] = EOS, true;  
  186.         }  
  187.     }  
  188.     return false;  
  189. }  
  190.  
  191.  
  192. // By Draco Blue  
  193. stock StripNewLine(string[], len)  
  194. {  
  195.     if (string[0]==0) return ;  
  196.     if ((string[len - 1] == '\n') || (string[len - 1] == '\r')) {  
  197.         string[len - 1] = 0;  
  198.         if (string[0]==0) return ;  
  199.         if ((string[len - 2] == '\n') || (string[len - 2] == '\r')) string[len - 2] = 0;  
  200.     }  
  201. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement