Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [VB6] изменение текстового файла


Автор: GAGARIN74 18.6.2008, 19:17
суть проблемы такова. Везде написано как открыть файл на запись ,на чтение.Я не могу допетрить как просто найти нужную строчку в тхт файле и поменять её. Везде очень подробно расписано как добавить строчку к имеющему файлу , как прочитать итд итп. А вот как найти (открыть файл на чтение) любую строчку содержащую допустим ВОЛГА и заменить её на ВЕРБУ(открыть файл на запись) не меняя при этом другие строчки я не нашел.В примерах указан метод добавление уже новой строчки в конце файла. А мне надо просто найти и заменить.
Помогите пожалуйста.

Автор: Akina 18.6.2008, 22:38
Строка - понятие отображения содержимого на экране или при печати, но никак не понятие самого содержимого. Содержимое - это поток равноправных байтов. Посему "изменение строки" требует переписывания части файла от первого изменяемого байта и до конца. Лишь в редких случаях, когда размер заменяющего и заменяемого фрагментов совпадают, возможна перезапись только изменяемого фрагмента.

Цитата(GAGARIN74 @  18.6.2008,  20:17 Найти цитируемый пост)
мне надо просто найти и заменить.

Прочти весь файл (FSO.ReadFile), найди и замени требуемый фрагмент (Match.Replace), после чего запиши весь файл новым содержимым (FSO.WriteFile).

Автор: GAGARIN74 19.6.2008, 11:49
А по проще ни как ? а то я с фуншеем ну ни как smile

Автор: Akina 19.6.2008, 12:00
Для домашних заданий, курсовых, существует "Центр Помощи".

Тема перенесена! 

Автор: JusTalionis 21.6.2008, 12:06
Цитата(GAGARIN74 @  19.6.2008,  11:49 Найти цитируемый пост)
А по проще ни как ?
 Перезаписать файл целиком заново - это и есть проще.

А если делать как ты хочешь - заменять в середине, то файл надо открывать в режиме с произвольным доступом. Тогда можно как читать из файла, так и записывать в произвольное его место. Но дело в том, что нет функций поиска и замены в файле прямо на диске, так что произвольный доступ в твоей задаче особых преимуществ не даст.

Самое простое будет - прочитать файл целиком в одну строковую переменную;
- применить к этой переменной функцию Replace, которая ищет и заменяет фрагмент;
- результат (ты имеешь в строке по-прежнему полный файл с замененным словом) записать снова на диск как файл целиком.

Автор: GAGARIN74 21.6.2008, 12:49
http://forum.sources.ru/index.php?showtopic=241005&st=0&#entry1991107

вот тут реально помоли. да и сам я разобрался!!!!!!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)