Что нового

чтение переменной из ini файла

cobra2029

Новичок
Сообщения
54
Репутация
0
Ув. знатоки. При использовании функции IniRead возникла такая ситуация:


из того что я нашел на форуме, стало понятно как получить в переменную целую строчку:
=======================из скрипта=================
Код:
$Param_podkl_serv = IniRead("1st.ini", "main", "Param_podkl_serv", $Param_podkl_serv)
================================================

================из ini============================
[main]
Param_podkl_serv=Server=10.64.253.116;Port=5432;User Id=aret;Database=cterrm;
================================================

возможно ли 1 строки получить две переменных?
==============вариант ini==========================
Param_podkl_serv=Server=10.64.253.116;Port=5432;User Id=aret;Database=cterrm;d:\test\avk\АЗt\5-14.txt
================================================

поиск юзал, ответа на свой вопрос не нашел.
Заранее спасибо за помощь.
 
Автор
C

cobra2029

Новичок
Сообщения
54
Репутация
0
переменная 1= Server=192.168.100.116;Port=5432;User Id=arpet;Database=cterrm;
переменная 2= d:\test\avk\АЗt\5-14.txt

предполагаемый вид строки в ini:

Server=192.168.100.116;Port=5432;User Id=arpet;Database=cterrm;d:\test\avk\АЗt\5-14.txt
 

Zaramot

I ♥ AutoIt
Сообщения
1,160
Репутация
660
Если строка такая:
Код:
Param_podkl_serv=Server=10.64.253.116;Port=5432;User Id=aret;Database=cterrm;d:\test\avk\АЗt\5-14.txt
Код:
$string = 'Param_podkl_serv=Server=10.64.253.116;Port=5432;User Id=aret;Database=cterrm;d:\test\avk\АЗt\5-14.txt'
$split = StringRegExp($string, '(?s)=(.*);(.*)', 3)
MsgBox(0, '', 'переменная 1: ' & $split[0] & @CRLF &'переменная 2: ' & $split[1])


Если строка такая:
Код:
Server=192.168.100.116;Port=5432;User Id=arpet;Database=cterrm;d:\test\avk\АЗt\5-14.txt
Код:
$string = 'Server=10.64.253.116;Port=5432;User Id=aret;Database=cterrm;d:\test\avk\АЗt\5-14.txt'
$split = StringRegExp($string, '(.*);(.*)', 3)
MsgBox(0, '', 'переменная 1: ' & $split[0] & @CRLF &'переменная 2: ' & $split[1])
 
Автор
C

cobra2029

Новичок
Сообщения
54
Репутация
0
Если строка такая:
Код: [Выделить]
Param_podkl_serv=Server=10.64.253.116;Port=5432;User Id=aret;Database=cterrm;d:\test\avk\АЗt\5-14.txt
Код: AutoIt [Выделить]
$string = 'Param_podkl_serv=Server=10.64.253.116;Port=5432;User Id=aret;Database=cterrm;d:\test\avk\АЗt\5-14.txt'
$split = StringRegExp($string, '(?s)=(.*);(.*)', 3)
MsgBox(0, '', 'переменная 1: ' & $split[0] & @CRLF &'переменная 2: ' & $split[1])

Если строка такая:
Код: [Выделить]
Server=192.168.100.116;Port=5432;User Id=arpet;Database=cterrm;d:\test\avk\АЗt\5-14.txt
Код: AutoIt [Выделить]
$string = 'Server=10.64.253.116;Port=5432;User Id=aret;Database=cterrm;d:\test\avk\АЗt\5-14.txt'
$split = StringRegExp($string, '(.*);(.*)', 3)
MsgBox(0, '', 'переменная 1: ' & $split[0] & @CRLF &'переменная 2: ' & $split[1])

а если в строку добавится еще 1 переменная (3-я по счёту):
пример строки:
Server=192.168.100.116;Port=5432;User Id=arpet;Database=cterrm;d:\test\avk\АЗt\5-14.txt http://10.4.100.1:8082/bpm

переменная 1:Server=192.168.100.116;Port=5432;User Id=arpet;Database=cterrm;
переменная 2:d:\test\avk\АЗt\5-14.txt
переменная 3:http://10.4.100.1:8082/bpm

и еще вопрос: как их удобнее разделять в ini файле (каким знаком)?

и последнее: не могли бы вы подсказать где ошибка:
Код:
#include <file.au3>

If WinExists(@ScriptName) Then Exit
AutoItWinSetTitle(@ScriptName)
HotKeySet("{ESC}", "Terminate")

$sFilePath = @ScriptDir & "\config.ini" 
$sLines = _FileCountLines($sFilePath) 


For $i = 1 To $sLines ; от 1 до количества строк в файле выполнять:
    $command = FileReadLine($sFilePath, $i)
	$string = IniRead("config.ini", "main", " ", $string)
	$split = StringRegExp($string, '(.*);(.*)', 3)
	MsgBox(0, '', 'переменная 1: ' & $split[0] & @CRLF &'переменная 2: ' & $split[1])
    ;Send($split[0]&"{TAB}")
    ;Sleep(20)
    ;Send("{ENTER}")
    ;Sleep(20)
    ;Send("{ENTER 2}") 
    ;Sleep(50)
	; Send($split[1]&"{TAB}")
Next

Func Terminate()
Exit 0
EndFunc


config.ini
Код:
[main]
Server=192.168.100.116;Port=5432;User Id=arpet;Database=cterrm;d:\test\avk\АЗt\5-14.txt
Server=192.168.100.114;Port=5432;User Id=arpet;Database=cterrm;d:\test\avk\АЗt\5-14.txt
Server=192.168.100.112;Port=5432;User Id=arpet;Database=cterrm;d:\test\avk\АЗt\7-28.txt 
Server=192.168.100.110;Port=5432;User Id=arpet;Database=cterrm;d:\test\avk\АЗt\5-14.txt 
Server=192.168.100.116;Port=5432;User Id=arpet;Database=cterrm;d:\test\avk\АЗt\5-14.txt 
Server=192.168.100.116;Port=5432;User Id=arpet;Database=cterrm;d:\test\avk\АЗt\545.txt 
Server=192.168.100.1;Port=5432;User Id=arpet;Database=cterrm;d:\test\avk\АЗt\5-27.txt 
Server=192.168.100.35;Port=5432;User Id=arpet;Database=cterrm;d:\test\avk\АЗt\14.txt
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
cobra2029
предложенный тобой файл не является ini, т.к. сформирован не по формату, а по сему к нему не могут быть применены INI... функции.
 

focus

Осваивающий
Сообщения
69
Репутация
20
Как вариант
Код:
$string = 'Server=10.64.253.116;Port=5432;User Id=aret;Database=cterrm;d:\test\avk\АЗt\5-14.txt'
$split = StringSplit($string, ';', 3)
MsgBox(0, '', 'переменная 1: ' & $split[0] &';' &$split[1] & ';' &$split[2] & ';' &$split[3] & @CRLF & 'переменная 2: ' &$split[4])
. И комбинируй в любом количестве.
 
Автор
C

cobra2029

Новичок
Сообщения
54
Репутация
0
спасибо решил свою задачу через FileReadLine
 
Верх