Переключение на Главную Страницу Страницы: 1 ... 4 5 [6] 7 8  ОтправитьПечать
Очень популярная тема (более 25 ответов) v7lua.dll - ВК для интеграции 1С и Lua (число прочтений - 36293 )
steban
1c++ developer
Отсутствует


#define sizeof(x) rand()

Сообщений: 787
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: v7lua.dll - ВК для интеграции 1С и Lua
Ответ #75 - 17. Июля 2008 :: 11:42
Печать  
kms писал(а) 17. Июля 2008 :: 11:31:
Цитата:
Это был глюк TurboBL.

А можно чуть подробнее.

http://www.1cpp.ru/bugs/show_bug.cgi?id=3988
  

int getRandomNumber()&&{&&  return 4; //chosen by fair dice roll&&         //guaranteed to be random&&}
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: v7lua.dll - ВК для интеграции 1С и Lua
Ответ #76 - 17. Июля 2008 :: 12:06
Печать  
Это была очередная реинкарнация старого-старого глюка Улыбка
Вроде как в очередной раз поправлена Улыбка
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
steban
1c++ developer
Отсутствует


#define sizeof(x) rand()

Сообщений: 787
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: v7lua.dll - ВК для интеграции 1С и Lua
Ответ #77 - 17. Июля 2008 :: 13:56
Печать  
Версия 1.0.1.3:
  • исправлено поведение ф-и print (выводился только последний аргумент)
  • добавлена ф-я create1sobject - аналог ф-и СоздатьОбъект встроенного языка 1с.
  • изменено сообщение вызывающему коду количества параметров ф-й:
    теперь при вызове GetNParams возвращается количество параметров, полученное ранее в вызове IsOleContext из регистра ebx или 0
  

int getRandomNumber()&&{&&  return 4; //chosen by fair dice roll&&         //guaranteed to be random&&}
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: v7lua.dll - ВК для интеграции 1С и Lua
Ответ #78 - 17. Июля 2008 :: 15:22
Печать  
steban писал(а) 17. Июля 2008 :: 13:56:
Версия 1.0.1.3:

Использовал предоставленные возможности в http://www.1cpp.ru/bugs/show_bug.cgi?id=3813
Все ок, проблем нет.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: v7lua.dll - ВК для интеграции 1С и Lua
Ответ #79 - 17. Июля 2008 :: 17:13
Печать  
steban писал(а) 17. Июля 2008 :: 13:56:
  • добавлена ф-я create1sobject - аналог ф-и СоздатьОбъект встроенного языка 1с.

  • А как правильно использовать?
    Код
    Выбрать все
    	|	Test = function()
    	|		val = Create1sObject(""Справочник.Номенклатура"");
    	|		return val;
    	|	end,
     
    
    


    Код
    Выбрать все
    [string "..."]:11: attempt to call global 'Create1sObject' (a nil value)
     
    
    
      

    De quelle planète es-tu?
    Наверх
     
    IP записан
     
    kms
    1c++ power user
    1c++ moderator
    Отсутствует


    я хочу, чтоб сюда проложили
    дорогу оттуда...

    Сообщений: 4632
    Зарегистрирован: 19. Мая 2006
    Re: v7lua.dll - ВК для интеграции 1С и Lua
    Ответ #80 - 17. Июля 2008 :: 17:23
    Печать  
    А, регистр.
    "create1sobject" - работает.

    Ну, выходит, до полной идиллии не хватает совсем немного -
    конструкций типа try/catch и возможности выброса исключений в вызывающий контекст.
      

    De quelle planète es-tu?
    Наверх
     
    IP записан
     
    steban
    1c++ developer
    Отсутствует


    #define sizeof(x) rand()

    Сообщений: 787
    Зарегистрирован: 19. Мая 2006
    Пол: Мужской
    Re: v7lua.dll - ВК для интеграции 1С и Lua
    Ответ #81 - 17. Июля 2008 :: 19:59
    Печать  
    kms писал(а) 17. Июля 2008 :: 17:23:
    Ну, выходит, до полной идиллии не хватает совсем немного -
    конструкций типа try/catch и возможности выброса исключений в вызывающий контекст.

    try/catch в Lua не будет никогда.
    А вот прервать выполнение по ошибке - это запросто:
    Код
    Выбрать все
    error('фигня вышла') 
    
    
      

    int getRandomNumber()&&{&&  return 4; //chosen by fair dice roll&&         //guaranteed to be random&&}
    Наверх
     
    IP записан
     
    steban
    1c++ developer
    Отсутствует


    #define sizeof(x) rand()

    Сообщений: 787
    Зарегистрирован: 19. Мая 2006
    Пол: Мужской
    Re: v7lua.dll - ВК для интеграции 1С и Lua
    Ответ #82 - 17. Июля 2008 :: 20:07
    Печать  
    kms писал(а) 17. Июля 2008 :: 15:22:
    Использовал предоставленные возможности в http://www.1cpp.ru/bugs/show_bug.cgi?id=3813
    Все ок, проблем нет.

    Цитата:
    Код
    Выбрать все
    void CallIsOleContext(CBLContext* pCont, int nParams)
    {
    	__asm
    	{
    		push ebx;
    		mov ebx, nParams;
    	}
    	pCont->IsOleContext();
    	__asm
    	{
    		pop ebx;
    	}
    }
     
    
    

    Очень довольный
    я сделал точно такие-же правки в ProxyDataProvider
      

    int getRandomNumber()&&{&&  return 4; //chosen by fair dice roll&&         //guaranteed to be random&&}
    Наверх
     
    IP записан
     
    artbear
    1c++ developer
    1c++ moderator
    Отсутствует


    Эх, дайте что-нибудь новенькое
    да полезное потести

    Сообщений: 6303
    Местоположение: Москва
    Зарегистрирован: 19. Мая 2006
    Пол: Мужской
    Re: v7lua.dll - ВК для интеграции 1С и Lua
    Ответ #83 - 18. Июля 2008 :: 03:13
    Печать  
    steban писал(а) 17. Июля 2008 :: 20:07:
    Очень довольный
    я сделал точно такие-же правки в ProxyDataProvider

    А где ты их сделал?
    Этот провайдер мы же включили в состав 1С++ Улыбка
      

    OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
    Наверх
    GTalkSkype/VoIPICQ  
    IP записан
     
    steban
    1c++ developer
    Отсутствует


    #define sizeof(x) rand()

    Сообщений: 787
    Зарегистрирован: 19. Мая 2006
    Пол: Мужской
    Re: v7lua.dll - ВК для интеграции 1С и Lua
    Ответ #84 - 18. Июля 2008 :: 05:57
    Печать  
    artbear писал(а) 18. Июля 2008 :: 03:13:
    А где ты их сделал?
    в своей сборке. нигде не публиковал.
    artbear писал(а) 18. Июля 2008 :: 03:13:
    Этот провайдер мы же включили в состав 1С++ Улыбка

    я помню Улыбка
      

    int getRandomNumber()&&{&&  return 4; //chosen by fair dice roll&&         //guaranteed to be random&&}
    Наверх
     
    IP записан
     
    steban
    1c++ developer
    Отсутствует


    #define sizeof(x) rand()

    Сообщений: 787
    Зарегистрирован: 19. Мая 2006
    Пол: Мужской
    Re: v7lua.dll - ВК для интеграции 1С и Lua
    Ответ #85 - 18. Июля 2008 :: 07:01
    Печать  
    steban писал(а) 17. Июля 2008 :: 19:59:
    kms писал(а) 17. Июля 2008 :: 17:23:
    Ну, выходит, до полной идиллии не хватает совсем немного -
    конструкций типа try/catch и возможности выброса исключений в вызывающий контекст.

    try/catch в Lua не будет никогда.

    вместо try/catch можно использовать pcall. Только блок try придется оформлять в виде функции. Но это не проблема, т.к. в Lua можно объявлять анонимные функции Улыбка
      

    int getRandomNumber()&&{&&  return 4; //chosen by fair dice roll&&         //guaranteed to be random&&}
    Наверх
     
    IP записан
     
    steban
    1c++ developer
    Отсутствует


    #define sizeof(x) rand()

    Сообщений: 787
    Зарегистрирован: 19. Мая 2006
    Пол: Мужской
    Re: v7lua.dll - ВК для интеграции 1С и Lua
    Ответ #86 - 18. Июля 2008 :: 19:58
    Печать  
    Включил в ВК библиотеку LPeg (Parsing Expression Grammars For Lua)
    Во вложении - демо-конфа, показывающая возможности LPeg, а именно быстрый лексический анализ.
      

    SyntaxHighlightDemo.rar ( 84 KB | Загрузки )

    int getRandomNumber()&&{&&  return 4; //chosen by fair dice roll&&         //guaranteed to be random&&}
    Наверх
     
    IP записан
     
    steban
    1c++ developer
    Отсутствует


    #define sizeof(x) rand()

    Сообщений: 787
    Зарегистрирован: 19. Мая 2006
    Пол: Мужской
    Re: v7lua.dll - ВК для интеграции 1С и Lua
    Ответ #87 - 18. Июля 2008 :: 19:59
    Печать  
    Вот как это выглядит:
      

    LPegSyntaxHighlightScreen.GIF ( 9 KB | Загрузки )
    LPegSyntaxHighlightScreen.GIF

    int getRandomNumber()&&{&&  return 4; //chosen by fair dice roll&&         //guaranteed to be random&&}
    Наверх
     
    IP записан
     
    steban
    1c++ developer
    Отсутствует


    #define sizeof(x) rand()

    Сообщений: 787
    Зарегистрирован: 19. Мая 2006
    Пол: Мужской
    Re: v7lua.dll - ВК для интеграции 1С и Lua
    Ответ #88 - 18. Июля 2008 :: 20:04
    Печать  
    Файл Lexer.lua был взят отсюда и чуток подредактирован.
    lua.lua взят отсюда и включен без изменений.
    Эти файлы - часть проекта Scite-st (это форк проекта Scite).
    Список лексеров, доступных в SCite-st, можно посмотреть тут
    Цитата:
    actionscript ada antlr apdl applescript asp awk batch boo container cpp csharp css d diff django eiffel erlang errorlist forth fortran gap gettext gnuplot groovy haskell html idl ini io java javascript latex lisp lua makefile mysql objective_c pascal php pike postscript props python ragel rebol rhtml ruby scheme shellscript smalltalk tcl template vala verilog vhdl visualbasic xml


    Весь раскрашивающий код виден на предыдущем скрине.
    Для работы требуется RICHTEXT.RichtextCtrl.1

    Можно взять любой из доступных в Scite-st лексеров (например xml.lua), положить его в каталог скриптов, и изменив одну строчку кода:
    Код
    Выбрать все
    InitLexer('lua') 
    
    
    получить синтаксическую подсветку для другого языка.
    « Последняя редакция: 18. Июля 2008 :: 21:17 - steban »  

    int getRandomNumber()&&{&&  return 4; //chosen by fair dice roll&&         //guaranteed to be random&&}
    Наверх
     
    IP записан
     
    steban
    1c++ developer
    Отсутствует


    #define sizeof(x) rand()

    Сообщений: 787
    Зарегистрирован: 19. Мая 2006
    Пол: Мужской
    Re: v7lua.dll - ВК для интеграции 1С и Lua
    Ответ #89 - 18. Июля 2008 :: 21:42
    Печать  
    В данной реализации самая неприятная фигня - это RichTextBox, у которого невозможно отключить перерисовку на время раскраски, у которого нет скроллбаров и который во время раскраски скроллит текст в окне к месту, которое изменяется. Печаль
    Время выполнения лексического анализа для маленьких файлов даже не удается измерить (т.е. меньше 1 мс).
    LPeg весьма быстр. При том, что и довольно прост в использовании.

    Где бы найти нормальный контрол для этих целей?
    Многое от него не нужно: он должен уметь редактировать текст, раскрашивать разные фрагменты текста и отключать перерисовку на время обновления.
    Еще желательно бы, чтобы он умел сообщать номер первой и последней строки, видимой на экране.

    Я бы даже попробовал написать Lpeg-лексер для 1С и SQL
      

    int getRandomNumber()&&{&&  return 4; //chosen by fair dice roll&&         //guaranteed to be random&&}
    Наверх
     
    IP записан
     
    Переключение на Главную Страницу Страницы: 1 ... 4 5 [6] 7 8 
    ОтправитьПечать