Что нового

[Данные, строки] Присвоить значение переменной

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
Код:
$Load = FileRead("Settings.txt")
        $Decrypt = _StringEncrypt(0, $Load, "Secret")
        $Settings = StringSplit($Decrypt, "†", 1)

нужно раскидать результат на известные переменные.
пробовал так
Код:
$1 = $Settings[1]

но это не сработало...есть мысль что возможно нужно через массив, но ничего толкового в голову не идет..
 

Zaramot

I ♥ AutoIt
Сообщения
1,160
Репутация
660
Узнай что содержится в переменной $Settings если это массив:
Код:
#Include <Array.au3>
$Load = FileRead("Settings.txt")
$Decrypt = _StringEncrypt(0, $Load, "Secret")
$Settings = StringSplit($Decrypt, "&#38;#38;#8224;", 1)
_ArrayDisplay($Settings)
 
Автор
joiner

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
Zaramot
я так уже делал. все нормально считывается в массив. все что шифровалось. корректное отображение. далее есть функция с переменными и этим переменным нужно присвоить значения, которые получаются при дешифрации
 
Автор
joiner

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
да, постоянно. имена переменных тоже не меняются. нужно просто подставить получаемые значения. писать в память а потом как оттуда правильно считать?
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Александр,
Попробуйте так:
Код:
Global $s1, $s2, $s3, $s4, $s5

Dim $aVar[6] = [5, 'Значение № 1', 'Значение № 2', 'Значение № 3', 'Значение № 4', 'Значение № 5']

For $i = 1 To $aVar[0]
	MsgBox(0, $i, '$s' & $i & ' = "' & Eval('s' & $i) & '"')
Next
For $i = 1 To $aVar[0]
	Assign('s' & $i, $aVar[$i])
Next
For $i = 1 To $aVar[0]
	MsgBox(0, $i, '$s' & $i & ' = "' & Eval('s' & $i) & '"')
Next
MsgBox(64, 'Info', $s1 & @LF & $s2 & @LF & $s3 & @LF & $s4 & @LF & $s5)

Если закомментировать первую строку (Global ...), то при запуске из SciTE, будет вылазить ошибка, но работает нормально, ИМХО, это баг. Если скомпилировать, то работает нормально.
 
Автор
joiner

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
все получилось. привожу часть кода, как наглядный пример реализации в частном случае.
Код:
#include <String.au3>
#include <array.au3>
Global $s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject, $s_Body, $s_AttachFiles, $s_CcAddress, $s_BccAddress, $s_Username, $s_Password, $IPPort, $ssl, $oMyRet[2], $oMyError = ObjEvent("AutoIt.Error", "MyErrFunc")
If FileExists("Settings.txt") Then
	$Load = FileRead("Settings.txt")
	$Decrypt = _StringEncrypt(0, $Load, "Secret")
	$Settings = StringSplit($Decrypt, "&#8224;", 1)
EndIf
Dim $aVar[9] = [8, $Settings[1], $Settings[3], $Settings[4], $Settings[5], $Settings[6], $Settings[7], $Settings[8], $Settings[9]]

For $i = 1 To $aVar[0]
	Assign('s' & $i, $aVar[$i])
Next
For $i = 1 To $aVar[0]
	 Eval('s' & $i)
Next
$s_SmtpServer = $aVar[1]
$s_FromName = "name"
$s_FromAddress = $aVar[2]
$s_Username = $aVar[3]
$s_Password = $aVar[4]
$IPPort = $aVar[5]
$s_ToAddress = $aVar[6]
$s_Subject = $aVar[7]
$s_Body = "text"
$s_AttachFiles = $aVar[8]

все это применяется в функции
Код:
_INetSmtpMailCom()
 
Верх