#import "kernel32.dll" int WritePrivateProfileStringA ( string SectionName, string KeyName, int zero, string FileName); int WritePrivateProfileStringA ( string SectionName, string KeyName, string sString, string FileName); #importПопробуйте, объявить две функции.
если бы все было так просто - я бы не задавал вопрос ;)
срабатывает только одно ПЕРВОЕ (по тексту) описание :(
На самом деле WritePrivateProfileString принимает в качестве третьего параметра указатель, и в принципе ничто не мешает нам подставить ей любой массив, например int lpString[]. Попробуй объявить прототип с таким параметром и формируй его в зависимости от нужд: для передачи строки потребуется написАть отдельную функцию по преобразованию строки в int-массив - это несложно. Ну а ноль передать просто через lpString[0]=0;
Боян! Надо передавать неинициализированный стринг.
Боян! ...
Боян! Надо передавать неинициализированный стринг.
а можно работающий код в качестве примера?
string a; WriteIniString (FileName, "Секция1", "Ключ2", a);
благодарю за помощь - действительно работает.
#property copyright "Copyright © 2006-2010, Sergey Kravchuk. http://forextools.com.ua" #property link "http://forextools.com.ua" #import "kernel32.dll" int WritePrivateProfileStringA ( string SectionName, string KeyName, string sString, string FileName); #import int WriteIniString(string FileName, string SectionName, string KeyName, string Default = "") { return(WritePrivateProfileStringA(SectionName, KeyName, Default, FileName)); } int start() { string FileName = "d:\Write.ini"; string zero; WriteIniString (FileName, "Секция1", "Ключ1", TimeToStr(TimeLocal(), TIME_SECONDS)); WriteIniString (FileName, "Секция1", "Ключ2", TimeToStr(TimeCurrent(), TIME_SECONDS)); WriteIniString (FileName, "Секция1", "Ключ2", zero); WriteIniString (FileName, "Секция2", "Ключ1", AccountServer()); }
благодарю за помощь - действительно работает.
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Проблема вылезла при обработке ini-файлов. Win32API позволяет записывать (ну и читать конечно) в инифайлы данные, а также удалять их оттуда. К сожалению делается это разными функциями но с одним и тем же именем и разными параметрами. Чтобы записать строку - один из параметров должен быть собственно строкой. Чтобы удалить этот параметр - вместо строки с ее значением нужно передать long 0.
вот скрипт который записывает данные в инифайл
по идейке строчка
должна былабы удалить значение Ключ2, но вместо этого она прописывает туда строку "0" (оно и понятно - сработало неявное преобразование типов). если задать пустую строку "" то и получим ключ с пустой строкой.
вот другой скрипт который удаляет ключ
подскажите кто знает как организовать "перегрузку функции" WritePrivateProfileStringA чтобы ей можно было передать в одном и том же параметре и строку для записи ключа (string sString) и целое для удаления ключа (int zero)? или как передать ей такую строку, которую WritePrivateProfileStringA воспримет как long 0?
ну или какйото другой способ как удалить ключ из секции?