|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
19.07.2008, 20:29 | #1 |
Студент 1 курса
Форумчанин Подтвердите свой е-майл
Регистрация: 27.06.2008
Сообщений: 959
|
Работа с файлами.Строки в записях.
Всем привет!
Столкнулся я с такой проблемой.Пришлось мне сохранять Record в файл. Ну например у меня вот такой рекорд Код:
Код:
У меня выдает вот такую ошибку [DCC Error] Unit1.pas(34): E2155 Type 'Trec' needs finalization - not allowed in file type в строке f:file of Trec; как мне избежать ошибку? Вопрос 2. Как можно еще сохранять строки в файл более экономично по размеру?
C++(STL, QT, WinInet) / DHTML(CSS) / JavaScript / PHP Developer
|
19.07.2008, 22:21 | #2 | ||
Телепат с дипломом
Старожил
Регистрация: 10.06.2007
Сообщений: 4,929
|
Цитата:
string1: string[255]; //255 это максимум Цитата:
Ответ прост - в обычный текстовый файл. 1 буква - 1 байт, перевод каретки - 2 байта.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог |
||
19.07.2008, 22:39 | #3 |
Delphi/C++/C#
Участник клуба
Регистрация: 29.10.2006
Сообщений: 1,972
|
вопрос был про записи именно record в файл. Все посты удалены.
В дополнении: что в текстовом, что в типизированном файле строки хранятся одинакого (1 символ = 1 байт, но вот перенос строки в типизированном файле так таковой не нужен). А вот числа в типизированном файле хранятся более экономно, чем в текстовом. например число 12345 в текстовом файле будет записано как: 31|32|33|34|35 = 5 байт. а в типизированном: 30|39 = 2 байта. |
19.07.2008, 22:51 | #4 |
Студент 1 курса
Форумчанин Подтвердите свой е-майл
Регистрация: 27.06.2008
Сообщений: 959
|
вот я и спрашиваю как мне записывать record в файл.Мне надо чтобы в рекорде были строки и я мог указывать длину строки.Чтобы было экономичнее.Как мне это реализовать?
C++(STL, QT, WinInet) / DHTML(CSS) / JavaScript / PHP Developer
|
19.07.2008, 22:54 | #5 |
Delphi/C++/C#
Участник клуба
Регистрация: 29.10.2006
Сообщений: 1,972
|
ну надо знать максимальную длину текста, который вы будете загонять в стринг. и указать эту длину.
|
19.07.2008, 22:58 | #6 |
Студент 1 курса
Форумчанин Подтвердите свой е-майл
Регистрация: 27.06.2008
Сообщений: 959
|
а может как нибудь с
Str:Array of char; Setlength(str,3); str:='111'; write(f,str); .......???
C++(STL, QT, WinInet) / DHTML(CSS) / JavaScript / PHP Developer
|
20.07.2008, 11:44 | #7 |
Delphi/C++/C#
Участник клуба
Регистрация: 29.10.2006
Сообщений: 1,972
|
это record? так то можно, но у вас уже текстовый файл будет, а не типизированный.
|
20.07.2008, 12:22 | #8 |
Студент 1 курса
Форумчанин Подтвердите свой е-майл
Регистрация: 27.06.2008
Сообщений: 959
|
вот код
Код:
C++(STL, QT, WinInet) / DHTML(CSS) / JavaScript / PHP Developer
|
20.07.2008, 13:33 | #9 | |
Телепат с дипломом
Старожил
Регистрация: 10.06.2007
Сообщений: 4,929
|
Так какой все таки нужен файл, обязательно типизированный или какой лучше подходит?
Я уже говорил, типизированный файл для экономного хранения строк не подходит (если размер не важен, то вполне подходит, в вашем распоряжении строки до 255 символов), он как контейнер с запасом, меньше записывать можно, но размер файла все равно будет предустановленный. Поясню на примере Код:
Если записывать в такой файл строки разной длины, к примеру в основном около 10 символов и лишь некоторые из них будут доходить до 50 символов, размер файла получиться в несколько раз больше чем фактически полезных данных в нем. Исключение: если заранее известно, что все строки равны, тогда можно использовать типизированный файл со 100% "кпд". В отличие от типизированного, размер текстового всегда равен реальному кол-ву полезных символов в нем. Именно это я и имел ввиду, а не то что строки как-то иначе хранятся. Цитата:
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог |
|
20.07.2008, 13:48 | #10 |
Студент 1 курса
Форумчанин Подтвердите свой е-майл
Регистрация: 27.06.2008
Сообщений: 959
|
ну хорошо убедили использовать обычный текстовый файл.
Но есть вопрос Вот я например хочу записать много чисел и строк разной длины. А как мне потом считывать их если я не знаю скока байтов мне надо считать с файла?
C++(STL, QT, WinInet) / DHTML(CSS) / JavaScript / PHP Developer
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
работа с файлами в с++ | kermit | Помощь студентам | 13 | 09.06.2008 02:21 |
работа с файлами | Antonio86 | Общие вопросы Delphi | 0 | 20.01.2008 16:27 |
Работа с файлами | Zenit10 | Помощь студентам | 2 | 19.01.2008 09:59 |