Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

Как перезаписать строки в Текстовом файле???

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование
Предыдущая тема :: Следующая тема  
Автор Сообщение
Blayder



Зарегистрирован: 11.03.2006
Сообщения: 4

СообщениеДобавлено: Сб Мар 11 2006 00:58    Заголовок сообщения: Как перезаписать строки в Текстовом файле??? Ответить с цитатой

Вот столкнулся с задачкой...
Прога считывает данные из текстовой базы в StringGrid.
Потом пользователь чтото изменяет в данных и потом этуже таблицу надо записать назд в тот же текстовый документ, перезаписав старые данные....

вот пример файла:

[loottemplate 100]
loot=2140 0.223214
loot=9753 0.223214
loot=6268 0.223214
loot=1210 0.223214
loot=15933 0.223214
loot=9748 0.223214
loot=4569 0.669643
loot=818 0.223214
loot=6555 0.223214
loot=9758 0.223214
loot=1307 75.2232
loot=9750 0.223214
loot=2589 21.875
loot=118 0.223214
loot=6521 0.223214
loot=159 2.90179
loot=3013 0.446429
loot=1181 0.892857
loot=9745 0.223214
loot=9743 0.223214
loot=3643 0.223214
loot=117 4.6875
loot=3374 0.446429
loot=1498 0.223214
loot=1499 0.669643
loot=2778 0.446429
loot=1511 0.223214
loot=2777 0.669643
loot=1513 0.446429
loot=1515 0.446429
loot=1514 0.223214
loot=1505 0.223214
loot=1502 0.223214
loot=1503 0.223214
loot=1504 0.446429
loot=1509 0.223214
loot=1730 0.223214
loot=1731 0.223214
loot=1732 0.446429
loot=1734 0.223214
loot=1735 0.446429

[loottemplate 1001]
loot=2589 50
loot=2592 16.6667

[loottemplate 10016]
loot=13464 5.00

[loottemplate 10036]
loot=14047 24.8276
loot=13818 0.689655
loot=8085 0.689655

[loottemplate 10037]
loot=4338 0.658328
loot=4306 21.5273
loot=2592 4.73996
loot=3781 0.197498
loot=3808 0.0658328
loot=3809 0.131666
loot=3813 0.131666
loot=3814 0.0658328
loot=3811 0.197498
loot=3803 0.131666
loot=3800 0.263331
loot=3804 0.0658328
loot=3806 0.131666
loot=3792 0.197498
loot=3794 0.0658328
loot=3798 0.197498
loot=3785 0.197498
loot=3782 0.0658328
loot=3780 0.131666
loot=3784 0.197498
loot=3816 0.0658328
loot=3786 0.197498
loot=3787 0.131666
loot=3778 0.131666

Пробовал использовать Writeln, но почемуто эррор вылетает...
Вот код на запись:

procedure TfrmLSET.Button1Click(Sender: TObject);
var
j: integer;
begin
AssignFile(FL, 'loottemplates.scp');
reset(FL);
repeat
readln(FL,ltch);
until (ltch = '[loottemplate '+lootTID+']') or eof(FL);
For j:=1 to i do
begin
Writeln(FL, 'loot='+stgLoot.Cells[1,j]+' '+stgLoot.Cells[2,j]);
end;
closefile(FL);
end;

Вылетает эррор:

Project Projest1.exe raised exception class ElnOutError with message 'I/O error 105'...
и выделяется строка WriteLn.
Мож я просто чет не так делаю???
Delphi7 используем Smile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
GoodmanSemen



Зарегистрирован: 10.06.2005
Сообщения: 9

СообщениеДобавлено: Сб Мар 11 2006 20:54    Заголовок сообщения: Ответить с цитатой

Функция reset открывает файл только для чтения!!! А ты пытаешься туда что-то записать, вот система тебе и выдает ошибку!
Придется тебе создать временный файл (rewrite), загнать в него все до нужной строки, потом загонять туда новые данные, а потом снова все что осталось из старого. Далее старый закрываешь и удаляешь, а временный переименовываешь как старый и опять-таки закрываешь! Как тебе такая идея? Конечно можно попытаться открыть файл для дополнения и работать с файловым указателем по строкам, но тут тебе придется сначала выяснять сколько строк сначала, да еще не запариться в установке позиции указателя для записи новых значений, да и еще всякая лабуда может произойти! Я думаю, что это оптимальный вариант!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
GoodmanSemen



Зарегистрирован: 10.06.2005
Сообщения: 9

СообщениеДобавлено: Сб Мар 11 2006 20:58    Заголовок сообщения: Как перезаписать строки в Текстовом файле??? Ответить с цитатой

Функция reset открывает файл только для чтения!!! А ты пытаешься туда что-то записать, вот система тебе и выдает ошибку!
Придется тебе создать временный файл (rewrite), загнать в него все до нужной строки, потом загонять туда новые данные, а потом снова все что осталось из старого. Далее старый закрываешь и удаляешь, а временный переименовываешь как старый и опять-таки закрываешь! Как тебе такая идея? Конечно можно попытаться открыть файл для дополнения и работать с файловым указателем по строкам, но тут тебе придется сначала выяснять сколько строк сначала, да еще не запариться в установке позиции указателя для записи новых значений, да и еще всякая лабуда может произойти! Я думаю, что это оптимальный вариант!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Blayder



Зарегистрирован: 11.03.2006
Сообщения: 4

СообщениеДобавлено: Сб Мар 11 2006 22:28    Заголовок сообщения: Ответить с цитатой

Если так, то прога будет жутко долго работать...
Как никак база весьма большая - 12 мегов текста...
А нельзя ли как-то поменять режим файла???
Чтоб можно было записать туда данные - я вроде где-то читал, что есть толи FileMode толи еще как-то которым меняют режим файла...
Может кто-то что-то знает насчет этого?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Делф1Ст



Зарегистрирован: 28.02.2006
Сообщения: 24

СообщениеДобавлено: Пн Мар 13 2006 11:50    Заголовок сообщения: Ответить с цитатой

Пробуй через BDE, только используй базу не Paradox, а текст ANSI
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Blayder



Зарегистрирован: 11.03.2006
Сообщения: 4

СообщениеДобавлено: Пн Мар 13 2006 21:14    Заголовок сообщения: Ответить с цитатой

Я по другому сделал...
Загнал содержимое базы в массив Smile
Загружается прога дольше, зато потом работает гораздо быстрее Smile
И проблем с записью меньше Very Happy
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...