Что нового

[Баг] IniRenameSection обрезает содержимое секции

burav

Новичок
Сообщения
2
Репутация
0
запускаем скрипт

Код:
GUICreate("Test", 150, 100)
$create = GUICtrlCreateButton("create", 25, 20, 100)
$rename = GUICtrlCreateButton("rename", 25, 60, 100)
GUISetState()

Do
$msg = GUIGetMsg()

	Select
		Case $msg = $create
			For $line = 1 To 1000
				IniWrite(@ScriptDir & "\Test.ini", "Section", "Кеу" & $line, "Value0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000")
			Next

		Case $msg = $rename
			$result = IniRenameSection("Test.ini", "Section", "NewSection")
			MsgBox(0, "", $result)
	EndSelect
Until $msg = -3


нажатием на кнопку "create" создаем .ini-файл, после переименования секции кнопкой "rename" файл потеряет 3/4 своего содержания

AutoIT v3.3.6.1 и 3.3.7.14b


я так понимаю, происходит это из-за "Only the first 32767 chars are taken in account in an section due to Win9x compatibility"(из описания функции IniReadSection). Можно ли обойти это ограничение?
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Как я уже убедился, по мнению разработчиков, всё что связано с Ini* функциями это не бага, это ограничения системного API.

burav [?]
Можно ли обойти это ограничение?
Да, вот тут я показал как (это ещё и решение для проблемы с переименованием пустой секций).
 
Автор
B

burav

Новичок
Сообщения
2
Репутация
0
CreatoR, спасибо за ответ

Как я уже убедился, по мнению разработчиков, всё что связано с Ini* функциями это не бага, это ограничения системного API.
похоже, что так

Да, вот тут я показал как (это ещё и решение для проблемы с переименованием пустой секций).
да, я примерно так и сделал
единственное, ваша функция всегда возвращает .ini-файл в ANSI, независимо от кодировки исходного файла
желательно это учитывать

Код:
$iEncoding = FileGetEncoding($sIni_File)
Local $hIni_Open = FileOpen($sIni_File, $iEncoding + 2)


:IL_AutoIt_1:
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
burav [?]
единственное, ваша функция всегда возвращает .ini-файл в ANSI, независимо от кодировки исходного файла
желательно это учитывать
Когда я писал функцию, по моему ещё не было FileGetEncoding ;)
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
AZJIO [?]
Это нормально что функции INI... не работают с UTF8?
Пол мнению разработчиков - да.

Я давно уже использую собственные Ini* функции для задач с UTF-8.


P.S.
К данной теме это правда не имеет отношения.
 
Верх