Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Чтение данных из типизированного файла [D7, WinXP]


Yeg ©   (2006-02-28 15:58:00) 

Здравствуйте! Мне надо прочитать из файла определённую структуру данных. Описание типа файла у меня есть. Я первый раз пытаюсь сделать сабж, поэтому у меня особо ничего не получается.
Как я делаю:
1. Описываю структуру файла в Delphi:

type
 filestr = record
   //тут пишу, что есть что, т.е. к примеру name: string; surname: string; age: byte;
   end;


2. В переменных:

 f: file of filestr;
 block: filestr;


3. Далее, я читаю всё это дело из файла:

AssignFile(f, '.\filename.dat');
reset(f);
Read(f, block);
Closefile(f);


Но потом оказывается, что прочиталось не совсем то, что надо. Может ли это быть из-зи того, что мне надо только часть файла прочитать, а я в filestr описываю как бы, как целый файл, а на самом деле, это только один блок, часть файла?
Структуру я точно описываю правильно.


Yeg   (2006-02-28 16:42:00) [1]

MBo ©   (28.02.06 16:38) [5]

Ухты! Спасибо за статью!

begin...end ©   (28.02.06 16:39) [6]

У меня только чтение. Я всё в [1] в 3-ем пункте описал. Это полный код.


begin...end   (2006-02-28 16:39:00) [2]

А можно полный код записи и чтения увидеть?


MBo   (2006-02-28 16:38:00) [3]

>string[32]
>Вот так, например. Так же можно?
Да, можно.
http://www.delphikingdom.ru/asp/viewitem.asp?catalogid=843


Yeg   (2006-02-28 16:35:00) [4]

А чем отличается packed record от просто record?

UEdit, если я ту ссылку нашёл, очень много весит (~6mb). А никакой другой программы нет? Меньше размером?


novice_man   (2006-02-28 16:06:00) [5]

Yeg   (28.02.06 15:58)
filestr = packedrecord
А вообще, проверь в каком-либо редакторе (UEdit например) что там записано.


Yeg   (2006-02-28 16:02:00) [6]

Ой, извините, я не так писал...

string[32]

Вот так, например. Так же можно?


MBo   (2006-02-28 16:01:00) [7]

>к примеру name: string;
При данном методе записи-чтения нельзя использовать поля - длинные строки.
Компилятор, кстати, должен предупреждать об этом


Наверх

Титульная страница Поиск, карта сайта Написать письмо