Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Системное программирование и WinAPI > как преобразовать значение из файла в переменную? |
Автор: BlackSkull 20.6.2016, 22:12 | ||||||||
Приложение должно считывать из файла(.ini) значения width и height. При создании окна использовать эти параметры. Но, при запуске, открывается input.c и указывает на строку:
Как я понимаю, полученное значение(8 байт), превышает допустимый(4 байта). Есть две структуры:
В ConfigStruct, записываются полученные из файла значения. В ConfigResult, я хотел записать преобразованные в int значения.
В WinMain, присвоить значения из структуры ConfigResult, к переменным: ScreenWidth, ScreenHeight.
Подскажите, пожалуйста, как правильно преобразовать значения? |
Автор: vol4ek 21.6.2016, 12:03 |
GetPrivateProfileString() потом atoi(S.c_str()) |
Автор: BlackSkull 21.6.2016, 15:44 | ||||
Боюсь, моего скромного уровня знаний не хватит. Как я понял из документации, необходимо написать так:
Пишет: чтение памяти невозможно. RetStr возвращает необходимое значение, но подсвечен красным. Переменные iSW,iSH,cSW,cSH = ??? |
Автор: tierswar 21.6.2016, 16:24 | ||
Может быть, в функции "ReadConfig" установить позицию в файле fcf на начало числа "высота", а затем сделать как-то так
Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/kak-preobrazovat-znacheniye-iz-fayla-v-peremennuyu-id576840b5ae201515158b4567#findElement_E7045_57693ff0ae20158e6f0482cd_0 |
Автор: tierswar 21.6.2016, 16:24 |
насколько я понимаю, тогда "всё само там сделается" Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/kak-preobrazovat-znacheniye-iz-fayla-v-peremennuyu-id576840b5ae201515158b4567#findElement_E7045_57694024ae2015ac6d04865b_0 |
Автор: vol4ek 21.6.2016, 16:29 |
максимальная длинна строки для функции 256 символов. зачем вы юзаете столько памяти для строк которые содержат всего 4 символа. (мониторов с разрешением более 10к не встречал) |
Автор: vol4ek 21.6.2016, 16:44 | ||||
это какое-то новое извращение, которого я еще не видел.
проверки не забудьте. |
Автор: BlackSkull 21.6.2016, 18:10 | ||||
Указывает на строку:
В коде:
cSW,cSH - <чтение памяти невозможно> Не понимаю. Может, с переменными(int cSW, cSH) что-то не так? |
Автор: vol4ek 21.6.2016, 18:43 |
накосячили со структурой |
Автор: vol4ek 21.6.2016, 19:18 |
сделайте конструктор инициализирующий свойства структуры раз вы запихнули ее в класс http://rsdn.ru/forum/cpp/2938455.all |
Автор: BlackSkull 21.6.2016, 20:55 | ||
Не помогло. Та же ошибка. Может есть другой вариант осуществления задуманного? |
Автор: vol4ek 21.6.2016, 23:04 | ||||
все помогло я собирал ваш проект на работе. делаете конструктор, а обращаться к переменным так:
|
Автор: BlackSkull 22.6.2016, 13:58 | ||||||||||
У меня, программа возвращает в ScreenWidth и ScreenHeight = -858993460. Как я понял, считывает не те байты. С конструктором проблема. Я лишь умею создавать таким образом: .h
.cpp
А с конструктором, инициализирующим свойства структуры, впервые сталкиваюсь. Вот, как я написал: .h
.cpp
Я ничего не понимаю. Скажите, пожалуйста, как правильно это написать? P.S. Извините, что надоедаю. |
Автор: xvr 3.7.2016, 21:28 | ||||||
Ваш код можно отправлять на соревнование 'как сделать простое действие максимально сложным способом' ![]() Исправьте ReadConfig так:
А еще лучше вообще не вводить ConfigResult - в вашем воплощении он никакой полезной сущности не представляет.
|
Автор: BlackSkull 6.7.2016, 18:40 |
xvr, спасибо за ответ. Сделал так, как Вы сказали. Все равно, приложение считывает не те байты. Возвращает значение -858993460. ![]() Может, с файлом .ini что то не так или с самим проектом? Ссылка прилагается. |
Автор: xvr 7.7.2016, 22:13 | ||||
У вас не созданы классы, к которым вы обращаетесь:
Измените код так:
|
Автор: BlackSkull 8.7.2016, 12:44 | ||||
Большое вам спасибо, xvr. Действительно, после создания классов в файле Main.cpp, приложение заработало корректно. Ссылку на рабочий проект я оставлю(вдруг кому-нибудь пригодится). Спасибо всем, кто принимал участие в обсуждении. На этом, тему можно считать закрытой. |