IniSectionsEnum

Author: Copyright � 2006-2010, Solop Dmitry (Ved)
0 Views
0 Downloads
0 Favorites
IniSectionsEnum
//+------------------------------------------------------------------+
//|                                              IniSectionsEnum.mq4 |
//|                        Copyright © 2006-2010, Solop Dmitry (Ved) |
//|                                                 dsolop@yandex.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2006-2010, Solop Dmitry (Ved)"
#property link      "dsolop@yandex.ru"
#property library

#import "kernel32.dll"
  int GetPrivateProfileStringA
      ( int SectionName,    // Íàèìåíîâàíèå ñåêöèè
        int KeyName,        // Íàèìåíîâàíèå ïàðàìåòðà
        string Default,        // Çíà÷åíèå ïî óìîë÷àíèþ
        int ReturnedString[], // Âîçâðàùàåìîå çíà÷åíèå ïàðàìåòðà
        int    nSize,          // Ðàçìåð áóôåðà ïîä çíà÷åíèå ïàðàìåòðà
        string FileName);      // Ïîëíîå èìÿ ôàéëà
#import

bool SectionsEnum(string FileName, string &Sections[])
{
   int iBuffer[16384];
   ArrayInitialize(iBuffer, 0);  
   int nValue = GetPrivateProfileStringA(0, 0, "", iBuffer, 65535, FileName);
   
   if(nValue>0){
      SplitStrings(iBuffer, nValue, Sections);
      return(true);
   }
   else
     return(false);
}
/*
bool KeysEnum(string FileName, string SectionName, string &Keys[])
{
   int iBuffer[16384];
   ArrayInitialize(iBuffer, 0);  
   
   int nValue = GetPrivateProfileStringA(SectionName, 0, "", iBuffer, 65535, FileName);
   
   if(nValue>0){
      SplitStrings(iBuffer, nValue, Keys);
      return(true);
   }
   else
     return(false);
}
*/
bool SplitStrings(int &iBuffer[], int TotalLengthInByte, string &Strings[]){
      ArrayResize(Strings, 10);
      string Buffer = "";
      int i, j, n=0, aSec=0;
      string iChars[4];
      for(int k=0; k<(TotalLengthInByte-1)/4+1; k++){
         if(iBuffer[k]==0)break;
         
         for(j = 0; j < 4; j++) iChars[j]="";
         
         for(i = 0; i < 4; i++){
           if(iBuffer[k] & 255 > 0){
            iChars[i] = CharToStr(iBuffer[k] & 255);
            n++;
           }else
           if(Buffer!="" || iChars[0]!="" || iChars[1]!="" || iChars[2]!="" || iChars[3]!=""){
              if(ArraySize(Strings)==aSec)
                ArrayResize(Strings, ArraySize(Strings)+10);
              Buffer = StringConcatenate(Buffer, iChars[0], iChars[1], iChars[2], iChars[3]);
              Strings[aSec]=StringSubstr(Buffer, 0, n);
              aSec++;
              for(j = 0; j < 4; j++) iChars[j]="";
              Buffer="";
              n=0;
           }
           
           iBuffer[k] = iBuffer[k] >> 8;       
         }
         
         Buffer = StringConcatenate(Buffer, iChars[0], iChars[1], iChars[2], iChars[3]);
      }  
      
      if(Buffer!=""){
              if(ArraySize(Strings)==aSec)
                ArrayResize(Strings, ArraySize(Strings)+1);
              Strings[aSec]=StringSubstr(Buffer, 0, n);
              aSec++;
       }
      
      // StringSubstr(Buffer, 0, nValue)
      ArrayResize(Strings, aSec);

}

Comments