Что нового

[Данные, строки] Извлечь из данных переменную

F9

Новичок
Сообщения
71
Репутация
1
Доброго дня всем.
Подскажите, пожалуйста, при извлекании данных из файла путем
Код:
$HEAD = FileReadLine($Conf_File,3)

где в файле содержимое строки:
Код:
$Client_Name;$Client_Code;$j;;$fDate;$fDate
получаем массив значений (см. вложение)
Как использовать эти значения в виде переменных далее в скрипте ?
Сами переменные
Код:
$Client_Code= $ArrayInp[2]
					$Client_Name=$ArrayInp[3]

определены были ранее, и содержат значения

PS
Надеюсь понятно объяснил... :whistle:

Иначе говоря, из заранее заготовленных шаблонов в разных файлах конфигурации, нужно выставить порядок записи в другой файл определенных переменных в том порядке, как указано в шаблоне.
 

joiner

Модератор
Локальный модератор
Сообщения
3,497
Репутация
619
http://autoit-script.ru/index.php/topic,15033.msg94358.html#msg94358
второй код в примере. там как раз об этом
 
Автор
F9

F9

Новичок
Сообщения
71
Репутация
1
Не догоняю, как работает (((
Код:
#include <array.au3>
	$HEAD = FileReadLine($Conf_File,3)
	$head_arr= StringSplit($HEAD,";")
	_ArrayDisplay($head_arr,"!") ;содержимое массива: $client_name|$client_code ит.п.
	For $i = 1 To $head_arr[0]
			$rep = StringReplace($head_arr[$i],'$','')
			MsgBox("","",$rep)  ;посмотрели содержимое замененных строк - это client_name, client_code и т.п.
			$eval = Eval($rep)
msgbox("","",$eval) ;$EVAL ничего не возвращает? Почему
		Next
 
Автор
F9

F9

Новичок
Сообщения
71
Репутация
1
Код:
#include <array.au3>
    $HEAD = FileReadLine($Conf_File,3)
    $head_arr= StringSplit($HEAD,";")
    _ArrayDisplay($head_arr,"!") ;содержимое массива: $client_name|$client_code ит.п.
For $i = 1 To $head_arr[0]
			$rep = StringReplace($head_arr[$i],'$','')  ;rep содержит теперь Client_Name, Client_Code и тп
			$eval = Eval("rep")
		MsgBox("","","EVAL: " &$eval) ;возвращает те же самые Client_Name, Client_Code
		Next

а хотелось бы чтобы возвращало объявленное ранее $Client_Name = "Anytexthere"
 

joiner

Модератор
Локальный модератор
Сообщения
3,497
Репутация
619
F9
не усложняй задачи сам себе..пересмотри свой код, возможно стоит что то упростить
в кусках кода сложно разбираться..может выложишь весь код? и тогда обрисуешь задачу
 
Автор
F9

F9

Новичок
Сообщения
71
Репутация
1
В общем есть файл-шаблон *.conf (Копия Фармация.txt) в котором первые 3 строки - это шаблон итогового файла, остальное - содержимое.
10-702.2.txt - это начальный файл, который требуется перекодировать по шаблону.
по 1 строке - выбирается порядок столбцов для итогового файла из массива данных, полученного из начального файла.
2 строка - символ разделитель полей в итоговом файле.
3 строка - шаблон шапки файла.

Весь код - во вложении
 

InnI

AutoIT Гуру
Сообщения
4,782
Репутация
1,377
F9, зачем вам лишняя переменная $rep ?
Попробуйте так
Код:
$eval = Eval(StringReplace($head_arr[$i],'$',''))
 
Автор
F9

F9

Новичок
Сообщения
71
Репутация
1
А вот это уже дело!!! ;D ;D
СПАСИБО...
 

joiner

Модератор
Локальный модератор
Сообщения
3,497
Репутация
619
F9
весьма странно..скажи чем это:
Код:
$eval = Eval(StringReplace($head_arr[$i],'$',''))

отличается от этого(ну кроме двустрочного варианта :smile: )
Код:
$rep = StringReplace($array_all[$i],'$','')
    $eval = Eval($rep)
 
Автор
F9

F9

Новичок
Сообщения
71
Репутация
1
Сам в шоке! Логика- то одна...
Хм... теперь и тот вариант работает... Видимо где то косякнул, чёто лишнее щёлкнул.
 

InnI

AutoIT Гуру
Сообщения
4,782
Репутация
1,377
F9, не морочьте нам голову. Работает в обоих случаях
Код:
$client_name = "cName"

$rep = StringTrimLeft("$client_name", 1)
$eval1 = Eval($rep)
MsgBox("", "", $eval1)

$eval2 = Eval(StringTrimLeft("$client_name", 1))
MsgBox("", "", $eval2)

Ищите ошибку в коде.
 
Автор
F9

F9

Новичок
Сообщения
71
Репутация
1
Да да, я уже извинился... Скорее всего в пальцах запутался, и где нибудь поставил лишнюю запятую/ковычку или еще что-либо.
Работает в обоих случаях.
Спасибо еще раз...
 

AZJIO

Меценат
Меценат
Сообщения
2,814
Репутация
1,170
F9
Можно создать ассоциативный массив с помощью объекта "Scripting.Dictionary" или обычный массив, а вместо имён использовать индексы.
 
Автор
F9

F9

Новичок
Сообщения
71
Репутация
1
А что за объект Scripting.Dictionary ?
МОжно поподробнее ?
 

firex

AutoIT Гуру
Сообщения
943
Репутация
207
F9
http://autoit-script.ru/index.php/topic,12092.0.html
 
Верх