//+------------------------------------------------------------------+
//| 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