Задача: убрать BOM у файла в кодировке UTF-16 LE.
По подсказке читаю в бинарном режиме начиная с третьего символа, сначала делал копию исходного файла
но потом было решено объединить
И получаю ошибку Error allocating memory, проверено на версиях 3.3.8.1 и 3.3.12.0. Не понимаю, почему? Ведь читается тот же файл.
Размер тестового файла - 0 (ноль в свойствах файла ) байт (тесктовый файл, две строки: первая с текстом, вторая пустая).
С флагами 1+16 работает, но в конце файла добавляется пустая строка.
З.Ы. Теоретически пустая строка ничем не грозит (к тому же одна уже есть), в крайнем случае можно попытаться заменить в конце файла "0A 00 0A 00" на "0A 00" (но если только не дергая весь файл, т.к . на файле размером 3,61 Мб времени уйдет уже не менее 25 мс).
По подсказке читаю в бинарном режиме начиная с третьего символа, сначала делал копию исходного файла
Код:
$hFile = FileOpen($CmdLine[1], 16)
If $hFile = -1 Then
MsgBox(4096, 'Ошибка', 'Невозможно открыть файл')
Exit
EndIf
FileSetPos($hFile, 2, 0)
$bText = FileRead($hFile)
FileClose($hFile)
$hFileWithoutBOM = FileOpen(@TempDir & '\' & $s_TempName & '.txt', 2+16)
If $hFile = -1 Then
MsgBox(4096, 'Ошибка', 'Не удалось создать новый (без BOM) файл')
Exit
EndIf
FileWrite($hFileWithoutBOM, $bText)
FileClose($hFileWithoutBOM)
Код:
$hFile = FileOpen($CmdLine[1], 2+16)
If $hFile = -1 Then
MsgBox(4096, 'Ошибка', 'Невозможно открыть файл')
Exit
EndIf
FileSetPos($hFile, 2, 0)
$bText = FileRead($hFile)
FileSetPos($hFile, 0, 0)
FileWrite($hFile, $bText)
FileClose($hFile)
Размер тестового файла - 0 (ноль в свойствах файла ) байт (тесктовый файл, две строки: первая с текстом, вторая пустая).
С флагами 1+16 работает, но в конце файла добавляется пустая строка.
З.Ы. Теоретически пустая строка ничем не грозит (к тому же одна уже есть), в крайнем случае можно попытаться заменить в конце файла "0A 00 0A 00" на "0A 00" (но если только не дергая весь файл, т.к . на файле размером 3,61 Мб времени уйдет уже не менее 25 мс).