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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с файлами. нужна подсказка 
:(
    Опции темы
HAS
Дата 17.6.2007, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ing
*


Профиль
Группа: Участник
Сообщений: 170
Регистрация: 1.3.2005
Где: Internet

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



Здравствуйте.
Есть запись. Есть файл, типа этой записи.
Нужно сделать так : в первых байтах файла записать количество записей, которые записываем, а дальше сами записи.
Помогите плз.
PM MAIL   Вверх
skyboy
Дата 17.6.2007, 22:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

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



есть такая вещь: типизированные файлы. Ты, видимо, их и используешь. Они позволяют писать в себя только компоненты одного типа. Значит в них отдельно от записей количество не запишешь.
однако можно "обмануть", если сначала объявить файл как file of integer, а потом - как file of TYourRecord. 
Вроде такого:
Код

program Project2;
{$APPTYPE CONSOLE}
uses
  SysUtils;
type
  TSome = record
   val0: integer;
   val1: real;
  end;
const
   PATH_TO = 'c:\temp.txt';
var
  f1: file of integer;
  f2: file of TSome;
  i,N: integer;
  Some: TSome;
begin
 Randomize();
 {Çàïèñûâàåì ôàéë}
 N:= 5;
 AssignFile(f1,PATH_TO);
 Rewrite(f1);
 write(f1,N);
 CloseFile(f1);
 AssignFile(f2,PATH_TO);
 Reset(f2);
 for i:=1 to N do
  begin
   Some.val0:= N + 1;
   Some.val1:= N / 10;
   write(f2,Some);
  end;
 CloseFile(f2);
end;

Один минум - записать-запишем, а вот прочитать таким же способом не сможем. Ибо если мы такой "перемешанный" файл представим как file of integer и прочитаем количество как integer - все будет нормально.
Но при представлении файла как file of TYourRecord мы не сможем перейти ровно к первой записи - либо(если мы ничего не предпримем) мы будем считать integer в начале файла частью первой записи и, естественно, никакую из записей мы корректно не прочитаем из-за сдвига. Да и сдвинуть позицию чтения мы не сможем: seek для типизированных файлов перемещает указатель не на количество байт, а на количество компонент. 
--------
вариант 2: использовать нетипизированные файлы(тип file). Все проще и прозрачнее тогда получается smile 
PM MAIL   Вверх
HAS
Дата 17.6.2007, 22:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ing
*


Профиль
Группа: Участник
Сообщений: 170
Регистрация: 1.3.2005
Где: Internet

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



мне и нужен нетипизированый файл.
PM MAIL   Вверх
skyboy
Дата 17.6.2007, 22:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

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



и? импользуй. те же самые функции assignFile, rewrite/reset, read/write, closeFile.
PM MAIL   Вверх
gambit
Дата 25.6.2007, 21:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***
Награды: 1



Профиль
Группа: Комодератор
Сообщений: 1359
Регистрация: 25.6.2006
Где: я?

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



А зачем записывать кол-во записей????
Когда я делал записную книжку, я в цикле просто доходил до конца файла и получал число записей.

Добавлено через 4 минуты и 21 секунду
Цитата

Есть файл, типа этой записи


Цитата

мне и нужен нетипизированый файл.


 smile 
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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