Удаление, замена строк - VB
Формулировка задачи:
мне нужно удалить строку если длина строки < 2 и есть символ
нашел в инете код (см ниже), работает, но очень долго ~6мин на 2Мб текстовом файле.
вопрос - можно ли както ускорить выполнение, если я точно знаю что символ находится в предпоследней строке. в последней vbCrLf.
как быстро перейти на предпоследнюю строку проверить и если удовл условию удалить строку.
Dim fso, a, f, retstring, retstream
Const ForReading = 1, ForWriting = 2
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.GetFile("d:\config.sys")
Set a = f.OpenAsTextStream(ForReading, False)
Do While a.AtEndOfStream <> True
retstring = a.ReadLine
If retstring Like "files*" Then
retstring = "fileshigh=200"
End If
retstream = retstream & retstring & vbCrLf
Loop
a.Close
Set a = f.OpenAsTextStream(ForWriting, False)
a.Write retstream
a.Close
нашел в инете код (см ниже), работает, но очень долго ~6мин на 2Мб текстовом файле.
вопрос - можно ли както ускорить выполнение, если я точно знаю что символ находится в предпоследней строке. в последней vbCrLf.
как быстро перейти на предпоследнюю строку проверить и если удовл условию удалить строку.
Dim fso, a, f, retstring, retstream
Const ForReading = 1, ForWriting = 2
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.GetFile("d:\config.sys")
Set a = f.OpenAsTextStream(ForReading, False)
Do While a.AtEndOfStream <> True
retstring = a.ReadLine
If retstring Like "files*" Then
retstring = "fileshigh=200"
End If
retstream = retstream & retstring & vbCrLf
Loop
a.Close
Set a = f.OpenAsTextStream(ForWriting, False)
a.Write retstream
a.Close
Решение задачи: «Удаление, замена строк»
textual
Листинг программы
<font color="blue">Do</font> <font color="blue">While</font> a.AtEndOfStream <> True retstring = a.ReadLine <font color="blue">If</font> retstring Like <font color="teal">"files*"</font> <font color="blue">Then</font> retstring = <font color="teal">"fileshigh=200"</font> <font color="blue">End</font> <font color="blue">If</font> <font color="blue">If</font> Len(retstring) = <font color="darkblue"><b>1</b></font> <font color="blue">And</font> Len(retstream) >= (f.Size - <font color="darkblue"><b>3</b></font>) <font color="blue">Then</font> <font color="blue">If</font> Asc(retstring) < <font color="darkblue"><b>32</b></font> <font color="blue">Then</font> kluch = True <font color="blue">End</font> <font color="blue">If</font> <font color="blue">End</font> <font color="blue">If</font> <font color="blue">If</font> kluch = False <font color="blue">Then</font> retstream = retstream & retstring & vbCrLf <font color="blue">End</font> <font color="blue">If</font> <font color="blue">Loop</font>
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д