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

 

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

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

Author: Igor Kim

 

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

Спасибо.

 
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
 

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

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

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

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

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

функция 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);
  
}
 
olyakish писал(а):
функция ReadIniString() не читает (точнее читает какую то аброкадабру) если значение ключа больше 255 символов 
Второй абзац Строковые константы
 
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

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

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

 

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

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

 

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

 
А где библиотека?