Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> FileName, в файле 
:(
    Опции темы
Medved
Дата 21.6.2004, 08:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

Репутация: 14
Всего: 154



Во, во, Петрович как всегда выкрутился smile.gif сразу видно, настоящий русский программист (под словом русский имеется ввиду CCCP). Только не используй динамические массивы, если хочешь записывать в типизированный файл.


--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
Girder
Дата 21.6.2004, 09:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй 2
***


Профиль
Группа: Участник Клуба
Сообщений: 1993
Регистрация: 12.5.2004

Репутация: 31
Всего: 155



Цитата
... пишет данные в типизированный файл

Типизированный файл - это хорошо(для новичка) и плохо(для реализации) - Но это моё мнение.
В свое время столько по имел с "Типизированными файлами" проблем.
Поэтому лудше используй String и свои обработчики записи и считывания, не забудь записывать в файл версию файла(т.е. формата данных в файле).



--------------------
Как слышим, так и пишим.
Истина где-то там...
PM   Вверх
Alex
Дата 22.6.2004, 00:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 80
Всего: 162



Цитата(Pegas @ 21.6.2004, 09:48)
Во, во, Петрович как всегда выкрутился smile.gif сразу видно, настоящий русский программист (под словом русский имеется ввиду CCCP). Только не используй динамические массивы, если хочешь записывать в типизированный файл.

я бы сказал, как всегда попал в точку smile.gif smile.gif smile.gif


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
Петрович
Дата 22.6.2004, 07:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1000
Регистрация: 2.12.2003
Где: Москва

Репутация: 25
Всего: 55



Цитата
Во, во, Петрович как всегда выкрутился

Наверное не донес smile.gif. Я то имел ввиду, что так можно, но это извращение.
Правильнее конечно будет наладить нормальную запись AnsiString. И вообще, лучше иметь не запись, а объект который умеет сам себя писать и читать. Причем, как правильно отметил Girder, в начало файла надо писать версию его структуры, тогда, при дальнейшем развитии программы не будет проблем с чтением "старых" файлов.



--------------------
Все знать невозможно, но хочется
PM ICQ   Вверх
z-END
Дата 22.6.2004, 10:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прафесар™
****


Профиль
Группа: Комодератор
Сообщений: 3014
Регистрация: 13.3.2003
Где: Венья, Пиетари

Репутация: 11
Всего: 102



thumbs-up.gif спросил только часто ли бывает что длинна (полное имя) файла превышает 255 символов, а тут столько вариантов и советов! спасибоsmile.gif
Петрович про R/W объектов это хорошо когда объект сам по себе... а вот если он является частью части динамического массива, например:
Код
Type myType1 = Object;
        ...
      end;

Type myBigType1 = Object;
        private
          Items: Array of myType1;
         ...
        public
         procedure Add (Data: myType1);    
          ...
    end;
Type Body = Object
        private  
         Items: Array of myBigType1;
         ...
       public
        ...
  end;

то запись/чтение такого объекта "немного" усложнится... может конечно сказывается мой дурной тон программирования, но я очень часто использую такой вид структуры.
Когда объект содержит текстовую информацию, и известно, что его длинна влегкую привысит 255 символов, то тогда приходится использвать нетипизированный файл и ф-цию BlockWrite, но это в свою очередь влечет за собой то что в таком случае приходится все properties объекта записывать и считывать "вручную" (BlockRead - BlockWrite) что неочень удобно, т.к. в случае если мне вдруг понадобилось добавить какое ни будь свойство в объект, то приходится переписывать заново процедуру чтения/записи...
Согласитесь проще использовать Record и записать в такой-же нетипизированный файл, но таким способом:
Код
for i := 0 to MyObject.RecCount-1 do
begin
BlockWrite (someF, MyObject.RecVersion, SizeOf (TrecVersion));
BlockWrite (someF, MyObject.MyRecord[i], SizeOf (TmyRecord));
end

а считывать так:
Код
BlockRead (someF, MyObject.RecCount, SizeOf (Integer));
SetLength (MyObject.MyRecord, MyObject.RecCount);
for i := 0 to MyObject.RecCount-1 do
begin
BlockRead (someF, MyObject.RecVersion, SizeOf (TrecVersion));
case MyObject.RecVersion of
ver1101:
        begin
           BlockRead (someF, MyAlfa, SizeOf (TmyAlfa));
           Convert (MyAlfa, MyObject.MyRecord[i]);
        end;
ver1102:
        begin
           BlockRead (someF, MyBeta, SizeOf (TmyBeta));
           Convert (MyBeta, MyObject.MyRecord[i]);
        end;
ver1103:  BlockRead (someF, MyObject.MyRecord[i], SizeOf (TmyRecord));
end

и в этом случае уже не надо следить за тем какие данные используются (в ф-ции чтения/записи) а какие еще нет..



--------------------
Каждый чилавек пасвоему праф...а памоему НЕТ! 

PM WWW ICQ   Вверх
Петрович
Дата 22.6.2004, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1000
Регистрация: 2.12.2003
Где: Москва

Репутация: 25
Всего: 55



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


--------------------
Все знать невозможно, но хочется
PM ICQ   Вверх
Medved
Дата 23.6.2004, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

Репутация: 14
Всего: 154



Цитата
И вообще, лучше иметь не запись, а объект который умеет сам себя писать и читать.

Может быть я не понял ответа, но хотел бы заметить, что объекты нельзя записывать в типизированный файл. Если конечно речь шла об этом.


--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
Akina
Дата 23.6.2004, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: нет
Всего: 454



Цитата
ЗЫ у себя на компе ненашел ниодного файла длиннее 255 символов. у кого нибудь есть?

Например у меня в "E:\Documents and Settings\Администратор\Мои документы" достаточно развесистая клюква подкаталогов с весьма некороткими русификованными названиями, документы тоже именуются не "DOC1.RTF" - так что там полные имена по 300-500 байт сплошь и рядом...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Петрович
Дата 23.6.2004, 22:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1000
Регистрация: 2.12.2003
Где: Москва

Репутация: 25
Всего: 55



Цитата
Если конечно речь шла об этом.

Тут взглянул наверх, и обнаружил что тема-то вообще не касалась записи файлов biggrin.gif
А что касается:
Цитата
Может быть я не понял ответа, но хотел бы заметить, что объекты нельзя записывать в типизированный файл.
то nJIaKca.spb в своем примере пользует BlockWrite что практически не отличается от использования tFileStream.



--------------------
Все знать невозможно, но хочется
PM ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0566 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.