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 минут
ну да не об этом...
если ты будешь использовать только текстовые символы (уже в закодированном варианте), то тебе отлично подойдёт 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 минут
ну да не об этом... |
не об этом
А если у меня во многих секция есть параметры с одинаковыми названиями...
Я хотел, чтобы переход прошел с минимальн. затратами: на данный момент я использую tinifile, а что-то свое накручивать, как-то лень. Думал, есть какой-нибудь быстрый способ
|
|
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,...)
|
|