2015-07-17 4 views
0

Я хочу использовать функцию, а передаваемый параметр должен быть глобальным все время. Как я могу это сделать? Вот мой код:Невозможно установить глобальную переменную

function ReadExcelfunction($FileName,$SheetName,$RowNum,$ColNum,$Parameter) 
{ 
    var $excel = _getExcel($FileName,$SheetName); 
    var $excelData=$excel.getData(); 
    var $Parameter=$excelData[$RowNum][$ColNum]; 
    //_setGlobal($Parameter,$excelData[$RowNum][$ColNum]) -- Commented 
} 

Теперь предположим, я передать параметры, как - File sheet 1 1 Name.

Что я хочу: имя со значением хранится как глобальное значение.

Раньше я использовал _setGlobal($Parameter,$excelData[$RowNum][$ColNum]), который решил цель, но этот API был удален, и теперь мне нужно изменить свой сценарий.

Я использую язык сценариев sahi, который похож на JavaScript.

+2

Он может быть похож на JavaScript, но он * не * JavaScript и механизм устанавливающих глобалов является экологически специфичны. Я удалил тег 'javascript'. –

+0

_but этот API был удален, и теперь мне нужно изменить свой скрипт_ Когда это произошло? Не могу найти ничего в примечаниях к выпуску – globalworming

ответ

0

Вам не нужно использовать _setGlobal, вам нужно только объявить var перед объявлением функции. Например, вы можете объявить новый массив, а затем установить/получить значения так же, как _setGlobal.

// www.google.com used as start URL 
 
var $globalVariable = new Array(); 
 

 
function SetGlobalVariable(key, newValue) { 
 
    $globalVariable[key] = newValue; 
 
} 
 

 
SetGlobalVariable('inputValue', 'stack overflow'); 
 
_setValue(_textbox("q"), $globalVariable['inputValue']);

+0

Это не работает, когда вам нужны значения в разных сценариях, например, один скрипт должен их писать, а один скрипт нужно читать. Вы можете включить эту функцию, но вы не можете динамически устанавливать и получать значения между сценариями. – globalworming

+0

Вопрос не относится к необходимости использования значений в разных сценариях. Кроме того, наличие одного сценария сценария зависит от данных из другого сценария сценария, это очень плохая идея. Если вы ссылаетесь на один тестовый пример, который использует несколько файлов sah, то это работает отлично, используя global_include.с. –

+0

_having случае скрипт один тест зависит от данных из другого тестового примера сценария очень плохо idea_ это очень спорно, но вы правы, вопрос не указывает на необходимость динамического глобалов. Я закрою сейчас :) – globalworming

0

Возможное решение для вас - записать значение существующей ячейки листа excel из сценария сахи на лету, а затем получить то же значение из соответствующей ячейки листа excel из другого сценария sahi.

Я сделал аналогичную вещь, используя простой текстовый файл.
Первый файл

\\ script 1 
var $str = "Hello World"; 
var$filePath = "C:\\temp\\mystring.txt"; 
_writeToFile($str, $filePath); 

Второй файл

\\ script 2 
var $filePath = "C:\\temp\\mystring.txt"; 
var $mystr = _readFile($filePath); 

Edit: Расширенная ответа

-------------------------------- 
| VariableName | VariableValue | 
-------------------------------- 
| MyVar1 | MyVar1Value | 
-------------------------------- 
| MyVar2 | MyVar2Value | 
-------------------------------- 
| MyVar3 | MyVar3Value | 
-------------------------------- 

Создание функции Сахи для создания нового первенствовать лист:

function _createExcelFile($fileName, $sheetName){ 
    if($sheetName == null || $sheetName == ""){ 
    $sheetName = "Sheet1"; 
    } 
    _debug("Excel File Name :: " + $fileName); 
    _debug("Excel File Sheet Name :: " + $sheetName); 
    var $excelPoi = new Packages.net.sf.sahi.util.ExcelPOI($fileName, $sheetName); 
    $excelPoi.createNew(); 
} 

Далее вы можете обратиться к API _getExcel($filePath[, $sheetName]) от Sahi Pro. Вам нужно сделать несколько итераций, чтобы все было сделано. Вы можете читать и записывать данные по мере необходимости.

Примечание: Я пробовал это только в последней версии Sahi Pro i.e. 6.1.0.

+0

Спасибо, но что, если у меня есть несколько значений для хранения, как я могу различать их? –

+0

Я обновил ответ с некоторыми подробностями, но вам нужно попробовать все в конце. – rahoolm

Смежные вопросы