IniFiles64K

Author: Copyright � 2006-2010, Solop Dmitry (Ved)
0 Views
0 Downloads
0 Favorites
IniFiles64K
//+------------------------------------------------------------------+
//|                                                  IniFiles64K.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
      ( string SectionName,    // Íàèìåíîâàíèå ñåêöèè
        string KeyName,        // Íàèìåíîâàíèå ïàðàìåòðà
        string Default,        // Çíà÷åíèå ïî óìîë÷àíèþ
        int ReturnedString[], // Âîçâðàùàåìîå çíà÷åíèå ïàðàìåòðà
        int    nSize,          // Ðàçìåð áóôåðà ïîä çíà÷åíèå ïàðàìåòðà
        string FileName);      // Ïîëíîå èìÿ ôàéëà
  int WritePrivateProfileStringA
      ( string SectionName,    // Íàèìåíîâàíèå ñåêöèè
        string KeyName,        // Íàèìåíîâàíèå ïàðàìåòðà
        string sString,        // Çàïèñûâàåìîå çíà÷åíèå ïàðàìåòðà
        string FileName);      // Ïîëíîå èìÿ ôàéëà
#import

//+------------------------------------------------------------------+
//| Ïàðàìåòðû:                                                       |
//|   FileName    - ïîëíîå èìÿ ôàéëà                                 |
//|   SectionName - íàèìåíîâàíèå ñåêöèè                              |
//|   KeyName     - íàèìåíîâàíèå ïàðàìåòðà                           |
//|   Default     - çíà÷åíèå ïàðàìåòðà ïî óìîë÷àíèþ                  |
//+------------------------------------------------------------------+  
string ReadIniString(string FileName, string SectionName, string KeyName, 
                     string Default = "")
{
   int iBuffer[16384];
   ArrayInitialize(iBuffer, 0);  
   int nValue = GetPrivateProfileStringA(SectionName, KeyName, Default, 
                                          iBuffer, 65535, FileName);
   if(nValue>0){
      string Buffer = "";
      int n=0;
      string iChars[4];
      for(int k=0; k<(nValue-1)/4+1; k++){
         if(iBuffer[k]==0)break;
           
         for(int i = 0; i < 4; i++){
            iChars[i] = CharToStr(iBuffer[k] & 255);
            iBuffer[k] = iBuffer[k] >> 8;       
            n++;
         }
         
         Buffer = StringConcatenate(Buffer, iChars[0], iChars[1], iChars[2], iChars[3]);
      }  
      return(StringSubstr(Buffer, 0, nValue));
   }
   else
     return(Default);
}

//+------------------------------------------------------------------+
//| Ïàðàìåòðû:                                                       |
//|   FileName    - ïîëíîå èìÿ ôàéëà                                 |
//|   SectionName - íàèìåíîâàíèå ñåêöèè                              |
//|   KeyName     - íàèìåíîâàíèå ïàðàìåòðà                           |
//|   bDefault    - çíà÷åíèå ïàðàìåòðà ïî óìîë÷àíèþ                  |
//+------------------------------------------------------------------+
bool ReadIniBool(string FileName, string SectionName, string KeyName, 
                 bool bDefault = False)
  {
   string Default;
   if(bDefault) 
       Default = "1"; 
   else 
       Default = "0";
   return( ReadIniString(FileName, SectionName, KeyName, Default) != "0");    
  }
  
//+------------------------------------------------------------------+
//| Ïàðàìåòðû:                                                       |
//|   FileName    - ïîëíîå èìÿ ôàéëà                                 |
//|   SectionName - íàèìåíîâàíèå ñåêöèè                              |
//|   KeyName     - íàèìåíîâàíèå ïàðàìåòðà                           |
//|   dDefault    - çíà÷åíèå ïàðàìåòðà ïî óìîë÷àíèþ                  |
//+------------------------------------------------------------------+
double ReadIniDouble(string FileName, string SectionName, string KeyName, 
                     double dDefault = 0.0)
  {
   string Default = DoubleToStr(dDefault, 8);
   return(StrToDouble( ReadIniString(FileName, SectionName, KeyName, Default)));
  }
  
//+------------------------------------------------------------------+
//| Ïàðàìåòðû:                                                       |
//|   FileName    - ïîëíîå èìÿ ôàéëà                                 |
//|   SectionName - íàèìåíîâàíèå ñåêöèè                              |
//|   KeyName     - íàèìåíîâàíèå ïàðàìåòðà                           |
//|   iDefault    - çíà÷åíèå ïàðàìåòðà ïî óìîë÷àíèþ                  |
//+------------------------------------------------------------------+
datetime ReadIniTime(string FileName, string SectionName, string KeyName, 
                   datetime dtDefault = 0)
  {
   string Default = TimeToStr(dtDefault, TIME_DATE)+" "+TimeToStr(dtDefault, TIME_SECONDS);
   return(StrToTime( ReadIniString(FileName, SectionName, KeyName, Default)));
  }
  
//+------------------------------------------------------------------+
//| Ïàðàìåòðû:                                                       |
//|   FileName    - ïîëíîå èìÿ ôàéëà                                 |
//|   SectionName - íàèìåíîâàíèå ñåêöèè                              |
//|   KeyName     - íàèìåíîâàíèå ïàðàìåòðà                           |
//|   iDefault    - çíà÷åíèå ïàðàìåòðà ïî óìîë÷àíèþ                  |
//+------------------------------------------------------------------+
int ReadIniInteger(string FileName, string SectionName, string KeyName, 
                   int iDefault = 0)
{
   string Default = DoubleToStr(iDefault, 0);
   return(StrToInteger( ReadIniString(FileName, SectionName, KeyName, Default) ) );
}

//+------------------------------------------------------------------+
//| Ïàðàìåòðû:                                                       |
//|   FileName    - ïîëíîå èìÿ ôàéëà                                 |
//|   SectionName - íàèìåíîâàíèå ñåêöèè                              |
//|   KeyName     - íàèìåíîâàíèå ïàðàìåòðà                           |
//|   aiParam     - ìàññèâ çíà÷åíèé ñ÷èòûâàåìîãî ïàðàìåòðà           |
//+------------------------------------------------------------------+
void ReadIniArrayInt(string FileName, string SectionName, string KeyName, int& aiParam[])
  {
   int    i = 0, np;
   string st;
   string ReturnedString = ReadIniString(FileName, SectionName, KeyName, "");

   if(ReturnedString != "")
     {
       while(StringLen(ReturnedString) > 0)
         {
           np = StringFind(ReturnedString, ",");
           if(np < 0)
             {
               st = ReturnedString;
               ReturnedString = "";
             } 
           else 
             {
               st = StringSubstr(ReturnedString, 0, np);
               ReturnedString = StringSubstr(ReturnedString, np + 1);
             }
           i++;
           ArrayResize(aiParam, i);
           aiParam[i-1] = StrToInteger(st);
         }
     } 
   else 
        ArrayResize(aiParam, 0);
  }
  
  
  
//+------------------------------------------------------------------+
//| Ïàðàìåòðû:                                                       |
//|   FileName    - ïîëíîå èìÿ ôàéëà                                 |
//|   SectionName - íàèìåíîâàíèå ñåêöèè                              |
//|   KeyName     - íàèìåíîâàíèå ïàðàìåòðà                           |
//|   aiParam     - ìàññèâ çíà÷åíèé çàïèñûâàåìîãî ïàðàìåòðà          |
//+------------------------------------------------------------------+
void WriteIniArrayInt(string FileName, string SectionName, string KeyName, 
                      int& aiParam[])
  {
   int    as = ArraySize(aiParam);
   string sString = "";
   for(int i = 0; i < as; i++)
     {
       sString = sString + DoubleToStr(aiParam[i], 0);
       if(i < as - 1) 
           sString = sString + ",";
     }
   int nValue = WritePrivateProfileStringA(SectionName, KeyName, sString, 
                                           FileName);
  }
//+------------------------------------------------------------------+
//| Ïàðàìåòðû:                                                       |
//|   FileName    - ïîëíîå èìÿ ôàéëà                                 |
//|   SectionName - íàèìåíîâàíèå ñåêöèè                              |
//|   KeyName     - íàèìåíîâàíèå ïàðàìåòðà                           |
//|   bParam      - çàïèñûâàåìîå çíà÷åíèå ïàðàìåòðà                  |
//+------------------------------------------------------------------+
void WriteIniBool(string FileName, string SectionName, string KeyName, 
                  bool bParam)
  {
   string sString;
   if(bParam) 
       sString = "1"; 
   else 
       sString = "0";
   int nValue = WritePrivateProfileStringA(SectionName, KeyName, sString, 
                                           FileName);
  }
//+------------------------------------------------------------------+
//| Ïàðàìåòðû:                                                       |
//|   FileName    - ïîëíîå èìÿ ôàéëà                                 |
//|   SectionName - íàèìåíîâàíèå ñåêöèè                              |
//|   KeyName     - íàèìåíîâàíèå ïàðàìåòðà                           |
//|   dParam      - çàïèñûâàåìîå çíà÷åíèå ïàðàìåòðà                  |
//+------------------------------------------------------------------+
void WriteIniDouble(string FileName, string SectionName, string KeyName, 
                    double dParam)
  {
   string sString = DoubleToStr(dParam, 8);
   int nValue = WritePrivateProfileStringA(SectionName, KeyName, sString, 
                                           FileName);
  }
//+------------------------------------------------------------------+
//| Ïàðàìåòðû:                                                       |
//|   FileName    - ïîëíîå èìÿ ôàéëà                                 |
//|   SectionName - íàèìåíîâàíèå ñåêöèè                              |
//|   KeyName     - íàèìåíîâàíèå ïàðàìåòðà                           |
//|   iParam      - çàïèñûâàåìîå çíà÷åíèå ïàðàìåòðà                  |
//+------------------------------------------------------------------+
void WriteIniTime(string FileName, string SectionName, string KeyName, 
                     datetime dtParam)
  {
   string sString = TimeToStr(dtParam, TIME_DATE) + " " + TimeToStr(dtParam, TIME_SECONDS);
   int nValue = WritePrivateProfileStringA(SectionName, KeyName, sString, 
                                           FileName);
  }
//+------------------------------------------------------------------+
//| Ïàðàìåòðû:                                                       |
//|   FileName    - ïîëíîå èìÿ ôàéëà                                 |
//|   SectionName - íàèìåíîâàíèå ñåêöèè                              |
//|   KeyName     - íàèìåíîâàíèå ïàðàìåòðà                           |
//|   iParam      - çàïèñûâàåìîå çíà÷åíèå ïàðàìåòðà                  |
//+------------------------------------------------------------------+
void WriteIniInteger(string FileName, string SectionName, string KeyName, 
                     int iParam)
  {
   string sString = DoubleToStr(iParam, 0);
   int nValue = WritePrivateProfileStringA(SectionName, KeyName, sString, 
                                           FileName);
  }
//+------------------------------------------------------------------+
//| Ïàðàìåòðû:                                                       |
//|   FileName    - ïîëíîå èìÿ ôàéëà                                 |
//|   SectionName - íàèìåíîâàíèå ñåêöèè                              |
//|   KeyName     - íàèìåíîâàíèå ïàðàìåòðà                           |
//|   sParam      - çàïèñûâàåìîå çíà÷åíèå ïàðàìåòðà                  |
//+------------------------------------------------------------------+
void WriteIniString(string FileName, string SectionName, string KeyName, 
                    string sParam)
  {
   int nValue = WritePrivateProfileStringA(SectionName, KeyName, sParam, 
                                           FileName);
  }
//+------------------------------------------------------------------+

Comments