![]() |
|
Модераторы: volvo877, Snowy, MetalFan |
![]()
|
|
| VingradFan |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 477 Регистрация: 30.1.2006 Где: Москва Репутация: нет Всего: 3 |
вобщем, хочется найти максимально простой способ реалиации. как я понимаю, задачу сразу надо разделить для текстовых и типизированнных файлов.
ДЛЯ ТЕКСТОВЫХ единственный способ до которого додумался: открыть для чтения, считать n-1 строк в массив, открыть для записи, записать из массива n-1 строк, дописать ту которубю надо было исправить. Если есть еще варианты расскажите пожалуйста ДЛЯ ТИПИЗИРОВАННЫХ там как я понимаю можно считывать строку, и тут же ее записывать, тоесть без массива, но с буферной переменной. Вобщем подскажите как будет лучше всего... может можно переходить сразу к нужной строке? -------------------- Когда-нибудь я стану богатым и куплю себе столько Ролтонов, сколько захочу... |
|||
|
||||
| valedol |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 13.10.2006 Где: Санкт-Петербург Репутация: нет Всего: нет |
а разве при этом файл не обрежется по n-ную строку? было бы легко и просто использовать временный файл вместо массива, и память не забивается... если у файла слишком хитрая структура, то можно открывать его как файл типа byte Это сообщение отредактировал(а) valedol - 28.5.2007, 18:39 |
|||
|
||||
| VingradFan |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 477 Регистрация: 30.1.2006 Где: Москва Репутация: нет Всего: 3 |
что ты имееш в виду? на каком шаге это произойдет? -------------------- Когда-нибудь я стану богатым и куплю себе столько Ролтонов, сколько захочу... |
|||
|
||||
| valedol |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 13.10.2006 Где: Санкт-Петербург Репутация: нет Всего: нет |
ты допишешь n-ную строку, после этого ты сразу закрываешь файл или переписываешь все остальное? Ты же rewrite-ом переписываешь файл, т.е. все строки повторять надо
|
|||
|
||||
| VingradFan |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 477 Регистрация: 30.1.2006 Где: Москва Репутация: нет Всего: 3 |
неееееееее.... я пишу writeln-ом строки из массива: строка за строкой -------------------- Когда-нибудь я стану богатым и куплю себе столько Ролтонов, сколько захочу... |
|||
|
||||
| valedol |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 13.10.2006 Где: Санкт-Петербург Репутация: нет Всего: нет |
VingradFan, ну это понятно.
файл ты открываешь для записи только одной из 2х команд: rewrite(file); - перезаписывает весь файл append(file); - добавляет в конец т.е. надо либо считывать в массив все строки, изменять какую надо и записывать обратно опять-таки все строки, или же использовать времменный файл: переписывать сразу туда исходный файл строка за строкой, изменив нужную, потом есть 2 пути - удалить исходный и переименовать времменный (процедуры модуля dos, щас не помню какие конкретно) - переписать все обратно в исходный если у файла есть хоть какая-то структура (одинаковый р-р строки) то используй типизированый файл, будет удобней опиши ситуацию конкретнее, что за файл? |
|||
|
||||
| VingradFan |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 477 Регистрация: 30.1.2006 Где: Москва Репутация: нет Всего: 3 |
файл текстовый, в каждой его строке хранится различная информация об элементе БД.
а разве, когда мы записываем n-2 строк файла с помошью ВрайтЛайн последние 2 стираются? тогда дествитно
-------------------- Когда-нибудь я стану богатым и куплю себе столько Ролтонов, сколько захочу... |
|||
|
||||
| valedol |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 13.10.2006 Где: Санкт-Петербург Репутация: нет Всего: нет |
VingradFan, субд пишешь? А файл с описанием записи, использовать не пробовал?
|
|||
|
||||
| VingradFan |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 477 Регистрация: 30.1.2006 Где: Москва Репутация: нет Всего: 3 |
ага, время на работе коротаю... а зачем усложнять программу еще и записями? какие будут преимущества? кстати как ты предлагаеш организовать все? Для каждой записи 1 файл, для каждого поля 1 строка? какой тип файла взять? текстовый\типизированный? Это сообщение отредактировал(а) VingradFan - 30.5.2007, 01:36 -------------------- Когда-нибудь я стану богатым и куплю себе столько Ролтонов, сколько захочу... |
|||
|
||||
| KuZyagroup |
|
|||
![]() magento solution ![]() ![]() Профиль Группа: Участник Сообщений: 283 Регистрация: 16.4.2007 Где: Kiev Репутация: нет Всего: 4 |
Оба в поиск
Подсказка можно Подсказка BlockRead BlockWrite Seek SeekOf Сдвиг - вообщем что-то в этом духе. П.С. Я не злой и не жадный П.П.С. Можно попытатся через ж. открыть файл и на чтение и на запись переменными InPut OutPut и пользоваться GotoXY(); П.П.П.С. Злая штука склероз |
|||
|
||||
| Farmazon |
|
|||
![]() Разработчик ![]() ![]() Профиль Группа: Участник Сообщений: 265 Регистрация: 7.7.2006 Репутация: нет Всего: 5 |
если длина исправленной строки будет = длине исходной строки, то можно и BlockRead BlockWrite Seek SeekOf заюзать, а если нет - придётся переписывать файл...
-------------------- Таково моё общее мнение. |
|||
|
||||
| valedol |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 13.10.2006 Где: Санкт-Петербург Репутация: нет Всего: нет |
отвечаю по порядку: описание записи, сиречь структуры БД, позволит тебе подзаюзать типизированый файл. А это уже куча преимуществ. Самое основное, что ты сможешь с помощью seek, read,write изменять нужный тебе параметр, не переписывая всего файла. Я предлагаю создать один текстовый файл в котором будет количество полей, записи о имени/типе поля, открывать его впервую очередь. На его основе посчитать размер записи и открыть файл с таблицей как не типизированый с рассчитаным размером (там работают команды BlockRead, BlockWrite). Считываешь блок и раздираешь его на части в цикле От излишней дури делал такую штуку с редактируемой структурой (т.е. ты при создании таблицы мог выбирать из 2х типов полей: строка или число), но дальше создания таблицы/просмотра записей дело не пошло, если найду могу показать... |
|||
|
||||
![]()
|
| Правила форума "Delphi" | |
|
|
Запрещается! 1. Обсуждать и делится взломанными компонентами или программным обеспечением 2. Публиковать ссылки на варез 3. Оффтопить
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |