Advertisement
DraKiNs

[COD] Parse INI Files

Sep 23rd, 2011
309
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 1.20 KB | None | 0 0
  1. enum E_FILE
  2. {
  3.     linhasValor[100],
  4.     linhasKeys[100],
  5.     totalLinhasArquivo
  6. }
  7.  
  8. new G_ARQUIVO[100][E_FILE];
  9.  
  10. #define OnParseFile(%0) forward %0(); public %0()
  11. #define key(%0)     getValueKey(#0)
  12.  
  13. INI_ParseFile(file[])
  14. {
  15.     static
  16.         File:streamArquivo,
  17.         encontrarChave ;
  18.  
  19.     streamArquivo = fopen(file, io_read);
  20.  
  21.     while(fread(streamArquivo, G_ARQUIVO[++G_ARQUIVO[E_FILE:2]][E_FILE:0]) 
  22.     {
  23.         encontrarChave = strfind(G_ARQUIVO[G_ARQUIVO[E_FILE:2][E_FILE:0], "=");
  24.         if(-1 != encontrarChave)
  25.         {
  26.             strmid(G_ARQUIVO[G_ARQUIVO[E_FILE:2][E_FILE:1], G_ARQUIVO[G_ARQUIVO[E_FILE:2][E_FILE:0], 0, encontrarChave);
  27.             G_ARQUIVO[G_ARQUIVO[E_FILE:2][E_FILE:0] = EOS;
  28.         }
  29.     }
  30.     return fclose(streamArquivo), CallLocalFunction(file, #s ,#\1);
  31. }
  32.  
  33.  
  34. getValueKey(tag[])
  35. {
  36.     for(new i ; i != G_ARQUIVO[E_FILE:2]; ++i)
  37.     {
  38.         if(!strcmp(G_ARQUIVO[G_ARQUIVO[E_FILE:2][E_FILE:1], tag, true)) return G_ARQUIVO[G_ARQUIVO[E_FILE:2][E_FILE:0];
  39.     }
  40.     return true;
  41. }
  42.  
  43. // exemplo:
  44.  
  45. main()
  46. {
  47.     INI_ParseFile("teste.ini");
  48. }
  49.  
  50. OnParseFile(teste.ini)
  51. {
  52.     printf("Valor de VALOR_KEY é %s", key(VALOR_KEY));
  53.     //key(VALOR_KEY)
  54.     return true;
  55. }
  56.  
  57. //
  58. // Por Bruno da Silva
  59. // Feito em 5 Minutos
  60. // Brevemente atualizado
  61. /
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement