C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Записать ini-файл в двоичный и назад, Хранить ini нужно в закодированном виде
Schumi
Отправлено: 19.10.2005, 15:21


Машинист паровоза

Группа: Участник
Сообщений: 206



Программа использует ini-файл с настройками, очень большой. На данный момент он открыт, и это понятно, человек может вручную менять каждую строчку.
По простому можно взять этот ini-файл и закодировать. То есть, берем некоторый закодированный файл, раскодируем, сохраняем, как обычный ini-файл, и снова с ним работаем через обычный TIniFile: грузим параметры как и раньше. И соответственно, наоборот — сохраняем ini-файл. Потом берем файл — кодируем — и сохраняем в двоичном виде. При обоих операция соответственно "настоящий" ini-файл удаляем.
У меня возникает вопрос, а можно сделать тоже самое, но без временного сохранения ini-файла, и записи/чтения только одного закодированного файла.
Gedeon
Отправлено: 19.10.2005, 15:31


Ветеран

Группа: Модератор
Сообщений: 1742



Ну а кто мешает прочитать зашифрованный файл, раскодировать его и взять настройки? Соотв. наоборот. Зачем тут вообще ини в промежутке?
avc*
Отправлено: 19.10.2005, 16:04


Не зарегистрирован







Remark
А вообще то ini как раз и удобен тем, что его можно поправить "руками"
Schumi
Отправлено: 19.10.2005, 16:37


Машинист паровоза

Группа: Участник
Сообщений: 206



QUOTE
Ну а кто мешает прочитать зашифрованный файл, раскодировать его и взять настройки? Соотв. наоборот. Зачем тут вообще ини в промежутке?

Полностью согласен, но... там этих настроек куча, если некоторых нет, то ставятся определенные, могут появляться новые с различными названиями. Просто много придется перелопачивать. Не хочется. Думал, может какой лобовой способ есть.

QUOTE
вообще то ini как раз и удобен тем, что его можно поправить "руками"

Да, еще удобнее то, что за тебя уже сделано все по части чтения и записи, добавления секций, их чтения, удаления и т.д.
Konstantine
Отправлено: 19.10.2005, 16:59


Мастер участка

Группа: Модератор
Сообщений: 545



можно испольховать TStringList и его свойство Values
в отличии от INI он не делат на разделы...
а с массивом работать проще.
и вообще — в каком виде будет шифрование?
Schumi
Отправлено: 20.10.2005, 08:15


Машинист паровоза

Группа: Участник
Сообщений: 206



QUOTE (Konstantine @ 19/10/2005, 16:59)
и вообще — в каком виде будет шифрование?

Да какое-нибудь простое: байт на байт
Konstantine
Отправлено: 20.10.2005, 13:07


Мастер участка

Группа: Модератор
Сообщений: 545



это называется замена... так вот замена расскрывается элементарно, написав прогу за 10 минут smile.gif
ну да не об этом...
если ты будешь использовать только текстовые символы (уже в закодированном варианте), то тебе отлично подойдёт TStringList — с помощью метода LoadFromFile считываешь свой кодированный файл и потом в цикле проходишь по символам (св-во Text) и делаешь замену на месте:
CODE
if(st[i]=='a') st[i]='b'
....и т.д.
а затем работаешь со св-вом Values:
CODE
num=st->Values["Num"].ToIntDef(0);


Отредактировано Konstantine — 20/10/2005, 13:15
Schumi
Отправлено: 20.10.2005, 13:48


Машинист паровоза

Группа: Участник
Сообщений: 206



QUOTE
то называется замена... так вот замена расскрывается элементарно, написав прогу за 10 минут
ну да не об этом...

не об этом smile.gif

А если у меня во многих секция есть параметры с одинаковыми названиями...
Я хотел, чтобы переход прошел с минимальн. затратами: на данный момент я использую tinifile, а что-то свое накручивать, как-то лень. cool.gif Думал, есть какой-нибудь быстрый способ
Konstantine
Отправлено: 20.10.2005, 14:02


Мастер участка

Группа: Модератор
Сообщений: 545



переделай структуру файла и вводи названия напр. в виде ИмяРаздела_ИмяПараметра...
в проге заменить — недолго....
а использовать в качестве промежуточного раскодированный файл — нецелесообразно.
Schumi
Отправлено: 20.10.2005, 16:02


Машинист паровоза

Группа: Участник
Сообщений: 206



Да, наверное, так и сделаю.
Schumi
Отправлено: 28.11.2005, 10:13


Машинист паровоза

Группа: Участник
Сообщений: 206



QUOTE (Schumi @ 20/10/2005, 16:02)
Да, наверное, так и сделаю.

Нет...и все же я так не сделал.
Есть "хороший" класс — TMemIniFile. С ним все получилось — его можно формировать через TStringList, а чтение и запись параметров остается без изменений (WriteBool,...)

Вернуться в Вопросы программирования в C++Builder