Как дописать в произвольное место текстового файла

Ответить


Этот вопрос предназначен для предотвращения автоматической отправки форм спам-ботами.
Смайлики
:| :) :wink: :D :lol: :( :cry: 8) :o :oops: :? :x :P :evil: :twisted: :roll: :!: :?: :idea: :arrow: :mrgreen:
Ещё смайлики…

Markdown is OFF

BBCode ВКЛЮЧЁН
[img] ВКЛЮЧЁН
[url] ВКЛЮЧЁН
Смайлики ВКЛЮЧЕНЫ

Обзор темы
   

Развернуть Обзор темы: Как дописать в произвольное место текстового файла

Bibigool » 23 авг 2009 15:02, Вс

Где FileName1 - имя файла, в который необходимо добавить текст;
FileName2 - имя временного файла;
ReadFromFile - переменная для хранения текущей строки;
SearchWord - слово для поиска в файле, после которого будет вставлено новое слово;
NewVocWord - новое слово, которое необходимо вставить в файл.
Алгоритм такой:
1. Открываем оба файла (причем, если второй файл отсутствует - он создастся сам).
2. Считываем строку из первого файла.
3. Записываем ее во второй файл.
4. Если считанная строка совпадает со словом для поиска, вставляем во второй файл слово для вставки после слова для поиска (слово будет вставлено новой строкой).
Если есть необходимость вставлять слово текущей строкой - код не сложно изменить:

Код: Выделить всё

Line Input #F1, ReadFromFile 
If UCase(Trim(ReadFromFile)) = SearchWord Then
    Print #F2, ReadFromFile & NewVocWord
Else 
    Print #F2, ReadFromFile 
End If

Так же можно вставить счетчик для того, чтобы искались не все вхождения слова для поиска, а только заданное.

Как дописать в произвольное место текстового файла

UncleFather » 23 авг 2009 14:35, Вс

Проблема:
Имеется текстовый файл. Необходимо програмно дописать какую-либо информацию не в конец файла, как при использовании "Append", а в произвольное место файла.
Решение:
Текстовые файлы содержат строки переменной длины, снабженные маркерами конца строки. Для работы с текстовыми файлами следует использовать стандартные режимы Input, Append и Output.
Поскольку текстовые файлы, в отличие от файлов прямого доступа, нельзя открыть одновременно на чтение и на запись, для изменения текстового файла необходимо воспользоваться вспомогательным файлом. Во вспомогательный файл записываются необходимые результирующие данные, после чего исходный файл удаляется с диска, а имя вспомогательного файла заменяется на имя исходного. Далее, поскольку строки, содержащиеся в текстовом файле, могут иметь различную длину, для определения числа строк необходимо последовательно считать из файла все его строки. В отличие от строковых файлов прямого доступа, в VB5-6 для чтения данных из текстовых файлов вполне допустимо использовать переменные типа String, не фиксируя их размер.
Пример:

Код: Выделить всё

        
Dim F1, F2 As Integer
Dim FileName1, FileName2, ReadFromFile, SearchWord, NewVocWord As String
    NewVocWord = Inputbox ("Введите слово для добавления", "Добавление слова в файл")    
    SearchWord= Inputbox ("Введите слово для поиска", "Добавление слова в файл")
    F1 = FreeFile()
    Open FileName1 For Input Access Read Lock Write As #F1
    F2 = FreeFile()
    Open FileName2 For Output Access Write Lock Read Write As #F2
    Do Until EOF(F1)
        Line Input #F1, ReadFromFile
        Print #F2, ReadFromFile
        If UCase(Trim(ReadFromFile)) = SearchWord Then
            Print #F2, NewVocWord
        End If
    Loop
    Close #F1
    Close #F2
    Kill FileName1
    Name FileName2 As FileName1

Вернуться к началу