Форум: "Основная";
Текущий архив: 2004.08.01;
Скачать: [xml.tar.bz2];
ВнизКак записать record в ini-файл ? Найти похожие ветки
← →
Алекс А (2004-07-11 05:11) [0]Только не в виде BinaryStream, а чтобы
параметр1=его значение
параметр2=его значение
и т. д.
← →
KilkennyCat © (2004-07-11 05:29) [1]так и писать, как Вы сами написали...
← →
Defunct © (2004-07-11 05:30) [2]Write(F,"параметр1"+"=");
WriteLn(F, его значение);
и т.д. в цикле.
← →
Anatoly Podgoretsky © (2004-07-11 10:20) [3]Defunct © (11.07.04 05:30) [2]
А одним оператором ни как
А воспользоваться TIniFiles наверно совсем не по силам
← →
Алекс А (2004-07-12 01:48) [4]
> Defunct © (11.07.04 05:30) [2]
> Write(F,"параметр1"+"=");
> WriteLn(F, его значение);
>
> и т.д. в цикле.
И как вы себе представляеет этот цикл ?
Вот вам рекорд для примера :
TJointSettings = record
Link2: Integer;
MassDensity: Single;
dParamFMax: array[0..2] of Single;
Axis: array[0..2] of TVector;
Str1: string;
filename: PChar;
Name: array[0..31] of Char;
end;
← →
KilkennyCat © (2004-07-12 02:08) [5]Я так понимаю, стрим не устраивает, потому как хочется потом ручками ини править? другого объяснения не вижу....
Тогда как я уже в самом верху говорил:
Var
Djut : TJointSettings;
i : byte;
.......
begin
......
WriteInteger(Section, Ident, Djut.Link2);
WriteFloat(Section, Ident, Djut.MassDensity);
WriteFloat(Section, Ident, Djut.dParamFMax[0]);
WriteFloat(Section, Ident, Djut.dParamFMax[1]);
WriteFloat(Section, Ident, Djut.dParamFMax[2]);
.....
дальше там TVector идет, извиняюсь, его придется тоже раскладывать.
Что сложного?
ничего.
Что красивого?
ничего.
Какой выход?
отказаться от правки ини ручками.
Почему?
Потому что рядовому пользователю править ини вообще доверять не стоит, а не рядовому надо сделать кнопку "Сеттингс".
← →
Алекс А (2004-07-12 03:19) [6]
> KilkennyCat © (12.07.04 02:08) [5]
>
> WriteInteger(Section, Ident, Djut.Link2);
> WriteFloat(Section, Ident, Djut.MassDensity);
> WriteFloat(Section, Ident, Djut.dParamFMax[0]);
> WriteFloat(Section, Ident, Djut.dParamFMax[1]);
> WriteFloat(Section, Ident, Djut.dParamFMax[2]);
> .....
> дальше там TVector идет, извиняюсь, его придется тоже раскладывать.
>
> Что сложного?
> ничего.
А если будет десть record"ов, то надо написать всего лишь десять таких же функций. А если тысяча, то тысячу. Всего лишь. "Что сложного ? Ничего" © Одни из "мастеров" Дельфи.
← →
KilkennyCat © (2004-07-12 03:29) [7]
> Алекс А (12.07.04 03:19) [6]
а если тысяча, то несколько вариантов:
1) застрелиться
2) утопиться
3) прийти наконец к осознанию того, что некоторые вещи просто не стоит делать.
4) написать одну универсальную функцию, которая сама посчитает число всех итемов рекорда и засунет в ини, как строку.
← →
GrayFace © (2004-07-12 05:28) [8]Разве 4) возможно?
> дальше там TVector идет, извиняюсь, его придется тоже раскладывать.
Его-то можно автоматизировать. Если он - наследник TComponent, то можно писать в MemoryStream, а потом переводить в строки. Формат там не сложный. А можно изменить TWriter.
← →
Anatoly Podgoretsky © (2004-07-12 08:53) [9]Алекс А (12.07.04 01:48) [4]
Данная запись бессмысленна для записи в файлы любого типа, тем более в ИНИ. Писать указатели в файлы просто бессмысленно и результатом подобных действий банальное AV
← →
KilkennyCat © (2004-07-12 23:47) [10]
> GrayFace © (12.07.04 05:28) [8]
> Разве 4) возможно?
Наверное... попробую на днях.
> > дальше там TVector идет, извиняюсь, его придется тоже
> раскладывать.
> Его-то можно автоматизировать. Если он - наследник TComponent,
> то можно писать в MemoryStream, а потом переводить в строки.
> Формат там не сложный. А можно изменить TWriter.
э... я подумал, что TVector - это определенный пользователем тип :)
← →
Алекс А (2004-07-15 01:48) [11]Как получить количество и список элементов record"а, и как получить значения каждого из них ?
Возможно лучше сохранять рекорды не в виде ини-файла, а в виде дерева. Так как по структуре похоже.
← →
Германн © (2004-07-15 02:37) [12]2 Алекс А (15.07.04 01:48) [11]
> Как получить количество и список элементов record"а, и как >получить значения каждого из них ?
... А record твой?
> Возможно лучше сохранять рекорды не в виде ини-файла, а в виде >дерева. Так как по структуре похоже.
Возможно, но если ты "почувствуешь разницу"! Между "ини-файлом" и "деревом". Причем не важно, что это за дерево! Береза, дуб, осина, ЛИПА...
← →
Алекс А (2004-07-15 02:49) [13]
> Германн © (15.07.04 02:37) [12]
> 2 Алекс А (15.07.04 01:48) [11]
>
> > Как получить количество и список элементов record"а, и
> как >получить значения каждого из них ?
> ... А record твой?
В смысле мой ? Мой !
← →
Sergey Kaminski (2004-07-15 03:34) [14]Иногда имеет смысл все настройки программы (или что там будет находиться в рекордах) запихнуть не в рекорды, а в специальный класс. Каждое поле рекорда - published свойство этого класса. И написать 2 универсальных метода в этом классе для записи и восстановления значений его pusblished свойств. Если нравится - то можно через RTTI, а можно и проще.
Я отвечал на первый вопрос в ветке, так что если чего-то не то посоветовал -- ссори (устал и бессоница).
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.08.01;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.037 c