Автор |
Сообщение |
spitfire
Зарегистрирован: 29.04.2010
Сообщения: 729
Откуда: Moscow
|
Спасибо, попробую статикой все разрулить - как я понимаю, будет быстрее чем в файл писать/читать |
|
|
Посмотреть профиль Отправить личное сообщение ICQ Number |
|
spitfire
Зарегистрирован: 29.04.2010
Сообщения: 729
Откуда: Moscow
|
Хм, поковырял я эти статические переменные.. Может я что-то не понял, но их надо объявить перед использованием (иначе ами ругается что я использую неициализированные переменные). А объявить мне их надо вне кода робота (иначе какой смысл). Из доки не совсем понятно как их объявлять
Пробовал создать отдельный afl-файл, в котором объявлял статическую переменную так:
Код: |
staticTransID = "Null";
StaticVarSetText(staticTransID, "NULL");
|
А далее пытался из робота ее прочесть:
Код: |
transID = StaticVarGetText(staticTransID);
|
На что Ами ругается что переменная staticTransID не инициализирована. Я что-то делаю не так?
Просто по логике робота нам же нужно сначала СЧИТАТЬ статические данные в начале работы, а потом в конце работы сохранить в них результаты, а не наоборот. То есть инициализировать статические переменые надо откуда-то извне кода робота. Но как? |
|
|
Посмотреть профиль Отправить личное сообщение ICQ Number |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Не надо ничего объявлять.
Просто вот так
Код: |
StaticVarSetText("staticTransID", "Null");
transID = StaticVarGetText("staticTransID");
|
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
spitfire
Зарегистрирован: 29.04.2010
Сообщения: 729
Откуда: Moscow
|
Но разве в таком случае не будут при каждом проходе робота все статические переменные переписываться NULL, затирая результаты предыдущего прохода? |
|
|
Посмотреть профиль Отправить личное сообщение ICQ Number |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
В таком будут. А ты сперва делай Nz(StaticVarGetText()) и потом, если надо туда что либо записать, то StaticVarSetText() |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
spitfire
Зарегистрирован: 29.04.2010
Сообщения: 729
Откуда: Moscow
|
Хмм, попробовал в отдельном коде изобразить следующую конструкцию, ругается на обе строки со статикой, говоря про неверный тип аргументов..
Код: |
transID = "NULL";
transID = Nz(StaticVarGetText("staticTransID")); //загружаем сохраненное значение из статической переменной
/*////////////////
делаем какие либо операции с transID
*////////////////
StaticVarSetText("staticTransID", transID ); // сохраняем результат прогона в статическую переменную
|
Не могу никак понять эти статические переменные, хоть ты тресни Олег, можешь привести пример рабочего кода? Что-нить типа с такой логикой:
1. Начало прогона. Считываем значение статической переменной staticTransID (в которой результат предыдущего прогона) во временную transID.
2. Собственно сам прогон, проводим какие-либо манипуляции с transID.
3. Конец прогона. Сохраняем в статическую переменную staticTransID результаты для считывания в следующий раз. |
|
|
Посмотреть профиль Отправить личное сообщение ICQ Number |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Пихай в АА и жми эксплоре. Каждый раз будет на 1 больше
Код: |
Filter = 1;
qqq = Nz(StaticVarGet("w"));
qqq = qqq + 1;
StaticVarSet("w", qqq);
AddColumn(qqq, "test");
|
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
spitfire
Зарегистрирован: 29.04.2010
Сообщения: 729
Откуда: Moscow
|
Вся проблема в том, что у меня qqq это текстовая переменная, а не число или числовой массив, собственно поэтому данный код не подходит - функция Nz() не работает для текстовый данных
Поэтому и конструкция Nz(StaticVarGetText()) тоже не работает - компилятор выдает ошибку в неправильности передаваемых в функцию переменных. |
|
|
Посмотреть профиль Отправить личное сообщение ICQ Number |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Просто не думал, что это вызовет проблему. Как то так. Не проверял.
qqq = IIf(ISNULL(StaticVarGet("w")), " ", StaticVarGet("w")); |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
spitfire
Зарегистрирован: 29.04.2010
Сообщения: 729
Откуда: Moscow
|
Опять не то. Правильно конструкция для строки выглядит наверное так:
Код: |
qqq = WriteIf(IsNull(StaticVarGetText("w")), " ", StaticVarGetText("w"));
|
Но опять же функция IsNull в качестве аргументов принимает только число или массив. Есть какой-либо аналог этой функции, только применительно к строчкам? |
|
|
Посмотреть профиль Отправить личное сообщение ICQ Number |
|
Mechanic
Зарегистрирован: 10.06.2008
Сообщения: 359
|
Зачем вы используете функции проверки на Null? У вас же "NULL" - это строка, а не пустое значение, вместо неё с тем же успехом можно написать "I am empty"!
qqq = WriteIf(StaticVarGetText("w") == "NULL", " ", StaticVarGetText("w")); |
|
|
Посмотреть профиль Отправить личное сообщение ICQ Number |
|
spitfire
Зарегистрирован: 29.04.2010
Сообщения: 729
Откуда: Moscow
|
Сам не понимаю зачем сравнивать Вообще забил на эти статические переменные, сделал все через файло - считываю оттуда в начале, пишу в конце. |
|
|
Посмотреть профиль Отправить личное сообщение ICQ Number |
|
spitfire
Зарегистрирован: 29.04.2010
Сообщения: 729
Откуда: Moscow
|
Олег, привет! Не подскажешь, есть ли какой способ вывести в сканере в таблицу результатов время выполнение скрипта? Хочу поэкспериментировать с разными вариантами кода робота, выбрать что побыстрее.. |
|
|
Посмотреть профиль Отправить личное сообщение ICQ Number |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Посмотри функцию GetPerformanceCounter() |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
spitfire
Зарегистрирован: 29.04.2010
Сообщения: 729
Откуда: Moscow
|
000 писал(а): |
Посмотри функцию GetPerformanceCounter() |
Ага, ништяки, то что надо |
|
|
Посмотреть профиль Отправить личное сообщение ICQ Number |
|
|