Список форумов AmiSite.ru AmiSite.ru
Форум по Ами
 FAQ  •  Поиск  •  Пользователи  •  Группы   •  Регистрация  •  Профиль  •  Войти и проверить личные сообщения  •  Вход
 Обсуждение робота с главной страницы сайта Следующая тема
Предыдущая тема
Начать новую тему  Ответить на тему
Автор Сообщение
spitfire



Зарегистрирован: 29.04.2010
Сообщения: 729
Откуда: Moscow

СообщениеДобавлено: Пт Июн 24, 2011 9:37 pm Ответить с цитатой Вернуться к началу

Спасибо, попробую статикой все разрулить - как я понимаю, будет быстрее чем в файл писать/читать Cool
Посмотреть профиль Отправить личное сообщение ICQ Number
spitfire



Зарегистрирован: 29.04.2010
Сообщения: 729
Откуда: Moscow

СообщениеДобавлено: Пт Июн 24, 2011 10:12 pm Ответить с цитатой Вернуться к началу

Хм, поковырял я эти статические переменные.. Может я что-то не понял, но их надо объявить перед использованием (иначе ами ругается что я использую неициализированные переменные). А объявить мне их надо вне кода робота (иначе какой смысл). Из доки не совсем понятно как их объявлять Confused
Пробовал создать отдельный afl-файл, в котором объявлял статическую переменную так:
Код:

staticTransID = "Null";
StaticVarSetText(staticTransID, "NULL");

А далее пытался из робота ее прочесть:
Код:

transID = StaticVarGetText(staticTransID);

На что Ами ругается что переменная staticTransID не инициализирована. Я что-то делаю не так?
Просто по логике робота нам же нужно сначала СЧИТАТЬ статические данные в начале работы, а потом в конце работы сохранить в них результаты, а не наоборот. То есть инициализировать статические переменые надо откуда-то извне кода робота. Но как? Question
Посмотреть профиль Отправить личное сообщение ICQ Number
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Сб Июн 25, 2011 8:13 am Ответить с цитатой Вернуться к началу

Не надо ничего объявлять.
Просто вот так
Код:

StaticVarSetText("staticTransID", "Null");

transID = StaticVarGetText("staticTransID");


_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
spitfire



Зарегистрирован: 29.04.2010
Сообщения: 729
Откуда: Moscow

СообщениеДобавлено: Сб Июн 25, 2011 12:16 pm Ответить с цитатой Вернуться к началу

Но разве в таком случае не будут при каждом проходе робота все статические переменные переписываться NULL, затирая результаты предыдущего прохода? Question
Посмотреть профиль Отправить личное сообщение ICQ Number
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Сб Июн 25, 2011 3:59 pm Ответить с цитатой Вернуться к началу

В таком будут. А ты сперва делай Nz(StaticVarGetText()) и потом, если надо туда что либо записать, то StaticVarSetText()

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
spitfire



Зарегистрирован: 29.04.2010
Сообщения: 729
Откуда: Moscow

СообщениеДобавлено: Сб Июн 25, 2011 6:57 pm Ответить с цитатой Вернуться к началу

Хмм, попробовал в отдельном коде изобразить следующую конструкцию, ругается на обе строки со статикой, говоря про неверный тип аргументов..
Код:

transID = "NULL";
transID = Nz(StaticVarGetText("staticTransID"));   //загружаем сохраненное значение из статической переменной
/*////////////////
делаем какие либо операции с transID
*////////////////
StaticVarSetText("staticTransID", transID );      // сохраняем результат прогона в статическую переменную

Не могу никак понять эти статические переменные, хоть ты тресни Smile Олег, можешь привести пример рабочего кода? Что-нить типа с такой логикой:
1. Начало прогона. Считываем значение статической переменной staticTransID (в которой результат предыдущего прогона) во временную transID.
2. Собственно сам прогон, проводим какие-либо манипуляции с transID.
3. Конец прогона. Сохраняем в статическую переменную staticTransID результаты для считывания в следующий раз.
Посмотреть профиль Отправить личное сообщение ICQ Number
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Вс Июн 26, 2011 1:21 am Ответить с цитатой Вернуться к началу

Пихай в АА и жми эксплоре. Каждый раз будет на 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

СообщениеДобавлено: Вс Июн 26, 2011 11:49 am Ответить с цитатой Вернуться к началу

Вся проблема в том, что у меня qqq это текстовая переменная, а не число или числовой массив, собственно поэтому данный код не подходит - функция Nz() не работает для текстовый данных Sad
Поэтому и конструкция Nz(StaticVarGetText()) тоже не работает - компилятор выдает ошибку в неправильности передаваемых в функцию переменных.
Посмотреть профиль Отправить личное сообщение ICQ Number
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Вс Июн 26, 2011 7:13 pm Ответить с цитатой Вернуться к началу

Просто не думал, что это вызовет проблему. Как то так. Не проверял.
qqq = IIf(ISNULL(StaticVarGet("w")), " ", StaticVarGet("w"));

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
spitfire



Зарегистрирован: 29.04.2010
Сообщения: 729
Откуда: Moscow

СообщениеДобавлено: Пн Июн 27, 2011 10:39 am Ответить с цитатой Вернуться к началу

Опять не то. Правильно конструкция для строки выглядит наверное так:
Код:

qqq = WriteIf(IsNull(StaticVarGetText("w")), " ", StaticVarGetText("w"));

Но опять же функция IsNull в качестве аргументов принимает только число или массив. Есть какой-либо аналог этой функции, только применительно к строчкам?
Посмотреть профиль Отправить личное сообщение ICQ Number
Mechanic



Зарегистрирован: 10.06.2008
Сообщения: 359

СообщениеДобавлено: Пн Июн 27, 2011 4:27 pm Ответить с цитатой Вернуться к началу

Зачем вы используете функции проверки на Null? У вас же "NULL" - это строка, а не пустое значение, вместо неё с тем же успехом можно написать "I am empty"!

qqq = WriteIf(StaticVarGetText("w") == "NULL", " ", StaticVarGetText("w"));
Посмотреть профиль Отправить личное сообщение ICQ Number
spitfire



Зарегистрирован: 29.04.2010
Сообщения: 729
Откуда: Moscow

СообщениеДобавлено: Пн Июн 27, 2011 10:52 pm Ответить с цитатой Вернуться к началу

Сам не понимаю зачем сравнивать Smile Вообще забил на эти статические переменные, сделал все через файло - считываю оттуда в начале, пишу в конце.
Посмотреть профиль Отправить личное сообщение ICQ Number
spitfire



Зарегистрирован: 29.04.2010
Сообщения: 729
Откуда: Moscow

СообщениеДобавлено: Вт Июн 28, 2011 2:01 pm Ответить с цитатой Вернуться к началу

Олег, привет! Не подскажешь, есть ли какой способ вывести в сканере в таблицу результатов время выполнение скрипта? Хочу поэкспериментировать с разными вариантами кода робота, выбрать что побыстрее..
Посмотреть профиль Отправить личное сообщение ICQ Number
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Вт Июн 28, 2011 3:18 pm Ответить с цитатой Вернуться к началу

Посмотри функцию GetPerformanceCounter()

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
spitfire



Зарегистрирован: 29.04.2010
Сообщения: 729
Откуда: Moscow

СообщениеДобавлено: Вт Июн 28, 2011 3:24 pm Ответить с цитатой Вернуться к началу

000 писал(а):
Посмотри функцию GetPerformanceCounter()

Ага, ништяки, то что надо Cool
Посмотреть профиль Отправить личное сообщение ICQ Number
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



Следующая тема
Предыдущая тема
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете вкладывать файлы
Вы не можете скачивать файлы


Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme :: Часовой пояс: GMT + 3

File Attachment © by Meik Sievertsen