Так что еще одна пакость от БорисаД в мой адрес и запрос на ip уходит модераторам форума и в случае подтверждения следующим будет запрос в суд по месту жительства владимира
Я еще раз тебе повторяю мудак, Одна пакость и ты вылетишь отсюда, твой сайт будет закрыт роскомнадзором за пропаганду и твое лицо станет известно всему миру как ты мне и обещал, усвоил?
Так что ВОЛОДЯ имей в виду твой проект тут не прокатит а за ДЕБИЛОИДА будешь отвечать в суде, надеюсь тебе понятно теперь кто тут умнее тебя подонок старый
ух как троля завыворачивало и поперло его угрозы и оскорбления уже не только мне а всем подряд раздавать . В медецине такая болезнь называется " бешенство " и она почти со 100% летальным исходом и такие больные долго не живут.
БорисД, Да ладно, Борис, "не трогай Джавдетв". Как говорится, "грешно смеяться над больными людьми". Этому придурку явно невдомёк, что угрозы - один из надёжнейших индикаторов труса.
Владимир, он видимо сам себя убедил что я его выберу как исполнителя и создателя моего робота и шибко остался недоволен и взбесился . Но так то он парень хороший , буквально на днях научился прграммировать и даже первого собственного робота создал ни всему миру сообщил что продавать его не будет ((( видимо оставит в своем музее как первый экземпляр музея имени себя
Владимир, а вот его робота я всетаки попробую купить например тыщ за 2 или даже 10 тысяч коопеек . но договариваться конечно буду с ним не здесь в созданной им теме https://forum.quik.ru/forum10/topic6734/
От себя добавлю, если интересно: Согласен с Антоном, сам всегда использую dofile для загрузки кусков кода или модулей на луа. require также использует loadfile, но сложнее. Зачем вам все эти пути и искатели в простой задаче, когда вы знаете где и что у вас лежит?
Когда пишешь для себя, то - возможно. Когда ты не знаешь кто и как будет использовать модули, то уже не все так очевидно.
Также, что важно, require вернет уже загруженный модуль, если он уже был загружен ранее. Если скрипт - это десятки файлов, а не одна портянка, то это уже важно. С dofile это сделать можно, но тогда придется самому сделать хранилище. Т.к. я часто пишу модули в общепринятом в lua смысле, то поэтому require.
Для того, чтобы добить наш парсер, нам нужно предварительно разобраться со структурами данных. Их здесь две разновидности: таблицы Квика и таблицы Луа. Первые нам понадобятся чуть позже, для визуализации результатов работы скрипта и организации диалога с пользователем, а вторые представляют собой конструкции вида "key-value". Больше в языке фактически ничего и нет. Мозгов здесь не требуется - нужна только аккуратность, особенно с этой дурацкой "динамической типизацией", когда интерпретатор может в любой момент поменять тип данных, в зависимости от того, какая моча ему в голову ударит. Для удобства мы будем по умолчанию считать все значения строками, а вот ключи я рекомендую считать индексами, то есть мы делаем вид, что эти таблицы Луа являются обычными массивами. Ключи лично я нумерую "по-сишному", с нуля, при этом в нулевом элементе сидит, как правило, информация обо всём массиве, а в ячейках с ключами, представленными натуральными числами - о его элементах. Такой подход позволяет крутить циклы по этим таблицам (в т.ч. двойные, тройные) обычным образом. Второе: поскольку любой элемент мы также можем объявить таблицей, мы фактически имеем дело с деревом объектов, обращаться к листьям которого можно как к элементам многомерного куба: v=a[i][j][k][l]; Наконец, нужно помнить, что при инициализации этих таблиц элементы нумеруются с единицы, например: o={1,0}; -- реверс 0-1 Здесь ключами этих элементов станут 1 и 2.
Заведём в блоке глобальных переменных такую вот конструкцию: a={}; -- основная таблица для работы
Таким образом, наш парсер будет выглядеть приблизительно так:
Код
for l in F:lines() do -- цикл по строкам файла данных
_=_+1; -- считана очередная строка
s=l:sub(1,1); -- первый символ строки может быть командой
if s=="_" then loadstring(l:sub(2))();goto Q;end;
if s=="-" then goto Q;end; -- строка закомментирована
i=l:find("\9"); -- разделитель кода класса и кода тикера
if i==nil then goto q;end; -- обязан быть во входном файле
N=N+1; -- добавлена строка нового тикера
a[N]={}; -- общая информация по тикеру
a[N][0]={}; -- справочная информация по тикеру
a[N][0][0]=l:sub(1,i-1); -- первым должен идти код класса тикера
l=l:sub(i+1); -- остаток строки из файла
i=l:find("\9"); -- разделитель кода тикера и количества лотов
if i==nil then goto q;end;
a[N][0][1]=tonumber(l:sub(1,i-1));
l=l:sub(i+1); -- остаток строки из файла
i=l:find("\9"); -- разделитель количества лотов и средней цены
if i==nil then goto q;end;
a[N][1]=tonumber(l:sub(1,i-1));
l=l:sub(i+1); -- остаток строки из файла
i=l:find("\9"); -- разделитель последнего столбца
if i==nil then goto q;end;
a[N][2]=tonumber(l:sub(1,i-1)); -- средняя цена по всем лотам тикера
if l:sub(i+1,1)~="#" then goto q;end; -- контроль, что это именно наш файл
-- остальные данные добираем из ТТТ
a[N][3]=0; -- сумма затрат по тикеру
a[N][0][2]=tonumber(getParamEx(a[N][0][0],a[N][0][1],"LOTSIZE").param_value);
if a[N][0][2]==0 then a[N][0][2]=1;end;
a[N][4]=tonumber(getParamEx(a[N][0][0],a[N][0][1],"LAST").param_value);
a[N][5]=tonumber(getParamEx(a[N][0][0],a[N][0][1],"LASTCHANGE").param_value);
a[N][6]=0; -- код строки тикера в таблице визуализации
::Q:: -- метка эмуляции continue в цикле по строкам
end; -- конец цикла по строкам входного файла
F:close(); -- закрываем входной файл
Вроде, так. Писал "вслепую", код не запускал, да и не собираюсь. Разумеется, дерево каждый может формировать по своему вкусу. Нужно только следить, чтобы WriteDump записал данные в том же виде - ведь при следующем запуске выходной файл станет входным.
Если кого-то раздражают повторяющиеся куски кода, может попробовать упаковать это дело в цикл, но, честно говоря, не советую. Для этой конструкции входного файла, возможно, и получится, но если понадобится запихнуть туда что-то более сложное - вряд ли. Объём кода и так небольшой, выполняется практически мгновенно даже при тысячах тикеров - чего ещё надо?
Что ж вы, черти, приуныли? Где критика? Мне обратная связь нужна!
Теперь визуализация, то бишь таблицы Квика. У меня их всего две, и больше мне почти наверняка не потребуется: одна висит постоянно, а во второй рисуется всплывающее меню. Такая схема, на мой взгляд, обладает змеиной гибкостью и обеспечивает всю необходимую функциональность. У меня, правда, есть три режима выдачи, а в новой версии даже всплывающее меню "едино в трёх лицах", но в "каркас" попадёт лишь одно из таких "лиц" и лишь один режим: "выдаём всё", причём и то, и другое в кастрированном виде. Остальное уж как-нить сами, если кому что потребуется.
Нарисовать таблицу просто - вот примерный блок кода. У меня он вынесен в отдельную функцию для возможности исправления ошибки ПО QUIK (исчезновение текста в ячейках таблицы), а вы как хотите.
Код
T=AllocTable(); -- ID таблицы визуализации
SetTableNotificationCallback(T,E);
AddColumn(T,0,"",true,QTABLE_STRING_TYPE,0);
AddColumn(T,1,"Тикер",true,QTABLE_STRING_TYPE,8);
AddColumn(T,2,"Кол",true,QTABLE_STRING_TYPE,5);
AddColumn(T,3,"Курс",true,QTABLE_STRING_TYPE,10);
AddColumn(T,4,"%",true,QTABLE_STRING_TYPE,6);
AddColumn(T,5,"Цена",true,QTABLE_STRING_TYPE,10);
AddColumn(T,6,"%",true,QTABLE_STRING_TYPE,6);
CreateWindow(T); -- создаем таблицу визуализации результатов
SetWindowPos(T,10,0,800,500); -- положение и размер таблицы
Важными здесь являются две строки: а) подключение обработчика событий (у нас же не просто таблица, а меню!) и б) нулевой столбец (невидимый). Дело в том, что при сортировке или каких-то иных действий строки могут перетасоваться, а в нулевом столбце сидит индекс данного тикера в нашей таблице Lua. Так что где бы ни находилась строка, по которой мы шлёпнули правой кнопкой мыши, мы всегда знаем, что это за тикер и вызываем... правильно, контекстное меню именно для него. Но пока нам не хило бы заполнить эту таблицу значениями. У меня это делается в полуторасекундном прерывании, как организовать это прерывание я уже тыщу раз рассказывал, если что непонятно - спрашивайте.
Для начала надо набить её строками (это у меня тоже отдельная функция с той же целью), примерно так:
Код
local i; -- параметр цикла
Clear(T); -- обнуляем таблицу
for i=1,N do -- цикл по тикерам
a[i][6]=InsertRow(T,-1);end;
Обратите внимание: не только таблица Квика должна знать индекс элемента в таблице Луа, но и наоборот.
А потом набиваем значениями:
Код
for i=1,N do -- цикл по тикерам (прорисовка таблицы)
s=a[i][4]; -- предыдущее и последнее значение курса
a[i][4]=tonumber(getParamEx(a[i][0][0],a[i][0][1],"LAST").param_value);
Я ещё активно пользуюсь цветом, который у меня задаётся в так называемой "безопасной" палитре (00, 33, 66, 99, CC, FF). Неохота расписывать эту хрень - потренируйтесь сами (младший байт - R, средний - G, старший - B), цвет и текст задаются
В общем, как-то так. Как это выглядит "в натуре", я уже показывал. Где-то у меня эта хрень валялась... ага, вот она:
Так, а что я ещё хотел? Да, пожалуй всё - хватит с вас! Ах, да - контекстное меню вызывается из мейна по глобальной переменной (ID тикера, по которому кликнули мышой) и коду её состояния, который может находиться в следующих состояниях: 0 - контекстного меню нет, и не надо 1 - контекстного меню нет, надо нарисовать 2 - меню есть, и слава богу 3 - меню есть, надо его убить 4 - меню есть, надо его убить и нарисовать новое.
Кажись, всё. Ах, да - ещё подача и снятие заявок, да получение сделок по OnTrade... знаете, а мне это надоело: визжать тут УХ какие мастера водятся, а как чуть до дела - тишина. МЁРТВАЯ тишина!
Такшта приостанавливаю я свои "дозволенные речи" до получения обратной связи.
Евгений написал: Владимир, Михаил и БорисД один и тот же человек?
Это же гениально Владимир !
Как вернуть себе авторитет и заделаться крутым специалистом по Lua? Да очень просто: создать себе фейковых заказчиков и друзей и заказывать у себя самого программы, авось кто и на самом деле клюнет и тоже закажет но уже по настоящему? Так ведь? Гениально просто?
Поэтому БорисД не захотел заказывать у фрилансеров которых он не знает?
Как я вас раскусил?
Да очень просто. Проанализировав ваш сайт все стало понятно, ваши интересы ваши МЕТОДЫ и некоторые слова типа ДЕБИЛОИД которыми вы меня обзывали. А также ваши методы устранения тролей.
Что испугались моего вмешательства в ваш гениальный проект, что я могу прокатить за специалиста который будет писать программы в вашей теме и перебивать заказы? Вычислить вашу придуманную компанию из БорисаД и Михаила с регистрацией в октябре не составило труда
Этот дегенерат еще и сам с собой диалоги ведет в надежде что кто то сюда тоже встрянет и оценит старого неудачника по достоинству, а вести диалоги с самим собой это уже лапуль, шизофрения называется, так что продолжай, весь форум над тобой уже смеется ведь признаться в этом тебе не позволит твоя идеология
Владимир, действительно какая то удручающая тишина , вопросы у меня по вашим текстам есть но лучше я их промолчу и доаолню про себя что уровень обсуждения в кодах выше моего уровня знаний в Луа поэтому лучше воздержусь от своих вопросов когда умные дяденьки разговаривают. Возможно и другим тоже нужно время переварить и вникнуть . Ну либо это вариант когда молчание - это знак согласия.
Лучше свали отсюда шизофреник и дружков своих БорисаД и Михаила забери с собой и больше тут не появляйся никогда, а то тебя найдут мои друзья в Раменском и отвезут по адресу ул. Мира, д.12/1
И еще твой сайт я на всякий случай скачал и сохранил в качестве доказательств. Поэтому даже не пытайся тут на форуме кого нибудь назвать "Лапуль или Милок" как ты это любишь. Иначе Лапулю и Милка из тебя сделают сразу в СИЗО, надеюсь это тебе понятно
Да какое уж тут "согласие"... Кроме закомплексованного визжащего придурка - ничего, даже после провокации. Схему организации диалога на Lua я привёл, и вряд ли можно выжать из языка больше. А подача/снятия заявок и вообще примитивна: заполнил поля нужными значениями, да послал транзакцию. Или получил прерывание и считал что нужно. Если не считать отсутствие какого-либо сервиса для получения свечей (имеющееся здесь убожество язык не поворачивается назвать "сервисом"), то больше и желать нечего.
Ладно, метать бисер мне тоже неохота. А с тобой отдельно разберёмся.
Кто свинья тут тоже известно так что Лапуль сгинь отсюда навсегда и договорись уже со своим дружком в голове, а то так и поссоритесь, а подружиться потом уже не получится останешься совсем один в своем Раменском, а так хоть будешь общаться с БорисомД иногда
Кстати он тебе из Великого Утюга привет передает...Лапуль
Вместе со своим БорисомД загремите на полную катушку! Ты походу вобще свинья по жизни что от тебя все отвернулись, вот и решил себе поклонников найти. Ищи себе другой форум по добру по здорову!
Евгений написал: Кто свинья тут тоже известно так что Лапуль сгинь отсюда навсегда и договорись уже со своим дружком в голове, а то так и поссоритесь, а подружиться потом уже не получится останешься совсем один в своем Раменском, а так хоть будешь общаться с БорисомД иногда
Кстати он тебе из Великого Утюга привет передает...Лапуль
Владимир написал: БорисД, Борь, мы же, вроде, на "ты" перешли. ::
Да какое уж тут "согласие"... Кроме закомплексованного визжащего придурка - ничего, даже после провокации. Схему организации диалога на Lua я привёл, и вряд ли можно выжать из языка больше. А подача/снятия заявок и вообще примитивна: заполнил поля нужными значениями, да послал транзакцию. Или получил прерывание и считал что нужно. Если не считать отсутствие какого-либо сервиса для получения свечей (имеющееся здесь убожество язык не поворачивается назвать "сервисом"), то больше и желать нечего.
Ладно, метать бисер мне тоже неохота. А с тобой отдельно разберёмся. ::
нуда , перешли на ты но иногда на автомате продолжаю Выкать. метать бисер и наваливать помощь когда в ответ тишина действительно не приятная штука , но судя по посещаемости этой темы ясень пень что народ не визги тролля ходит сюда почитать а именно заходят с целью полистать выложенные коды и мысли по ним , и это хоть и молчаливый , но все таки результат. Я там по электронке файлик отправил , зайди на почту полистай мою эксельку.
Че все друг твой володя сдулся теперь ты БорисД опять? Банда дегенератов в мозгах одного человека, это просто удивительно, бывает же такое. Я изучил твой сайт вдоль и поперек. Тебе светит лет 5 как минимум за экстремизм, хотя скорее тебя признают невменяемым, и отпустят на все четыре как неопасного, что с тебя взять. Языком молоть ты умеешь. Мания величия твой диагноз. Это и так видно без психиаторов
Владимир написал: БорисД , Борь, мы же, вроде, на "ты" перешли. ::
Да какое уж тут "согласие"... Кроме закомплексованного визжащего придурка - ничего, даже после провокации. Схему организации диалога на Lua я привёл, и вряд ли можно выжать из языка больше. А подача/снятия заявок и вообще примитивна: заполнил поля нужными значениями, да послал транзакцию. Или получил прерывание и считал что нужно. Если не считать отсутствие какого-либо сервиса для получения свечей (имеющееся здесь убожество язык не поворачивается назвать "сервисом"), то больше и желать нечего.
Ладно, метать бисер мне тоже неохота. А с тобой отдельно разберёмся. ::
нуда , перешли на ты но иногда на автомате продолжаю Выкать. метать бисер и наваливать помощь когда в ответ тишина действительно не приятная штука , но судя по посещаемости этой темы ясень пень что народ не визги тролля ходит сюда почитать а именно заходят с целью полистать выложенные коды и мысли по ним , и это хоть и молчаливый , но все таки результат. Я там по электронке файлик отправил , зайди на почту полистай мою эксельку.
хааахх смех да и только, комедия продолжается. Дак ты с ним по телефону уже поговори чтоли да в гости пригласи )))
Ну че Лапуль все выдохся? Дегенерат чертов посмотри сколько раз ты назвал тут людей Лапуль, больной ты человек кто тут тебе лапуль? У тебя точно мания величия иди пей таблетки
Евгений, Я уже объяснял здесь пару раз: лапуля - это термин такой, доказавший свою ВЫСОЧАЙШУЮ эффективность в вытравливании головожопых - они на него клюют как на опарыша. И одновременно индикатор, что я уже к собеседнику не испытываю никаких чувств, кроме презрения. Доступно, лапуль? Хотя куда тебе - почитай свои вчерашние высеры - ты же КЛИНИЧЕСКИЙ дебил, лапуль! Опер хренов. Подросток прыщавый, видать. Впрочем, какая разница? Это всё равно не лечится.
Осеннее обострение по ходу у вас друзья Владимир и Борис, идите пить таблетки оба, это даже и так видно как Владимир одновременно с БорисомД заходит на форум БорисД это наверно Борис Дурак так ведь, ему же отведена роль дурака по твоему замыслу?
Вот и получается что заказчик то дурак, а ты то программист от бога. Ты где такому научился а Владимир?
Ай да молодец хорошо придумал, тут было даже народ стал подтягиваться до и в самом деле клюнули люди то на твою уловку. А ты ведь их за дураков держишь выродок, так же как и лапулями называешь именно для этого. Тебя что обидели? Что ты так людей ненавидишь? Может ты себя идеальным человеком считаешь? А Лапуль?
Да у тебя по лицу видно что ты маленько того. Сайт твой читаю и удивляюсь, тебе точно подлечится надо успокоится сходить на рыбалку там или шашлычек сделать на природе, а ты тут сутками сидишь на форуме, за год написал 1000 сообщений, о чем они? У меня за год всего 300 и все по делу или вопросы или предложения для квика, а ты только всех тут обсираешь, да головожопых ищешь. У тебя что мания преследования? и величия одновремено? Я за всю жизнь таких как ты не встречал и упаси господи когда нибудь встретить. Забудь ты про это программирование, все поезд ушел, иди внуками займись
Владимир написал: БорисД, Завтра посмотрю на свежую голову - устал я чего-то...
ага , понял и тем более что в теме тишина кроме визга этого дебилоида Евгения , ну не ходить же из за него сюда его визг почитать , пусть он в тишине посидит - троллей тишина изнутри съедает. а я тоже отключаюсь - я днем сегодня сделал повторную ревакцинацию и что то меня колбасит после неё
Владимир, темой народ интересуется , ведь посещений темы под тысячу за сутки иногда доходит . Сказать же кому то как и мне нечего так как выложенные коды и мысли по ним выше чем мой уровень знаний в этом , ну или народ пока пытается как и я вникнуть в суть вопроса и разобраться с твоей информацией.
Владимир !, а слабо создать еще несколько фейковых аккаунтов типа БорисД и Михаил и изображать большую заинтересованность народа в твоей теме по разработке роботов? Они будут общаться между собой, с тобой и с "народом", обсирать меня и восхвалять тебя: программиста от бога и вобще замечательного человека и наставника который программирует "народу" роботов на почасовой зарплате. Это же гениальная идея. А вось и в самом деле кто нибудь клюнет на твои "интернет технологии". Но это уже будет не раздвоение личности а даже больше, на всякий случай предупреждаю тебя: это может быть опасно для твоей психики... но жутко интересно справишься ты с этой задачей или нет
да , он несомненно поднимает посещаемость , но кому интересны его визги ? вчера видел цифру 6069 посещений темы а сейчас она уже выше 7150 и тосяча посещений за сутки уж точно не ради его визгов. Но с другой стороны активности в обсуждении предложенного тобой вопроса действительно не наблюдается и видимо интересны по настоящему только мне как создателю темы и тебе как инициатору своего предложения в ней. Ну а раз так и тема мало кому интересна то зови меня в гости , впереди длительные выходные и посидим совместно за одним монитором в тишине и без этого тролля Евгения , а заодно поближе познакомимся и обсудим возможные стратегии и способы их реализации в кодах роботов. Меня вчерашняя прививка ревакцинации вроде начинает отпускать ( весной вакцинировался и первую прививку практически не почуствовал а вчера как то заколбасило после неё .
БорисД, Я абсолютно уверен, что организация диалога на Lua просто не может не быть интересной подавляющему большинству пользователей - даже тем, кто реализовал свой диалог на внешних библиотеках (а для этого нужна определённая квалификация). Я в своей жизни написал немало диалоговых программ и знаю об этом практически всё.
Это у тебя "впереди длительные выходные", а у меня, пенсионера, все дни рабочие. Не знаю, я планировал одну поездку, но мой друг, к которому я собирался ехать, на операцию ложится, и я сейчас плохо представляю, где и что я буду делать в ближайшие дни.
А сегодня и завтра я часто буду вдали от компа (вот прям ща ухожу), так что разговаривать буду, в основном, только утром и вечером. Письмишко я тебе с утра послал... Завтра у меня тоже вакцинация.
Владимир написал: Письмишко я тебе с утра послал... Завтра у меня тоже вакцинация.
на письмишко я уже ответил вакцинироваться ведь тоже повторно будешь ? У меня между вакцинациями получилось около 7 месяцев , и в принципе врачи утверждают что куар код действует до года но я решил что лучше перебдеть чем не добдеть .
Тема действительно интересная, всех интересует когда же вы БорисД и Владимир наконец то встретитесь и окончательно подружитесь с головой.
Вы куда пойдете то хоть, что прямо так за монитором и будете сидеть, сходите хотя бы в кино или театр, но лучше конечно сразу в ЦИРК идите, думаю вам там могут предложить вместо клоуна поработать, вот где жила то золотая. А что эти роботы на них много не заработаешь, да и сложно это, для мозга тяжело.
А клоунаду можно продолжать бесконечно.. хотя нет конец то все равно рано или поздно наступит. Как то это надо заканчивать. Вот например Собчак когда понял что клоунада не прокатила, сразу заболел и попал в кардиологию, а потом оказался за границей. И вобще надо уходить красиво: заболел, ушел на вакцинацию, уехал в отпуск, подскользнулся, и тд и тп.
Не скажешь же в самом деле что обосрался или захлебнулся собственной блевотиной.
Так что друзья товарищи ! Уходите всегда красиво ! Аккуратно закрыв дверь !
Евгений, конкретно тебя зациклило и не отпускает ведь , а ты что в свой теме не отвечаешь на мои вопросы ? я уже и деньги подготовил тебе за робота заплатить а ты с ценой никак не разродишься . Но не забывай и эту тему посещать , я очень рад что ты её помогаешь раскручивать на высокие рейтинги - час назад было 7150 а уже к 7250 посещений приближаемся.