|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
09.09.2013, 23:35 | #1 |
Пользователь
Регистрация: 09.09.2013
Сообщений: 21
|
Проблема с типизированными файлами
Я создаю файл типа Tstats.
Код:
Код:
Если создать файл, выключить программу, потом включить снова и попытаться его прочитать, то ничего не выйдет и в переменной s типа Tstats будет пусто. Кто нибудь может помочь мне решить эту проблему? Последний раз редактировалось Stilet; 10.09.2013 в 08:18. |
09.09.2013, 23:53 | #2 |
ПШП
Участник клуба
Регистрация: 15.07.2013
Сообщений: 1,872
|
С каких это пор типизированные файлы работают с классами?
|
09.09.2013, 23:57 | #3 |
Пользователь
Регистрация: 09.09.2013
Сообщений: 21
|
цитата из книги фаронова.
Типизированный файл: <имя> = File of <тип>, где <имя> - имя файлового типа, <тип> - любой тип делфи, кроме файлов |
10.09.2013, 03:13 | #4 | |
ПШП
Участник клуба
Регистрация: 15.07.2013
Сообщений: 1,872
|
Цитата:
type fileTypeName = file of type where fileTypeName is any valid identifier and type is a fixed-size type. Pointer types - whether implicit or explicit - are not allowed, so a file cannot contain dynamic arrays, long strings, classes, objects, pointers, variants, other files, or structured types that contain any of these. Ну а то что у вас "все нормально работает когда я файл создаю и читаю, не выключая программу" легко объяснимо, особенно если посмотреть на размер получаемого вами файла - 4 байта. В файл вы записываете адрес в памяти созданного вами экземпляра класса s:=Tstats.Create;. И пока вы не выйдете из программы этот адрес верный. |
|
10.09.2013, 09:07 | #5 |
Пользователь
Регистрация: 09.09.2013
Сообщений: 21
|
Понятно, тогда как мне создать файл со сложной структурой? Например я хочу создать свой графический редактор или свой текстовый редактор и мне надо чтобы данные были закодированы определенным образом.
Еще интересует как сделать файл, в котором лежат данные в виде таблицы. Столбцы и записи можно увеличивать и уменьшать. Подскажите как реализовать это, если типизированые файлы не работают с динамическими массивами и классами? Последний раз редактировалось Des80; 10.09.2013 в 09:11. |
10.09.2013, 14:39 | #6 | ||
ПШП
Участник клуба
Регистрация: 15.07.2013
Сообщений: 1,872
|
Цитата:
Цитата:
|
||
10.09.2013, 15:53 | #7 |
Пользователь
Регистрация: 09.09.2013
Сообщений: 21
|
То есть я могу создать переменую типа File и через Tfilestream заливать данные из объекта Tstats в файл и наоборот, я правильно понимаю?
|
10.09.2013, 16:34 | #8 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
Только Вам нужно будет соблюсти следующие условия: - писать нужные данные (поля) из TStats в файл "ручками" - соблюдать правила заполнения файла (структуру), чтобы данные можно было не только записать, но и, потом, прочитать. Например, при записи строки писать сначала длину строки, потом - собственно символы строки ну и последнее. Вы вполне можете пользоваться и типизированными файлами. Опишите нормальную структуру (типа record) с нужными ограничениями (не использовать ссылочные типы данных) и можете писать/читать её одним лёгким движением кода! |
|
10.09.2013, 18:01 | #9 |
Пользователь
Регистрация: 09.09.2013
Сообщений: 21
|
Это гениально!
|
10.09.2013, 21:42 | #10 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Работа с типизированными файлами | Макс Башкинов | Помощь студентам | 25 | 18.01.2013 11:49 |
Паскаль. Проблема с типизированными файлами:( | Женька Good | Помощь студентам | 5 | 07.12.2011 23:41 |
Pascal. Проблема с типизированными файлами | Женька Good | Помощь студентам | 2 | 29.11.2011 22:13 |
Работа с типизированными файлами | Zalmancheg | Помощь студентам | 2 | 11.03.2011 23:15 |
Проблема с типизированными файлами | Siluet | Общие вопросы Delphi | 1 | 04.10.2009 14:08 |