Что нового

[Файловая система] Ошибка записи бинарного файла

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
функция для изменения содержимого бинарного файла
Код:
Func _rewrite()
	$bin = FileOpen('file.bin', 16)
	$read = FileRead($bin)
	FileClose($bin)
	$result1 = StringReplace($read, 110, StringLeft(@HOUR, 1))
	$result2 = StringReplace($result1, 112, StringRight(@HOUR, 1))
	$result3 = StringReplace($result2, 114, StringLeft(@MIN, 1))
	$result4 = StringReplace($result3, 116, StringRight(@MIN, 1))
	$result5 = StringReplace($result4, 118, StringLeft(@SEC, 1))
	$result6 = StringReplace($result5, 120, StringRight(@SEC, 1))
	$result7 = StringReplace($result6, 122, StringLeft(@MDAY, 1))
	$result8 = StringReplace($result7, 124, StringRight(@MDAY, 1))
	$result9 = StringReplace($result8, 126, StringLeft(@MON, 1))
	$result_over = StringReplace($result9, 128, StringRight(@MON, 1))
	$write = FileOpen('file.bin', 2 + 16)
	FileWrite($write, $result_over)
	FileClose($write)
EndFunc

в данном виде работает без ошибок. то есть если просмотреть перезаписанный файл через редактор программатора, то все изменения корректны.
если взять строку, к примеру
Код:
$result9 = StringReplace($result8, 126, StringLeft(@MON, 1))

и изменить на
Код:
$result9 = StringReplace($result8, 126, '.');вместо цифры использовать точку

то, содержимое файла полностью изменяется. хотя если для проверки поставить сообщение с выводом окончательного результата, то все вроде правильно выводит, но в файл записывает набор цифр..то есть как бы нарушается структура данных в файле(если можно так выразиться). в чем проблема?
 
Верх