- Сообщения
- 13,988
- Решения
- 2
- Реакции
- 5,698
Привет.
Где то истина рядом, но у меня некоторый затык.
Как ни крути - какие то строки глотаются, а пишется только одна.
Функции для записи в указанную строку не нашел, поэтому следовал следующей логике:
1) Читаю файл построчно, каждую строку помещаю в переменную
2) Меняю одну из переменных на нужное мне значение
3) Затем в этот же файл записываю эти переменные по очереди.
Получается если какая то строка изменилась - значит перезапишется только эта строка, а остальные останутся без изменений.
Может видно где я ошибся?
Можно ли вообще вести запись в нужную строки/строки по желанию напрямую?
Где то истина рядом, но у меня некоторый затык.
Как ни крути - какие то строки глотаются, а пишется только одна.
Функции для записи в указанную строку не нашел, поэтому следовал следующей логике:
1) Читаю файл построчно, каждую строку помещаю в переменную
2) Меняю одну из переменных на нужное мне значение
3) Затем в этот же файл записываю эти переменные по очереди.
Получается если какая то строка изменилась - значит перезапишется только эта строка, а остальные останутся без изменений.
VB.NET / VBA:
Private Sub Command1_Click()
Dim strSearch(5) As String, tmp(5) As String 'На данный момент в файле 5 строк, соответственно создаю массив из 5 переменных
MyFile = FreeFile
k = 0 ' Заранее неизвестно количество строк, считаю через такую конструкцию, счет ведется с нуля в переменную К
Open "C:\Logg\1.txt" For Input As #MyFile
Input #MyFile, tmp (5)
Do Until EOF(MyFile)
k = k + 1 ' Прибавляем по 1 строке после каждого прохода цикла до конца файла
Input #MyFile, tmp(5)
Loop
Close #MyFile
Open "C:\Logg\1.txt" For Input As MyFile
For i = 0 To k
strSearch(i) = i ' Вообще количество переменных в массиве должно равняться количеству строк, по факту так и есть
' Каждый проход цикла задает элементу массива соответствующей строки
Line Input #MyFile, tmp(5)
strSearch(I) = tmp(i) ' При проходе цикла должна соотвествующему номеру строки назначиться ее значение такому же номеру элементу массива
Next i
Close #MyFile
Open "C:\Logg\1.txt" For Output As #MyFile ' Открываем файл
' Пишем обратно строки в порядке от 0 до конца
' И если нужно изменить какую то строку - просто меняем значение переменной
Print #MyFile, strSearch(0)
Print #MyFile, strSearch(1)
Print #MyFile, strSearch(2)
Close #MyFile ' Закрываем файл
End Sub
Может видно где я ошибся?
Можно ли вообще вести запись в нужную строки/строки по желанию напрямую?
Последнее редактирование: