Спасибо Winand'у за консультацию. По причине моей некомпетентности в программировании
сочинил модуль ReWriteRazdF (ниже), выполняющий функцию замены фрагмента
в закрытом файле с использованием Temp-файла.
Аргументы
'- полное имя исходного файла;
'- полное имя вспомогательного файла;
'- начальный разделитель;
'- конечный разделитель;
'- номер фрагмента;
'- строка - новый фрагмент
Разделители в новом файле остаются.
Если Nach$= ””, то начинает с начала файла.
Если не находит Kon$, то удаляет фрагмент до конца файла и заменяет его новым.
Использует модули:
FindStrOpenF(Nom, Nach$, nBlok) – вычисляет число сдвигов позиций до начала разделителя
(если не находит, то -1). Переводит текущую позицию на следующую
после разделителя. Читает файл блоками длины nBlok.
DelF – уничтожитель файла.
Проверил в разных случаях - работает.
Function ReWriteRazdF(IdFile$, DopFile$, Nach$, Kon$, nomRazd, Sstr$)
lnNach = Len(Nach$)
lnKon = Len(Kon$)
m1 = 1
iind = False
nBlok = 1 'длина считываемых блоков
Nom = FreeFile
Open IdFile$ For Binary As #Nom
i = 0
nBlok = 1
Do While Not EOF(1) And i < nomRazd
n1 = FindStrOpenF(Nom, Nach$, nBlok)
i = i + 1
If n1 > 0.5 Then
m1 = m1 + n1 + lnNach
Seek #Nom, m1
If i >= nomRazd Then iind = True
End If
Loop
If iind Then
n2 = FindStrOpenF(Nom, Kon$, nBlok)
Seek #Nom, 1
Nom1 = FreeFile
Open DopFile$ For Binary As #Nom1
For i = 1 To m1 - 1
z$ = Input(1, #Nom)
Put #Nom1, , z$
Next
Put #Nom1, , Sstr$
If n2 >= 0 Then
m2 = m1 + n2
Seek #Nom, m2
Do While Not EOF(Nom)
z$ = Input(1, #Nom)
Put #Nom1, , z$
Loop
End If
Close #Nom
Close #Nom1
DelF (IdFile$)
Name DopFile$ As IdFile$
s = 1
Else
Close #Nom
s = 0
End If
ReWriteRazdF = s
Вычитать нужный фрагмент и сохранить под темже именем не судьба?
Извиняюсь если я неправильно понял, но помоему задачка для первого урока программирования.
Спасибо, Winand. Этого мне надолго хватит для развития и совершенствования в этом
направлении.
Без знания техники программирования для решения отдельных возникающих задач приходится копать лопатой вместо использования этой замечательной техники.