Что нового

Перевод переноса строки при записи в INI-файл.

ZaEzzz

Новичок
Сообщения
28
Репутация
2
Добрый день!
Столкнулся с проблемой переноса строки.

Есть ini файл с записанными данными:
Код:
[Описание]
descript=Строка 1\r\nСтрока 2

Из этого файла данные читаются в переменную и выводятся на форму в объект Label - всё отображается корректно.
Проблема заключается в том что в этой же форме имеется блок Edit и при вводе в него многострочных данных они записываются в ini-файл с прямым переносом строки, а требуется преобразовать его в текстовую форму "\r\n", иначе получается следующий результат:
Код:
[Описание]
descript=Строка 1
Строка 2

Может кто сталкивался с подобной проблемой?

Имя ini-файла test.ini
Код, для примера прилагается.

Код:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#NoTrayIcon

#Region ### GUI
$Form1 = GUICreate("Form1", 280, 257, 192, 164)
$Label1 = GUICtrlCreateLabel("Label1", 8, 8, 268, 89)
$Edit1 = GUICtrlCreateEdit("", 8, 104, 265, 105)
GUICtrlSetData(-1, "Edit1")
$Button1 = GUICtrlCreateButton("INI", 8, 216, 266, 38)
GUISetState(@SW_SHOW)
#EndRegion ### GUI

#Region ### Func
Func fn_read_ini()
	$write_data = GUICtrlRead ($Edit1)
	IniWrite('test.ini', 'Описание', 'descript', StringFormat($write_data))	;Именно в этом месте данные из переменной записываются в ini-файл с переносом строки
	$ini_data = IniRead('test.ini', 'Описание', 'descript', 'Error read ini-file')
	GUICtrlSetData ($Label1, StringFormat($ini_data))
EndFunc

#EndRegion ### Func

#Region ### Body
$ini_data = IniRead('test.ini', 'Описание', 'descript', 'Error read ini-file')
GUICtrlSetData ($Label1, StringFormat($ini_data))
While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $Button1
			fn_read_ini()
	EndSwitch
WEnd
#EndRegion ### Body
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Код:
;Запись
IniWrite('test.ini', 'Описание', 'descript', StringReplace($write_data, @CRLF, '\n'))
;Чтение
$ini_data = StringReplace(IniRead('test.ini', 'Описание', 'descript', 'Error read ini-file'), '\n', @CRLF)


Вот так:

Код:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#NoTrayIcon

#Region ### GUI

$Form1 = GUICreate("Form1", 280, 257, 192, 164)
$Label1 = GUICtrlCreateLabel("Label1", 8, 8, 268, 89)
$Edit1 = GUICtrlCreateEdit("", 8, 104, 265, 105)
GUICtrlSetData(-1, "Edit1")
$Button1 = GUICtrlCreateButton("INI", 8, 216, 266, 38)
GUISetState(@SW_SHOW)

#EndRegion ### GUI

#Region ### Func

Func fn_read_ini()
	$write_data = GUICtrlRead($Edit1)
	IniWrite('test.ini', 'Описание', 'descript', StringReplace($write_data, @CRLF, '\n')) ;Именно в этом месте данные из переменной записываются в ini-файл с переносом строки
	$ini_data = IniRead('test.ini', 'Описание', 'descript', 'Error read ini-file')
	GUICtrlSetData($Label1, StringFormat($ini_data))
EndFunc

#EndRegion ### Func

#Region ### Body

$ini_data = IniRead('test.ini', 'Описание', 'descript', 'Error read ini-file')
GUICtrlSetData($Label1, StringFormat($ini_data))

While 1
	$nMsg = GUIGetMsg()
	
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $Button1
			fn_read_ini()
	EndSwitch
WEnd

#EndRegion ### Body
 
  • Like
Реакции: Norm
Верх