![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 09.09.2013
Сообщений: 21
|
![]()
Я создаю файл типа Tstats.
Код:
Код:
Если создать файл, выключить программу, потом включить снова и попытаться его прочитать, то ничего не выйдет и в переменной s типа Tstats будет пусто. Кто нибудь может помочь мне решить эту проблему? Последний раз редактировалось Stilet; 10.09.2013 в 08:18. |
![]() |
![]() |
![]() |
#2 |
ПШП
Участник клуба
Регистрация: 15.07.2013
Сообщений: 1,926
|
![]()
С каких это пор типизированные файлы работают с классами?
|
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 09.09.2013
Сообщений: 21
|
![]()
цитата из книги фаронова.
Типизированный файл: <имя> = File of <тип>, где <имя> - имя файлового типа, <тип> - любой тип делфи, кроме файлов |
![]() |
![]() |
![]() |
#4 | |
ПШП
Участник клуба
Регистрация: 15.07.2013
Сообщений: 1,926
|
![]() Цитата:
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;. И пока вы не выйдете из программы этот адрес верный. |
|
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 09.09.2013
Сообщений: 21
|
![]()
Понятно, тогда как мне создать файл со сложной структурой? Например я хочу создать свой графический редактор или свой текстовый редактор и мне надо чтобы данные были закодированы определенным образом.
Еще интересует как сделать файл, в котором лежат данные в виде таблицы. Столбцы и записи можно увеличивать и уменьшать. Подскажите как реализовать это, если типизированые файлы не работают с динамическими массивами и классами? Последний раз редактировалось Des80; 10.09.2013 в 09:11. |
![]() |
![]() |
![]() |
#6 | ||
ПШП
Участник клуба
Регистрация: 15.07.2013
Сообщений: 1,926
|
![]() Цитата:
Цитата:
|
||
![]() |
![]() |
![]() |
#7 |
Пользователь
Регистрация: 09.09.2013
Сообщений: 21
|
![]()
То есть я могу создать переменую типа File и через Tfilestream заливать данные из объекта Tstats в файл и наоборот, я правильно понимаю?
|
![]() |
![]() |
![]() |
#8 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]() Цитата:
Только Вам нужно будет соблюсти следующие условия: - писать нужные данные (поля) из TStats в файл "ручками" - соблюдать правила заполнения файла (структуру), чтобы данные можно было не только записать, но и, потом, прочитать. Например, при записи строки писать сначала длину строки, потом - собственно символы строки ну и последнее. Вы вполне можете пользоваться и типизированными файлами. Опишите нормальную структуру (типа record) с нужными ограничениями (не использовать ссылочные типы данных) и можете писать/читать её одним лёгким движением кода! |
|
![]() |
![]() |
![]() |
#9 |
Пользователь
Регистрация: 09.09.2013
Сообщений: 21
|
![]()
Это гениально!
|
![]() |
![]() |
![]() |
#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 |