Скачать MetaTrader 5

Библиотеки: Библиотека функций для работы с INI-файлами.

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
MetaQuotes Software Corp.
Модератор
188977
MetaQuotes Software Corp.  

Библиотека функций для работы с INI-файлами.:

Библиотека содержит пять функций, предназначенных для чтения значений из INI-файла и пять функций для записи значений в INI-файл. Таким образом, получается пять пар функций для чтения/записи значений типа array of integer, bool, double, integer и string.

Author: Igor Kim

zebra
267
zebra  

Объясните, пожалуйста, что такое INI-файл?

Спасибо.

Igor Kim
2739
Igor Kim  
Zebra:

Объясните, пожалуйста, что такое INI-файл?

INI-файлы обычно применяются для сохранения параметров, которые используются при работе программы. Например, положение и размеры главного окна программы на экране монитора. Любой INI-файл - это текстовый файл и он имеет следующую структуру:
[Наименование секции 1]
Наименование параметра 1=Значение параметра 1
Наименование параметра 2=Значение параметра 2
............
Наименование параметра N=Значение параметра N
[Наименование секции 2]
Наименование параметра 1=Значение параметра 1
Наименование параметра 2=Значение параметра 2
............
Наименование параметра M=Значение параметра M
............
............
[Наименование секции K]
Наименование параметра 1=Значение параметра 1
Наименование параметра 2=Значение параметра 2
............
Наименование параметра P=Значение параметра P
Mike
282
Mike  

Спасибо за работу. Только забыли добавить в код:

#property library
Igor Kim
2739
Igor Kim  
Mike писал(а):

Спасибо за работу. Только забыли добавить в код:

#property library
Благодарю за поправку... Добавил... Появится после редакторского одобрения...
Alexey Klenov
1888
Alexey Klenov  

Есть вопрос такой

функция ReadIniString() не читает (точнее читает какую то аброкадабру) если значение ключа больше 255 символов 

пробовал увеличить буфер в Вашей библиотеке с 255 на 1024 но результата не дало

вот в этом месте

string ReadIniString(string FileName, string SectionName, string KeyName, 
                    
string Default = "")
  {
   string ReturnedString = "";
  
int nValue = GetPrivateProfileStringA(SectionName, KeyName, Default,
                                          
ReturnedString, 255, FileName);
  
if(nValue > 0)
       return(ReturnedString);
  
else
       return(Default);
  
}

на

string ReadIniString(string FileName, string SectionName, string KeyName, 
                    
string Default = "")
  {
   string ReturnedString = "";
  
int nValue = GetPrivateProfileStringA(SectionName, KeyName, Default,
                                          
ReturnedString, 1024, FileName);
  
if(nValue > 0)
       return(ReturnedString);
  
else
       return(Default);
  
}
Igor Kim
2739
Igor Kim  
olyakish писал(а):
функция ReadIniString() не читает (точнее читает какую то аброкадабру) если значение ключа больше 255 символов 
Второй абзац Строковые константы
Alexey Klenov
1888
Alexey Klenov  
KimIV:
olyakish писал(а):
функция ReadIniString() не читает (точнее читает какую то аброкадабру) если значение ключа больше 255 символов 
Второй абзац Строковые константы

Ага, а вот так значит можно это обойти

string testStr="qwertyuiop[]asdfghjkl;zxcvbnm,.1234567890-=!@#$%^&*()_+QWERTYUIOP{}ASDFGHJKL:ZXCVBNM<>?";
string strTest;
int start()
  {
   strTest=StringConcatenate(testStr,testStr,testStr,testStr,testStr,testStr,testStr,testStr,testStr,testStr);
  
Print(strTest);
  
Print(StringLen(strTest));
  
return(0);
  
}

Из журнала

23:24:05 Compiling 'test_string'
23:24:05 test_string EURGBP,M1: loaded successfully
23:24:05 test_string EURGBP,M1: qwertyuiop[]asdfghjkl;zxcvbnm,.1234567890-=!@#$%^&*()_+QWERTYUIOP{}ASDFGHJKL:ZXCVBNM<>?qwertyuiop[]asdfghjkl;zxcvbnm,.1234567890-=!@#$%^&*()_+QWERTYUIOP{}ASDFGHJKL:ZXCVBNM<>?qwertyuiop[]asdfghjkl;zxcvbnm,.1234567890-=!@#$%^&*()_+QWERTYUIOP{}ASDFGHJKL:ZXCVBNM<>?qwertyuiop[]asdfghjkl;zxcvbnm,.1234567890-=!@#$%^&*()_+QWERTYUIOP{}ASDFGHJKL:ZXCVBNM<>?qwertyuiop[]asdfghjkl;zxcvbnm,.1234567890-=!@#$%^&*()_+QWERTYUIOP{}ASDFGHJKL:ZXCVBNM<>?qwertyuiop[]asdfghjkl;zxcvbnm,.1234567890-=!@#$%^&*()_+QWERTYUIOP{}ASDFGHJKL:ZXCVBNM<>?qwertyuiop[]asdfghjkl;zxcvbnm,.1234567890-=!@#$%^&*()_+QWERTYUIOP{}ASDFGHJKL:ZXCVBNM<>?qwertyuiop[]asdfghjkl;zxcvbnm,.1234567890-=!@#$%^&*()_+QWERTYUIOP{}ASDFGHJKL:ZXCVBNM<>?qwertyuiop[]asdfghjkl;zxcvbnm,.1234567890-=!@#$%^&*()_+QWERTYUIOP{}ASDFGHJKL:ZXCVBNM<>?qwertyuiop[]asdfghjkl;zxcvbnm,.1234567890-=!@#$%^&*()_+QWERTYUIOP{}ASDFGHJKL:ZXCVBNM<>?
23:24:05 test_string EURGBP,M1: 870
23:24:05 test_string EURGBP,M1: uninit reason 0
23:24:05 test_string EURGBP,M1: removed

тоесть изначально иницииоровать такую нельзя а вот собрать получается можно

причем ее (собранную строку) записываю целиком в ини без обрезаний

Сергей
534
Сергей  

А как можно удалить секцию?

Или определенный параметр из секции?

Viktor Vasilyuk
566
Viktor Vasilyuk  

а где библиотека?
киньте если не трудно на
progma137@gmail.com

MQL4 Comments
16316
MQL4 Comments  
А где библиотека?
12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий