Форум программистов, компьютерный форум CyberForum.ru

Сохранение(загрузка) свойств элементов формы в файл - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.67
zzzot
0 / 0 / 0
Регистрация: 24.08.2011
Сообщений: 5
24.08.2011, 11:42     Сохранение(загрузка) свойств элементов формы в файл #1
Здравствуйте! Необходимо реализовать взможность сохрнения/загрузки свойств элементов ComboBox (itemindex), Label(caption) и Edit(text) в/из одного файла(разрешение не имеет значения).
з.ы. в Edit цифровая информация
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.08.2011, 11:42     Сохранение(загрузка) свойств элементов формы в файл
Посмотрите здесь:

C++ загрузка массива и сохранение результата в файл
C++ Массив стуктур - загрузка/сохранение в файл
C++ Сохранение-Загрузка игры
Сохранение и загрузка в бинарный файл C++
C++ Файл: При сохранение в файл big100.txt в блокноте отображаются иероглифы, почему?
Сохранение и загрузка данных в файл C++
Сохранение/загрузка структуры C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
insolent
 Аватар для insolent
826 / 347 / 15
Регистрация: 30.01.2009
Сообщений: 1,204
24.08.2011, 17:54     Сохранение(загрузка) свойств элементов формы в файл #2
zzzot, как вариант использовать ini или xml файлы
-=ЮрА=-
Заблокирован
Автор FAQ
24.08.2011, 18:25     Сохранение(загрузка) свойств элементов формы в файл #3
Цитата Сообщение от zzzot Посмотреть сообщение
Здравствуйте! Необходимо реализовать взможность сохрнения/загрузки свойств элементов ComboBox (itemindex), Label(caption) и Edit(text) в/из одного файла(разрешение не имеет значения).
з.ы. в Edit цифровая информация
- Как вариант сделай класс аля CControlsCaptoins
Какждый раз при запуске програмы, одним из метода данного класса проверяй наличие файла параметров (этот файл можешь куда угодно в системе запихнуть, не обзательно рядом с программой держать), если данного файла нет, значит устанавливаешь элементам их свойства по умолчанию, например в эдит пишешь ноль, а в комбобоксе ставишь курсор в 0-ую позицию. Если при запуске файл найден, друим методом CControlsCaptoins считатй какие параметры в нём есть (айл понятное дело дожен быть структурирован)
К примеру
Caption.ini

BEGIN>
CombboCursorPos 5
EditValue 256
ShowButton 0
END


Если какогото параметра нет то значит єтот контрол инициализируем по умолчанию, вот и все дела

Добавлено через 21 секунду
Цитата Сообщение от zzzot Посмотреть сообщение
Здравствуйте! Необходимо реализовать взможность сохрнения/загрузки свойств элементов ComboBox (itemindex), Label(caption) и Edit(text) в/из одного файла(разрешение не имеет значения).
з.ы. в Edit цифровая информация
- Как вариант сделай класс аля CControlsCaptoins
Какждый раз при запуске програмы, одним из метода данного класса проверяй наличие файла параметров (этот файл можешь куда угодно в системе запихнуть, не обзательно рядом с программой держать), если данного файла нет, значит устанавливаешь элементам их свойства по умолчанию, например в эдит пишешь ноль, а в комбобоксе ставишь курсор в 0-ую позицию. Если при запуске файл найден, друим методом CControlsCaptoins считатй какие параметры в нём есть (айл понятное дело дожен быть структурирован)
К примеру
Caption.ini

BEGIN>
CombboCursorPos 5
EditValue 256
ShowButton 0
END


Если какогото параметра нет то значит єтот контрол инициализируем по умолчанию, вот и все дела
zzzot
0 / 0 / 0
Регистрация: 24.08.2011
Сообщений: 5
24.08.2011, 19:06  [ТС]     Сохранение(загрузка) свойств элементов формы в файл #4
на счет ини копал. можно ли его сохранять через диалоговое окно сохранения?
просто суть в чем... нужна возможность сохранения свойств для последующей загрузки из этих файлов(диалогом открытия соответственно)

Добавлено через 4 минуты
либо, как вариант, программа будет работать с отдельным файлом(тот же caption.ini) но с возможностью сохранить в другой через диалог

Добавлено через 33 минуты
реализовал с ini файлом. подскажите как вывести сохранение и загрузку через диалоговое окно)
lifestyle
Mobile Developer
 Аватар для lifestyle
231 / 227 / 4
Регистрация: 10.05.2009
Сообщений: 917
24.08.2011, 20:57     Сохранение(загрузка) свойств элементов формы в файл #5
Цитата Сообщение от zzzot Посмотреть сообщение
на счет ини копал. можно ли его сохранять через диалоговое окно сохранения?
просто суть в чем... нужна возможность сохранения свойств для последующей загрузки из этих файлов(диалогом открытия соответственно)

Добавлено через 4 минуты
либо, как вариант, программа будет работать с отдельным файлом(тот же caption.ini) но с возможностью сохранить в другой через диалог

Добавлено через 33 минуты
реализовал с ini файлом. подскажите как вывести сохранение и загрузку через диалоговое окно)
тот же принцип, что и работа с ини файлом из формы...
как пример при сохранении файла алгоритм будет обходить все контролы и записывать в буффер и потом сохронять под заданным именем
или как вариант , если настройки сохраняются "на лету" в главный файл, протсо копировать его под другим именм заданным в диалоговом окне.
-=ЮрА=-
Заблокирован
Автор FAQ
24.08.2011, 22:17     Сохранение(загрузка) свойств элементов формы в файл #6
Цитата Сообщение от zzzot Посмотреть сообщение
ибо, как вариант, программа будет работать с отдельным файлом(тот же caption.ini) но с возможностью сохранить в другой через диалог
Добавлено через 33 минуты
реализовал с ini файлом. подскажите как вывести сохранение и загрузку через диалоговое окно)
Выкладываю простой MFC проект, по сохранению и загрузке состояния контролов окна.
Принцип такой - при нажатии кнопки сохранить хначение контролов в
C++
1
GetTempPath(MAX_PATH,sFilePath);
создаю файл CDlgCap.ini
(при желании этот файл можно редактировать самому)
При первом запуске или если не нажималась кнопка Сохранить значения контролов окно выскакивает не инициализированным, поэтому необходимо наать кнопку Заполнить элементы.
Можно выбирать позицую ComboBox и CheckBox-а (в программе есть несколько доп методов для работі с контролами, посмотришь сам). Так вот после того как контролы заполняться жмём Сохранить значения контролов, при повторном запуске программы контролы заполняться автоматом сами, чтобы их переинициализировать - сноа нажимаем Заполнить элементы

Загрузку и выгрузку значений контролов организовал с помощью класса CDlgCap
Листинг CDlgCap.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include "stdafx.h"
#pragma once
 
class CDlgCap
{
private:
    char * sFileEntry;
    char sFilePath[MAX_PATH];
    CString sEditText;
    bool bCheck;
    long lComboPos;
public:
    CDlgCap();
    ~CDlgCap();
 
    bool Initialize();
    bool SaveCaption();
 
    CString getFilePath();
    CString getEditText();
    bool getCheck();
    long getComboPos();
 
    void setEditText(CString);
    void setCheck(bool);
    void getComboPos(long);
};
Листинг CDlgCap.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
#include "stdafx.h"
#include "CDlgCap.h"
#include <stdio.h>
 
CDlgCap::CDlgCap()
{
    GetTempPath(MAX_PATH,sFilePath);
    strcat(sFilePath,"CDlgCap.ini");
 
    sFileEntry = (char *)malloc(sizeof(char));
 
    sEditText = "NotInitialized";
    bCheck    = false;
    lComboPos = -1;
}
 
CDlgCap::~CDlgCap()
{
    if(sFileEntry)
        free(sFileEntry);
}
 
bool CDlgCap::Initialize()
{
    bool bRet = false;
    char * buf;
    long fLen = 0;
    FILE * f = fopen(sFilePath,"rb+");
    if(f)
    {
        fseek(f,0,SEEK_END);
        fLen = ftell(f);
        fseek(f,0,SEEK_SET);
 
        if(sFileEntry = (char *)realloc(sFileEntry,fLen + 1))
        {
            fread(sFileEntry,fLen,1,f);
            sFileEntry[fLen] = '\0';
            buf = strtok(sFileEntry,"\r\n");
            while(buf)
            {
                if(strstr(buf,"EDIT_TEXT"))
                    sEditText = buf + strlen("EDIT_TEXT");
                if(strstr(buf,"BOOLCHECK"))
                if(strstr(buf,"true") || strstr(buf,"TRUE"))
                    bCheck = true;
                if(strstr(buf,"COMBO_POS"))
                    sscanf(buf + strlen("COMBO_POS"),"%d",&lComboPos);
                buf = strtok(NULL,"\r\n");
            }
            if(16 < lComboPos)
                lComboPos = -1;
            bRet = true;
        }
        fclose(f);
    }
    return bRet;
}
 
CString CDlgCap::getFilePath()
{
    return sFilePath;
}
 
CString CDlgCap::getEditText()
{
    return sEditText;
}
 
bool CDlgCap::getCheck()
{
    return bCheck;
}
 
long CDlgCap::getComboPos()
{
    return lComboPos;
}
 
void CDlgCap::setEditText(CString sText)
{
    sEditText = sText;
}
 
void CDlgCap::setCheck(bool check)
{
    bCheck = check;
}
 
void CDlgCap::getComboPos(long lPos)
{
    lComboPos = lPos;
}
 
 
bool CDlgCap::SaveCaption()
{
    bool bRet = false;
    FILE * f = fopen(sFilePath,"wb+");
    if(f)
    {
        fprintf(f,"[CDlgCap.ini]\r\n%s\r\n","[BEGIN]");
        fprintf(f,"EDIT_TEXT %s\r\n",sEditText);
        fprintf(f,"BOOLCHECK %s\r\n",bCheck ? "TRUE" : "FALSE");
        fprintf(f,"COMBO_POS %d\r\n",lComboPos);
        fprintf(f,"%s","[END]");
        fclose(f);
        bRet = true;
    }
    return bRet;
}
Прикладываю проект, экзе и скрины работы
Миниатюры
Сохранение(загрузка) свойств элементов формы в файл   Сохранение(загрузка) свойств элементов формы в файл   Сохранение(загрузка) свойств элементов формы в файл  

Вложения
Тип файла: rar SCap.exe.rar (5.2 Кб, 20 просмотров)
Тип файла: rar SCap_proj.rar (10.1 Кб, 23 просмотров)
zzzot
0 / 0 / 0
Регистрация: 24.08.2011
Сообщений: 5
25.08.2011, 09:48  [ТС]     Сохранение(загрузка) свойств элементов формы в файл #7
столкнулся с пробдлемкой) как назначить для сохранения файла ini каталог с программой)
если так
C++
1
2
3
4
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
TIniFile *Ini = new TIniFile("Name.ini");
файл не создается
если прописать путь к каталогу с программой, все работает, но создается не Name.ini а ********Name.ini , где ******** даже пока не разобрал от куда)))

Добавлено через 18 минут
ок) кое-что нашел)
как мне привязать имя открываемого файла из события OnCanClose элемента SaveDialog с именем ini файла?

Добавлено через 38 минут
ура) все почти готово)
очередная кочка: как привязать расширение к имени файла при сохранении?))

Добавлено через 1 час 33 минуты
гг)следующая гора)
если выбрать папку(отдельную) для сохранения файла в каталоге программы, то прога начинает грузить картинку в форму(помимо эдитов и комбобоксов меняется имя картинки которая грузится из корневой папки) из этой отдельной папки а не из корневой.... как сделать загрузку из корня?

Добавлено через 6 часов 8 минут
неа... всетаки не работает. сохраняет только в файл, который прописан
C++
1
2
3
4
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
TIniFile *Ini = new TIniFile("D:\Calculator Tal\calc\demo.rec");
тут
из него грузится все ровно. как сделать имя ini(у меня rec) изменяемым в процессе работы приложения?)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.08.2011, 11:08     Сохранение(загрузка) свойств элементов формы в файл
Еще ссылки по теме:

INI - Загрузка и сохранение настроек C++
C++ Загрузка и сохранение в двоичный файл
Сохранение/Загрузка указателя на указатель типа char C++
C++ Двусвязный список. Загрузка, сохранение в файл, сортировка по вводимому параметру
Сохранение и загрузка данных из ListView в txt файл C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
-=ЮрА=-
Заблокирован
Автор FAQ
25.08.2011, 11:08     Сохранение(загрузка) свойств элементов формы в файл #8
Цитата Сообщение от zzzot Посмотреть сообщение
столкнулся с пробдлемкой) как назначить для сохранения файла ini каталог с программой)
- я с билдером скорее на Вы чем на Ты, касательно моего кода для перемещения файла настроек в каталог программы достаточно провести небольшую модернизацию
C++
1
2
3
4
5
6
CDlgCap::CDlgCap()
{
        //GetTempPath(MAX_PATH,sFilePath);
        /*strcat*/strcpy(sFilePath,"CDlgCap.ini");
        //далее всё по коду...
}
Yandex
Объявления
25.08.2011, 11:08     Сохранение(загрузка) свойств элементов формы в файл
Ответ Создать тему
Опции темы

Текущее время: 17:31. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru