Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
3-1089063526
Sir John
2004-07-06 01:38
2004.08.01
TclientDataSet и поля с autoincrement


4-1087816930
Aleksandr.
2004-06-21 15:22
2004.08.01
Что вызывает ошибку в ShellExecute?


4-1087572404
Алексей Петухов
2004-06-18 19:26
2004.08.01
установить: разделитель разрядов, дробной части, даты и т.д.


14-1089791240
infom
2004-07-14 11:47
2004.08.01
Ветка про ДЕВУШЕК


3-1089106134
serg!
2004-07-06 13:28
2004.08.01
Apollo SQL 5.0-5.2





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский