![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Я |
|
||||
|
Unregistered |
Есть структура
В процессе соответсвенно структура заполняется и надо бы её сохранить в файл. Делаю так:
Фаил создается, его размер 16384б и не зависимо от количество записей не меняется. Соответсвенно при чтении из него структура остается обсалютно пустой. Плиз хелп. |
||||
|
|||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
а ты не пробовал использовать reset
|
|||
|
||||
| Я |
|
|||
|
Unregistered |
Пробывал - эффект тот же.
|
|||
|
||||
| Satana |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 564 Регистрация: 15.9.2004 Где: Ставрополь, СЗ ра йон Репутация: 1 Всего: 5 |
А ты не пробовал использовать типизированный файл? или чем он тебя не устраивает?
должно быть чтото типа такого:
-------------------- |
|||
|
||||
| я |
|
|||
|
Unregistered |
Satana
Для типизированного файла: должно быть FullPath: string[255]; Мне это не подходит потому как переменная может выходить за 256 символов ((( |
|||
|
||||
| SlaUr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 408 Регистрация: 18.9.2003 Репутация: 3 Всего: 5 |
По моему можно обьявить st1:array [1..1000] of char (если я не ошибаюсь)
Это сообщение отредактировал(а) SlaUr - 25.11.2004, 10:39 |
|||
|
||||
| Pakshin A. S. |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 5056 Регистрация: 16.2.2003 Репутация: 21 Всего: 61 |
можно исхитриться... ставить разделители в файле, например посалить какой-нить ASCII код... получим следующее:
Number#FullPath#NumOfPlay#Rep# Только читаться немного дольше будет... Читаем до первого... до второго... до третьего.. до четвертого... получили всё необходимое, если надо повторили... конец по EOF |
|||
|
||||
| Guest |
|
|||
|
Unregistered |
Pakshin A. S.
Да, я тоже к такому выводу пришел, но не хотелось бы так извращаться |
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
Ну во-первых нужно давать ReWrite(fn,1) или использовать file of byte.
А во-вторых, если строка неограниченной длинны, то в файл будет кидаться по максимуму. Так что придется кидать все элементы по одному, а перед строкой дополнительно давать размер строки. Просто так рекорд с неограниченной строкой не закинуть.
Вот что-то вроде этого. Я не тестил, возможно сразу не сработает, но отладить можно. А напрямую писать структуру бесполезно - типизированный файл должен иметь одинаковый размер всех элементов, а он не ограничен... Для сохранения массива нужно вынести открытие и закрытие наружу и вызывать Save или Read в цикле. Это сообщение отредактировал(а) Snowy - 25.11.2004, 13:22 |
|||
|
||||
| Alex |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4147 Регистрация: 25.3.2002 Где: Москва Репутация: 80 Всего: 162 |
Satana, убедительная просьба не давать приблизительных примеров кода, которые человек ни когда не сможет скомпилировать. Вам уже отвечали один раз, что ваш пример не корректный.
-------------------- Написать можно все - главное четко представлять, что ты хочешь получить в конце. |
|||
|
||||
| Satana |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 564 Регистрация: 15.9.2004 Где: Ставрополь, СЗ ра йон Репутация: 1 Всего: 5 |
Alex Хорошо больше не буду...
-------------------- |
|||
|
||||
| Medved |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 7209 Регистрация: 15.9.2002 Где: Kazakhstan, Astan a Репутация: 14 Всего: 154 |
-------------------- |
|||
|
||||
| z-END |
|
||||||
![]() прафесар™ ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3014 Регистрация: 13.3.2003 Где: Венья, Пиетари Репутация: 11 Всего: 102 |
Дабы многоувожаемый Pegas никому не поставил по минусу, выкладываю свой вариант решения:
1. немного видоизменим описание типа:
2. Для сохранения:
3. Для чтения:
ЗЫ надеюсь мой код рабочий -------------------- Каждый чилавек пасвоему праф...а памоему НЕТ! |
||||||
|
|||||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
1. Можно помочь просто примером кода. Пример структуры, пример конструкции, пример использования функции и т.п.
2. Не у всех есть время, чтобы полностью все проверить и отладить. Времени жалко но разве это повод не помочь человеку? 3. Человек не защищен он опечаток и мелких ошибок. Я свой код набивал прямо в браузере, поэтому нет ничего ужасного в том, что я забыл поставить (f) после CloseFile. Теперь по теме. В моем коде нужно добавить (f) после обеих CloseFile и добавить [1] после fd.FullPath. Теперь уж проверил. Точно работает. Можете взять старый код, исправить эти недочеты и все заработает. Пойдем далее. Так уж и быть, потратил время, сделал РАБОЧИЙ код по циклы.
Код работает, проверен. Можно переделывать под свои нужды. Размер файла с данными гораздо меньше, чем при использовании фиксированного рекорда. |
|||
|
||||
| p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 58 Всего: 112 |
Это жестоко - ставить минус человеку за попытку помочь... Так можно отбить у людей всё желание помогать... Согласен с Snowy, я тоже иногда пишу код прямо в браузере, не проверяя на работоспособность/компилируемость... Особенно, когда нужно показать не рабочий код, а только идею, наброски реализации... -------------------- С уважением, г-н Посол. |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |