Что нового

Перенос значений в ini файл

goldoba

Новичок
Сообщения
19
Репутация
0
Доброго времени суток!
Подскажите уважаемые есть некий скрипт хочу некоторые параметры перенести в ini файл прочитал в справке по этому поводу в итоге ошибок нет но и скрипт не выполняется вот пример
Код:
$PatchIni = @ScriptDir&'config.ini'
Global $sDirPath = @ScriptDir&"\scr"; оригинальная строка полностью рабочая
;
Global $sDirPath = IniRead ($PatchIni, "FolderEndFiles", "PatchFolder", 1); сделал такую строку

строка не работает! если default указать
Код:
@ScriptDir&"\scr"

то снова работает! в справке сказано
default Значение по умолчанию (будет возвращено, если указанный параметр не найден)
в моем ini прописано так
Код:
[FolderEndFiles]
PatchFolder=@ScriptDir&"\scr"
получается что такого параметра скрипт не находит, подскажите как все сделать правильно?
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
goldoba,
У вас ошибка
Код:
$PatchIni = @ScriptDir & 'config.ini'
;~ должно быть
$PatchIni = @ScriptDir & '\config.ini'
Если Вы хотите в ини-файле использовать относительные пути, то можно сделать примерно так.
Код:
$sPatchIni = @ScriptDir & '\config.ini'

$sDirPath = Execute(IniRead($sPatchIni, 'FolderEndFiles', 'PatchFolder', '@ScriptDir & ''\Default'''));есть пара ключ-значение
ConsoleWrite($sDirPath & @LF)

$sDirPath = Execute(IniRead($sPatchIni, 'FolderEndFiles', 'Patch', '@ScriptDir & ''\Default'''));нет пары ключ-значение
ConsoleWrite($sDirPath & @LF)

;~ и запись в ини
IniWrite($sPatchIni, 'FolderEndFiles', 'Patch', '@ScriptDir & ''\New_scr''')
config.ini:
Код:
[FolderEndFiles]
PatchFolder=@ScriptDir & '\scr'
 
Автор
goldoba

goldoba

Новичок
Сообщения
19
Репутация
0
работает! спасибо буду писать дальше, создается папка @ScriptDir&' для чего? она мне не нужна
Уважаемые еще подскажите пожалуйста как мне вывести таймер в ini файл есть такой таймер
Код:
AdlibRegister("_main", 60000)
While 1
Sleep(1000)
WEnd

как изменять его значения в ini файле?
вот мои мысли скажите правельные они?
создам переменную ей присвою
Код:
$Timer = IniRead ($PatchIni, "Timer", "value", 1)

в цикле пропишу вместо цифрового значения переменную
Код:
AdlibRegister("_main", $Timer)
While 1
Sleep(1000)
WEnd

а в ini
Код:
[Timer]
Value=60000
работоспособен код?
 
Автор
goldoba

goldoba

Новичок
Сообщения
19
Репутация
0
Уважаемые! перенес некоторые настройки в ini файл протестировал все работает отлично! скомпилировал теперь не работает что пол подскажете?
вот код
Код:
#AutoIt3Wrapper_Run_AU3Check=n
;#include <Array.au3>; for _ArrayDisplay
;#NoTrayIcon
#include "sendmail.au3"
$PatchIni = @ScriptDir&'\config.ini'
Global $s7zrPath = @ScriptDir&"\7zr.exe"
Global $sDirPath = @ScriptDir&"\scr"
Global $sArchivePath = @ScriptDir&"\donos.zip"
Global $SmtpServer, $FromName, $FromAddress, $ToAddress, $Subject, $Body, $AttachFiles, $CcAddress, $BccAddress, $Importance, $Username, $Password, $IPPort, $ssl
;вынесено в config.ini
$Timer = IniRead($PatchIni, 'Timer', 'Value', 1)
$SmtpServer = IniRead($PatchIni, 'Email', 'SmtpServer', 1)
$FromName = IniRead($PatchIni, 'Discription', 'FromName', 1)
$FromAddress = IniRead($PatchIni, 'Email', 'FromAdress', 1)
$ToAddress = IniRead($PatchIni, 'Email', 'ToAdress', 1)
$Subject = IniRead($PatchIni, 'Discription', 'Subject', 1)
$Body = IniRead($PatchIni, 'Discription', 'Body', 1)
$AttachFiles = $sArchivePath
$Username = IniRead($PatchIni, 'Email', 'UserName', 1)
$Password = IniRead($PatchIni, 'Email', 'Password', 1)
$IPPort = 465
$ssl = 1
;end;
Func _main()
If FileExists($sArchivePath) Then FileDelete($sArchivePath); удаляем архив если он существует
If Not FileExists($sDirPath&"\") Then Return SetError(1, 0, 0)
Local $aSize = DirGetSize($sDirPath, 1)
If Not IsArray($aSize) Then Return SetError(2, 0, 0)
If $aSize[0] >= 10000 Or $aSize[1] >= 4 Then
RunWait($s7zrPath & ' a "' & $sArchivePath & '" i "' & $sDirPath & '"', '', @SW_HIDE)
_INetSmtpMailCom($SmtpServer, $FromName, $FromAddress, $ToAddress, $Subject, $Body, $AttachFiles, $CcAddress, $BccAddress, $Importance, $Username, $Password, $IPPort, $ssl)
If @error <> 0 Then
Else
FileDelete($sDirPath&"\*.*"); удаляем все файлы из папки
FileDelete($sArchivePath); удаляем архив
EndIf
EndIf
EndFunc

_main()
AdlibRegister("_main", $Timer)
While 1
Sleep(1000)
WEnd
 
Верх