Что нового

[Данные, строки] Добавить к имени переменной порядковый номер $text + $i

kristow13

Новичок
Сообщения
76
Репутация
0
Добрый день всем!
У меня есть цикл по перебору переменной $i.
И есть переменные с названиями $Text1, $Text2, $Text3,...... $Text19
Код:
for $i=1 to 19 step 1
   ConsoleWrite("Text"&$i&" = "&$Text&$i & @LF)
Next

$Text&$i я понимаю что так не правильно, просто показал мысль. А сделать подставление порядкового номера к имени переменной не пойму...
$Text+$i тоже не работает. :(

Или можно как-то сделать слияние названия в виде текста, а потом сделать новый текст в название переменной? Или это совсем лес? :scratch:
 

ivsatel

Продвинутый
Сообщения
319
Репутация
84
kristow13
Код:
$sText1 = '1'
$sText2 = '2'
$sText3 = '3'
$sText4 = '4'
$sText5 = '5'

For $i = 1 To 5
	MsgBox(16, 'Значение переменной', Eval('sText'&$i))
Next
 
Автор
kristow13

kristow13

Новичок
Сообщения
76
Репутация
0
ivsatel Спасибо за ответ.
Но не то...
Необходимо подставлять $i в название переменной, а не в содержимое переменной...
т.е.
Код:
$Text1 = 12345
$Text2 = "Работа"
for $i=1 to 2 
   ConsoleWrite("Text"&$i&" = "&$Text&$i & @LF)
Next


Другими словами вот так должно получится при подставлении $i:
Код:
$i = 1
ConsoleWrite("Text 1 = "&$Text1& @LF)
$i = 2
ConsoleWrite("Text 2 = "&$Text2& @LF)
$i = 3
ConsoleWrite("Text 3 = "&$Text3& @LF)
 

ivsatel

Продвинутый
Сообщения
319
Репутация
84
kristow13
Код:
$Text1 = 12345
$Text2 = "Работа"
for $i=1 to 2
   ConsoleWrite("Содержимое переменной $Text"&$i&" = "&Eval('Text'&$i) & @LF)
Next
 
Автор
kristow13

kristow13

Новичок
Сообщения
76
Репутация
0
Увидел, спасибо! Уже попробовал, все отлично работает ;D
 

firex

AutoIT Гуру
Сообщения
943
Репутация
206
kristow13
Грамотнее использовать массивы:

Код:
Local $aText[6] = [ 5, '1', '2', '3', '4', '5' ]

For $Idx = 1 To $aText[0]
   ConsoleWrite( "Содержимое $aText[" & $Idx & "]=" & $aText[$Idx] & @LF )
Next
 

AZJIO

Меценат
Меценат
Сообщения
2,762
Репутация
1,152
firex [?]
Грамотнее использовать массивы:
Подтверждаю.

kristow13
Сразу учи массивы, чтобы потом не пришлось целиком проекты переделывать. Смысл тот же, а простота и лёгкость в обработке в 100 лучше.
 

firex

AutoIT Гуру
Сообщения
943
Репутация
206
ivsatel
Я бы так не сказал:

Код:
$hTimer = TimerInit()
For $Idx = 1 To 499999 Step 1
	Assign( "Example" & $Idx, $Idx, 1 )
Next
ConsoleWrite( "Assign(vars)=" & TimerDiff( $hTimer ) & @LF )

$hTimer = TimerInit()
Local $aExample[ 500000 ]
For $Idx = 1 To 499999 Step 1
	$aExample[$Idx] = $Idx
Next
ConsoleWrite( "Assign(array)=" & TimerDiff( $hTimer ) & @LF )


Local $Test
$hTimer = TimerInit()
For $Idx = 1 To 499999 Step 1
	$Test = Eval( "Example" & $Idx )
Next
ConsoleWrite( "Eval(vars)=" & TimerDiff( $hTimer ) & @LF )

$hTimer = TimerInit()
For $Idx = 1 To 499999 Step 1
	$Test = $aExample[$Idx]
Next
ConsoleWrite( "Eval(array)=" & TimerDiff( $hTimer ) & @LF )


Код:
Assign(vars)=836.227718964648
Assign(array)=268.692896459569
Eval(vars)=622.536142049151
Eval(array)=163.752480139547
 

ivsatel

Продвинутый
Сообщения
319
Репутация
84
firex
Да, с примером я промахнулся. :smile:
P.S. Стал еще немного грамотнее :smile:
 
Верх