Ini files

Тема в разделе "WASM.BEGINNERS", создана пользователем Toxasoft, 21 сен 2010.

  1. Toxasoft

    Toxasoft New Member

    Публикаций:
    0
    Регистрация:
    20 сен 2010
    Сообщения:
    188
    Помогите с файлами конфигурации. Как загрузить из файла например расположение какого нибудь контрола. Ато когда я пытаюсь загрузить ширину кнопки, то или она хрен его знает какого размера,или очень маленькая. Заранее спасибо. Р.С. Я самоучка так что плиз не смейтесь.
     
  2. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    Код в студию. И ini-файл тоже
     
  3. KIV

    KIV Member

    Публикаций:
    0
    Регистрация:
    16 июл 2009
    Сообщения:
    231
    Во-первых, в Windows есть замечательные функции GetPrivateProfileString, GetPrivateProfileInt и GetPrivateProfileStruct. Во-вторых, если вы используйте свой парсер ини-файлов, то проверьте правильно ли читаете значения из файла. Хотя бы MessageBox выводите всё что прочитали из файла. Если вы используете парсер Windows или ваш парсер корректен и вы не перепутали параметры, которые предаёте CreateWindowEx (или MoveWindow), то причин неправильно располагаться контролам нет.
    Больше без кода сказать не могу.
    P.S. Как я понимаю вы используете ini-файл для хранения форм приложения. Могу посоветовать использовать вместо ini-файлов ресурсы. Это намного удобнее. Кстати, не только для форм, но и для хранения строк локализации, значков etc. Всего кроме изменяющихся настроек.
     
  4. Toxasoft

    Toxasoft New Member

    Публикаций:
    0
    Регистрация:
    20 сен 2010
    Сообщения:
    188
    Код на данный момент не могу прислать исходник так как сижу с телефона. А ini-файл нужен для сохранения настроек.(типа скин). А за апи спс, но дай плиз пример к GetPrivateProfileInt
     
  5. KIV

    KIV Member

    Публикаций:
    0
    Регистрация:
    16 июл 2009
    Сообщения:
    231
    Код (Text):
    1. Left := GetPrivateProfileInt("MainWindow", "Left", 0, "C:\MyApp.ini");
    2. Top := GetPrivateProfileInt("MainWindow", "Top", 0, "C:\MyApp.ini");
    3. Width := GetPrivateProfileInt("MainWindow", "Width", 0, "C:\MyApp.ini");
    4. Height := GetPrivateProfileInt("MainWindow", "Height", 0, "C:\MyApp.ini");
    5. MoveWindow(hWnd, Left, Top, Width, Height);
    Вот. Главное, что последний параметр - имя ini-файла - должен быть абсолютным путём. Получить его из относительного можно, например, через GetFullPathName.
    Кстати, что вы думаете насчёт ресурсов? Можно подгружать DLL и брать из неё ресурсы. Лично я сторонник программ, которые используют всё, что даёт WinAPI и лишь если нужная функция отсутствует пишут свою. Кстати, при использовании ресурсов для их построения можно использовать специальные редакторы, которые позволяют разрабатывать диалоги не путём прописывания строчек в ini-файл, а путём перетаскивания контролов на диалог.
     
  6. Toxasoft

    Toxasoft New Member

    Публикаций:
    0
    Регистрация:
    20 сен 2010
    Сообщения:
    188
    Спс за инфу. Мне нужно чтобы программа сама изменяла позицию например кнопки путем загрузки/сохранения из/в ини файл.
     
  7. Toxasoft

    Toxasoft New Member

    Публикаций:
    0
    Регистрация:
    20 сен 2010
    Сообщения:
    188
    Kiv А как таким же путем сохранить все в файл конфигурации?
     
  8. mikityak

    mikityak Забанен

    Публикаций:
    0
    Регистрация:
    5 авг 2007
    Сообщения:
    160
    Список функций по категориям: Файлы INI

    GetPrivateProfileInt
    GetPrivateProfileString
    GetProfileInt
    GetProfileString
    WritePrivateProfileString
    WriteProfileString
     
  9. Blackbeam

    Blackbeam New Member

    Публикаций:
    0
    Регистрация:
    28 дек 2008
    Сообщения:
    960
    http://blackbeam.narod.ru/asm.htm - masm32 c IDE
     
  10. Toxasoft

    Toxasoft New Member

    Публикаций:
    0
    Регистрация:
    20 сен 2010
    Сообщения:
    188
    Благодарю за помощь.
     
  11. KIV

    KIV Member

    Публикаций:
    0
    Регистрация:
    16 июл 2009
    Сообщения:
    231
    Ну тогда другое дело. Хотя функции изменения ресурсов в WinAPI есть, но они работают с ресурсами на уровне байтов, поэтому пришлось бы разбираться с форматом ресурсов диалогов. Кстати, для двоичных структур есть WritePrivateProfileStruct, а вот WiteInt нету - надо самому преобразовывать число в строку.
     
  12. Toxasoft

    Toxasoft New Member

    Публикаций:
    0
    Регистрация:
    20 сен 2010
    Сообщения:
    188
    Благодарю за инфу
     
  13. Toxasoft

    Toxasoft New Member

    Публикаций:
    0
    Регистрация:
    20 сен 2010
    Сообщения:
    188
    Чисто символический вопрос. Есть ли функции перебора(типа findfirst, findnext) для ини файлов?
     
  14. KIV

    KIV Member

    Публикаций:
    0
    Регистрация:
    16 июл 2009
    Сообщения:
    231
    GetPrivateProfileSectionNames
    GetPrivateProfileString
    описание и примеры использования смотри в MSDN.
     
  15. Toxasoft

    Toxasoft New Member

    Публикаций:
    0
    Регистрация:
    20 сен 2010
    Сообщения:
    188
  16. Toxasoft

    Toxasoft New Member

    Публикаций:
    0
    Регистрация:
    20 сен 2010
    Сообщения:
    188
    А есть какието апи для работы с xml-ini
     
  17. Rustem

    Rustem New Member

    Публикаций:
    0
    Регистрация:
    8 мар 2004
    Сообщения:
    429
    Адрес:
    Russia
    Toxasoft
    под чистый винапи нету
    есть от мелкомягких монстр msxml со всеми вытекающими - сом объекты, интерфейсы итп

    но полно других библиотек, например tinyxml http://www.grinninglizard.com/tinyxml/
     
  18. Toxasoft

    Toxasoft New Member

    Публикаций:
    0
    Регистрация:
    20 сен 2010
    Сообщения:
    188
    Ok. Thanks