Что нового

[Данные, строки] как перезаписать тектовый файл быстро (не открывая дважды)

urrya

Новичок
Сообщения
159
Репутация
1
Всем доброго времени суток гос-да и дамы.
есть кусочек кода для перезаписи текстового файла:
Код:
Local $FileOpen = FileOpen(@ScriptDir & '\text.txt', 0)
If $FileOpen = -1 Then
MsgBox(0, "Error 1", '!!!')
	Return
EndIf
Local $FileRead = FileRead($FileOpen)
FileClose($FileOpen)

$FileRead = StringReplace($FileRead, '123abc', '000000', 1, 2)
If @error <> 0 Then
MsgBox(0, "Error", 'НЕ заменил строку!')
	Return
EndIf

$FileOpen = FileOpen(@ScriptDir & '\text.txt', 130)
If $FileOpen = -1 Then
MsgBox(0, "Error 2", '!!!')
	Return
EndIf

Local $FileWrite = FileWrite($FileOpen, $FileRead)
If $FileWrite = 0 Then
MsgBox(0, "Error", 'НЕ записал в файл!')
	Return
EndIf
FileClose($FileOpen)


можно ли каким то способом ускорить этот процесс?
:blink:
 

СН3СН2ОН

Знающий
Сообщения
78
Репутация
12
Код:
Local $FileOpen = FileOpen(@ScriptDir & '\text.txt', 0)
Local $FileRead = FileRead($FileOpen)
FileClose($FileOpen)
$FileRead = StringReplace($FileRead, '123abc', '000000', 1, 2)
; это если чтото заменили
if @extended > 0 then
	$FileOpen = FileOpen(@ScriptDir & '\text.txt', 130)
	Local $FileWrite = FileWrite($FileOpen, $FileRead)
	FileClose($FileOpen)
endif

Просто сократил код в блокноте, не проверял.
Операции с файлами это всегда медленно, не ускоришь.
 
Автор
urrya

urrya

Новичок
Сообщения
159
Репутация
1
Спасибо за участие. :smile:
Я тоже уже смерился что ускорить не возможно!
:'(
 
A

Alofa

Гость
Что вы подразумеваете под
urrya сказал(а):
... ускорить этот процесс?


Добавлено:
Сообщение автоматически объединено:

Может это?
Код:
Local $FileWrite, $FileRead = FileRead(@ScriptDir & '\text.txt')
$FileRead = ($FileRead) ? StringReplace($FileRead, '123abc', '000000', 1, 2) : ''
If $FileRead Then $FileWrite = FileWrite(@ScriptDir & '\text.txt', $FileRead)
If Not $FileWrite Then MsgBox(0, "Error", 'НЕ записал в файл!')



Добавлено:
Сообщение автоматически объединено:

А можно еще и такой "изврат" устроить:
Код:
$sFile = @ScriptDir & '\text.txt'
If Not FileWrite($File, ((FileRead($File, 16)) ? StringReplace(FileRead($File), '123abc', '000000', 1, 2) : '')) Then MsgBox(16, '', 'НЕ записал!')
 
Верх