Часовой пояс: UTC + 3 часа




Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 10 
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 

Member
Статус: Не в сети
Регистрация: 04.12.2009
Откуда: Москва
Фото: 13
Столкнулся с большой проблемой.
WritePrivateProfileInt убрали, поэтому я не могу int записать в ini файл нормально. Как быть?
Юзаю скажем это
Код:
            char buff[3];
            int Interval = (int) numericUpDown1->Value; // numericUpDown1 (а еще точнее Value) хранит Decimal изначально. Переводим из dec в int
            _itoa_s(Interval,buff,10); //переводим из int в char (из Interval в buff)
            WritePrivateProfileString(L"Options",L"Interval",(LPCWSTR)buff,L".\\config\\config.ini"); //записываем в ini наш buff


Работает это почему то от 0 до 9. Т.е. в ini это нормально пишется. А как 10 и больше - появляется ? вместо значения.
В чем тут протупил? И как это нормально можно реализовать, если вообще можно....

_________________
Den aller yngste greven, som der på skipet var, han ville visst trolova sig, enn sjølv så ung han var...
DCS player =3



Партнер
 

Advanced member
Статус: Не в сети
Регистрация: 10.04.2003
Откуда: Москва
Зачем LPCWSTR? Разве ты юзаешь WritePrivateProfileStringW?


 

Member
Статус: Не в сети
Регистрация: 04.12.2009
Откуда: Москва
Фото: 13
serj тогда мне пишет
Код:
error C2664: 'WritePrivateProfileStringW' : cannot convert parameter 3 from 'char [56]' to 'LPCWSTR'
1>          Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast


Конечно я не знаю зачем мне это. У меня ANSI файл то.

Добавлено спустя 1 минуту 43 секунды:
Спасибо serj, рил. Так работает
Код:
WritePrivateProfileStringA("Options","Interval",(LPCSTR)buff,".\\config\\config.ini");


Прикол в том, что я считываю вот так:
Код:
int AutoScan = GetPrivateProfileInt(L"Options",L"AutoScan",0,L".\\config\\config.ini");

т.е. выходит я и считываю неправильно... Но это работает. Причем работает с любыми значениями. Что за бред...

_________________
Den aller yngste greven, som der på skipet var, han ville visst trolova sig, enn sjølv så ung han var...
DCS player =3


Последний раз редактировалось Bl00dRedDragon 08.12.2015 21:20, всего редактировалось 1 раз.

 

Advanced member
Статус: Не в сети
Регистрация: 10.04.2003
Откуда: Москва
Не пихай в функцию UNICODE, он и не будет отрезать по 1 символу. ))


 

Member
Статус: Не в сети
Регистрация: 04.12.2009
Откуда: Москва
Фото: 13
serj я просто сам себя обманул xD Такс, выходит мне нужно еще и функции чтения доработать, а то мало ли.

_________________
Den aller yngste greven, som der på skipet var, han ville visst trolova sig, enn sjølv så ung han var...
DCS player =3


 

Advanced member
Статус: Не в сети
Регистрация: 10.04.2003
Откуда: Москва
Посмотри на свой config.ini "глазами". Там или названия пунктов (не такие, как ты ожидал), или файл в unicode.


 

Member
Статус: Не в сети
Регистрация: 04.12.2009
Откуда: Москва
Фото: 13
serj да все уже. Вся проблема была в том, что я юзаю W, а не A. Файл то ANSI по дефолту. Сейчас все функции поправил (т.е. добавил A в конце) и все ок стало. И пишет и читает правильно.

было
Код:
private: System::Void Settings_Load(System::Object^  sender, System::EventArgs^  e)
          {
            int Interval = GetPrivateProfileInt(L"Options",L"Interval",0,L".\\config\\config.ini");
            numericUpDown1->Value = Interval;

            int StayInTray = GetPrivateProfileInt(L"Options",L"StayInTray",0,L".\\config\\config.ini");
            if (StayInTray == 1)
               checkBox1->Checked = true;
            else
               checkBox1->Checked = false;

            int AutoScan = GetPrivateProfileInt(L"Options",L"AutoScan",0,L".\\config\\config.ini");
            if (AutoScan == 1)
               checkBox2->Checked = true;
            else
               checkBox2->Checked = false;

          }

   private: System::Void numericUpDown1_ValueChanged(System::Object^  sender, System::EventArgs^  e)
          {
            char buff[56];
            int Interval = (int) numericUpDown1->Value;
            _itoa_s(Interval,buff,10);
            WritePrivateProfileString(L"Options",L"Interval",(LPCWSTR)buff,L".\\config\\config.ini");

          }


стало
Код:
private: System::Void Settings_Load(System::Object^  sender, System::EventArgs^  e)
          {
            int Interval = GetPrivateProfileIntA("Options","Interval",0,".\\config\\config.ini");
            numericUpDown1->Value = Interval;

            int StayInTray = GetPrivateProfileIntA("Options","StayInTray",0,".\\config\\config.ini");
            if (StayInTray == 1)
               checkBox1->Checked = true;
            else
               checkBox1->Checked = false;

            int AutoScan = GetPrivateProfileIntA("Options","AutoScan",0,".\\config\\config.ini");
            if (AutoScan == 1)
               checkBox2->Checked = true;
            else
               checkBox2->Checked = false;

          }

   private: System::Void numericUpDown1_ValueChanged(System::Object^  sender, System::EventArgs^  e)
          {
            char buff[56];
            int Interval = (int) numericUpDown1->Value;
            _itoa_s(Interval,buff,10);
            WritePrivateProfileStringA("Options","Interval",(LPCSTR)buff,".\\config\\config.ini");

          }


serj писал(а):
Там или названия пунктов (не такие, как ты ожидал)

Да не, я же его сам собираю =) Настройки проги хранить.

_________________
Den aller yngste greven, som der på skipet var, han ville visst trolova sig, enn sjølv så ung han var...
DCS player =3


 

Advanced member
Статус: Не в сети
Регистрация: 10.04.2003
Откуда: Москва
Знаешь, народ почему-то любит W, и даже ссылаются, что оно так правильнее.
У меня тоже ANSI.


 

Member
Статус: Не в сети
Регистрация: 04.12.2009
Откуда: Москва
Фото: 13
serj у файл по стандарту в ANSI просто, что его трогать то лишний раз :D Поэтому А лучше буду юзать
Все, сформировал настройки программы, проверил - все ок. Так что да... просто А надо юзать было.

_________________
Den aller yngste greven, som der på skipet var, han ville visst trolova sig, enn sjølv så ung han var...
DCS player =3


 

Advanced member
Статус: Не в сети
Регистрация: 10.04.2003
Откуда: Москва
Чисто эстетическая фигня - если не вставлять пробелы, то ini плохо читаем. После формирования "абзаца" можно досылать в файл перевод строки, текст получается в удобоваримом виде.
Код:
[Test0]
Enable=1
Time (%)=100
Function=RefreshStable
DLL Name=bin\MT0.dll
Pattern Mode=0
Pattern Param0=0x0
Pattern Param1=0x0
Parameter=0
Test Block Size (Mb)=0

[Test1]
Enable=1
Time (%)=100
Function=SimpleTest
DLL Name=bin\MT0.dll
Pattern Mode=1
Pattern Param0=0x1E5F
Pattern Param1=0x45357354
Parameter=0
Test Block Size (Mb)=16


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 10 
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  

Лаборатория














Новости

Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan