Ошибки из-за ужесточения проверки UTF-8 в строках

Здесь обсуждается всё, что касается макросов.
Post Reply
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Глюки и баги, появившиеся в «ночных сборках»

Post by buniak_a_h »

Только что обновился на версию 5580 x64. При старте ФАРа сразу получаю
На версии 5578 всё было ок.

Что-нить ещё надо для исправления?
P/S. Версия Far30b5579.x64.20200406.7z тоже стартует нормально.
Last edited by buniak_a_h on Sat 11 Apr, 2020 12:53, edited 2 times in total.
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Глюки и баги, появившиеся в «ночных сборках»

Post by Shmuel »

buniak_a_h wrote: Sat 11 Apr, 2020 12:44 Что-нить ещё надо для исправления?
Ради интереса - ваш файл CodePage.lua.
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Глюки и баги, появившиеся в «ночных сборках»

Post by buniak_a_h »

Shmuel wrote: Sat 11 Apr, 2020 12:54
buniak_a_h wrote: Sat 11 Apr, 2020 12:44 Что-нить ещё надо для исправления?
Ради интереса - ваш файл CodePage.lua.
  1. local BaxUtils = require"BAX.BaxUtils"
  2.  
  3. --local TabUtils = require"BAX.TabUtils"
  4.  
  5. local F=far.Flags
  6.  
  7. local tin=table.insert
  8.  
  9. local Info = package.loaded.regscript or function(...) return ... end
  10.  
  11. local CodePage_Setup
  12.  
  13. local nfo = Info {_filename or ...,
  14.  
  15.   name        = "CodePage";
  16.  
  17.   description = "Устанавливает кодовую страницу при открытии редактора и просмотровщика в зависимости от расширения файла";
  18.  
  19.   version     = "1.1.5"; --http://semver.org/lang/ru/
  20.  
  21.   author      = "BAX";
  22.  
  23.   url         = "";
  24.  
  25.   id          = "6409EA25-AA64-4749-9E30-BB4E9A936DD7";
  26.  
  27.   --parent_id   = "";
  28.  
  29.   --minfarversion = {3,0,0,4744,0};
  30.  
  31.   --files       = "*.cfg;*.ru.lng";
  32.  
  33.   --config      = function()  end
  34.  
  35.   --help        = function(nfo,name) end;
  36.  
  37.   --execute     = function(nfo,name) end;
  38.  
  39.  
  40.  
  41.   --disabled    = false;
  42.  
  43.   --options     = {};
  44.  
  45. }
  46.  
  47. if not nfo then return end
  48.  
  49. -----------------------------------------------------------------------------
  50.  
  51. local CpList={}
  52.  
  53.  
  54.  
  55. local DialogItem=BaxUtils.DialogItem
  56.  
  57. local SetingKey={Author='BAX'; Key='Codepages'}
  58.  
  59. local Settings0 =
  60.  
  61.       {
  62.  
  63.        {Mask="*.lua,*.fml,*.fmlua,*.lua.*,*.fb2"; Editor=true; Viewer=true; OnlyNew=false; Cp=65001};
  64.  
  65.        {Mask="*.bat,*.cmd,*.prg,*.ch"; Editor=true; Viewer=true; OnlyNew=true; Cp=866};
  66.  
  67.       }
  68.  
  69. local Settings = mf.mload(SetingKey.Author, SetingKey.Key) or Settings0
  70.  
  71. CodePage_Setup = function ()
  72.  
  73.   -- Составляю список доступных кодировок
  74.  
  75.   if not next(CpList) then
  76.  
  77.     CpList={}
  78.  
  79.     local cpl, maxl=win.EnumSystemCodePages(), 0
  80.  
  81.     table.sort(cpl, function(a1,a2) maxl = math.max(maxl, a1:len(), a2:len()); return tonumber(a1) <= tonumber(a2) end)
  82.  
  83.     local formatStr=('%%-%ds │ %%s'):format(maxl)
  84.  
  85.     for _,v in ipairs(cpl) do
  86.  
  87.       tin(CpList, {Text=formatStr:format(v, (win.GetCPInfo(tonumber(v)) or {CodePageName=(' '):rep(6)..'<Page='..v..'>'}).CodePageName:sub(7)); Source=v})
  88.  
  89.     end
  90.  
  91.   end
  92.  
  93.   ------------------
  94.  
  95.   local DlgItems, y={}, 1
  96.  
  97.   local function Add(Arg) tin(DlgItems, DialogItem(Arg)) end
  98.  
  99.   local function AddP(Arg) Add(Arg); y=y+1 end
  100.  
  101.   local w=math.floor(math.min(200, Far.Width*0.8))
  102.  
  103.   local wList = math.min(math.floor((w-5)/2),50)
  104.  
  105.   local aPos={}
  106.  
  107.   Add{"DI_DOUBLEBOX",0,0,w-1,0,Text="Установка кодовой страницы - настройка"}
  108.  
  109.   y = y + 1
  110.  
  111.   local List={}
  112.  
  113.   for _,v in ipairs(Settings) do
  114.  
  115.    tin(List, {Text=v.Mask})
  116.  
  117.   end
  118.  
  119.   Add{"DI_DOUBLEBOX", 2,y,wList+1,y+5, Flags="", Text=" &1. Маски файлов "}
  120.  
  121.   Add{"DI_LISTBOX", 3,y+1,wList,y+4, Flags="DIF_LISTNOBOX", List=List}; aPos.List=#DlgItems
  122.  
  123.   Add{"DI_BUTTON",3,y+6,Flags="DIF_BTNNOCLOSE|DIF_NOBRACKETS", Text="Add"}; aPos.Add=#DlgItems
  124.  
  125.   Add{"DI_BUTTON",7,y+6,Flags="DIF_BTNNOCLOSE|DIF_NOBRACKETS", Text="Del"}; aPos.Del=#DlgItems
  126.  
  127.   Add{"DI_BUTTON",11,y+6,Flags="DIF_BTNNOCLOSE|DIF_NOBRACKETS", Text="F4"}; aPos.F4=#DlgItems
  128.  
  129.   AddP{"DI_SINGLEBOX",wList+3,y,w-2,y+6; Text="&2. Кодовая страница"}
  130.  
  131.   AddP{"DI_COMBOBOX", wList+5, y,w-4, Flags="DIF_SELECTONENTRY", List=CpList}; aPos.Cp=#DlgItems
  132.  
  133.   AddP{"DI_CHECKBOX", wList+5, y,w-4, Text="Добавить BOM"}; aPos.BOM=#DlgItems
  134.  
  135.   --AddP{"DI_TEXT",math.floor(wList+(w-wList-15)/2),y,-1,y,Text="Использовать в:"}
  136.  
  137.   AddP{"DI_TEXT",wList+9,y,-1,y,Text="Использовать в:"}
  138.  
  139.   do
  140.  
  141.   local txt1,txt2='редакторе','(только в новом)'
  142.  
  143.   local x1=wList+5
  144.  
  145.   local x2 = x1 + txt1:len() + 5
  146.  
  147.   Add{"DI_CHECKBOX",x1,y,txt1:len(),y,Text=txt1}; aPos.Editor=#DlgItems
  148.  
  149.   AddP{"DI_CHECKBOX",x2,y,x2,y,Text=txt2}; aPos.OnlyNew=#DlgItems
  150.  
  151.   end
  152.  
  153.   do
  154.  
  155.   local txt="вьюере"
  156.  
  157.   local x1=(wList+5) -- + math.ceil((w-txt:len()-4)/2+0.5)
  158.  
  159.   Add{"DI_CHECKBOX",x1,y,x1+txt:len()+5,y,Flags="DIF_CENTERTEXT",Text=txt}; aPos.Viewer=#DlgItems
  160.  
  161.   end
  162.  
  163.   y = y + 3
  164.  
  165.   Add{"DI_BUTTON",-1,y,-1,y,Flags="DIF_CENTERGROUP|DIF_DEFAULTBUTTON",Text="Ok"}; aPos.Ok = #DlgItems
  166.  
  167.   Add{"DI_BUTTON",-1,y,-1,y,Flags="DIF_CENTERGROUP",Text="Cancel"}
  168.  
  169.   local h = y + 2
  170.  
  171.   do
  172.  
  173.   local first=DlgItems[1]
  174.  
  175.   first.y2=h-1
  176.  
  177.   DlgItems[1] = DialogItem(first)
  178.  
  179.   end
  180.  
  181.   local LastPos={TopPos=1, SelectPos=1}
  182.  
  183.   local function DlgProc(hDlg, Msg, Param1, Param2)
  184.  
  185.     local function Save(iPos)
  186.  
  187.       local Setting1 = Settings[iPos]
  188.  
  189.       if Setting1 then
  190.  
  191.         local _Cp=hDlg:send("DM_GETTEXT", aPos.Cp)
  192.  
  193.         if tonumber(_Cp) then
  194.  
  195.          Setting1.Cp = tonumber(_Cp)
  196.  
  197.         end
  198.  
  199.         Setting1.Editor = hDlg:send("DM_GETCHECK", aPos.Editor)==1
  200.  
  201.         Setting1.BOM    = hDlg:send("DM_GETCHECK", aPos.BOM)==1
  202.  
  203.         Setting1.OnlyNew = hDlg:send("DM_GETCHECK", aPos.OnlyNew)==1
  204.  
  205.         Setting1.Viewer = hDlg:send("DM_GETCHECK", aPos.Viewer)==1
  206.  
  207.       end
  208.  
  209.     end
  210.  
  211.     local bCont, bFirst=true, false
  212.  
  213.     while bCont do
  214.  
  215.       bCont = false
  216.  
  217.       if Msg == F.DN_INITDIALOG then
  218.  
  219.         hDlg:send(F.DM_LISTGETCURPOS, aPos.List, {SelectPos=1})
  220.  
  221.         Msg = F.DN_LISTCHANGE
  222.  
  223.         Param1 = aPos.List
  224.  
  225.         Param2 = 1
  226.  
  227.         bCont = true
  228.  
  229.         bFirst = true
  230.  
  231.       elseif Msg == F.DN_LISTCHANGE then
  232.  
  233.         if not bFirst then
  234.  
  235.           local iPos=hDlg:send("DM_LISTGETCURPOS", aPos.List).SelectPos
  236.  
  237.           Save(iPos)
  238.  
  239.         end
  240.  
  241.         bFirst = false
  242.  
  243.         local Setting1 = Settings[Param2]
  244.  
  245.         if Setting1 then
  246.  
  247.           hDlg:send("DM_SETTEXT", aPos.Cp, Setting1.Cp)
  248.  
  249.           hDlg:send("DM_SETCHECK", aPos.BOM, Setting1.BOM and 1 or 0)
  250.  
  251.           hDlg:send("DM_SETCHECK", aPos.Editor, Setting1.Editor and 1 or 0)
  252.  
  253.           hDlg:send("DM_SETCHECK", aPos.OnlyNew, Setting1.OnlyNew and 1 or 0)
  254.  
  255.           hDlg:send("DM_ENABLE", aPos.OnlyNew, Setting1.Editor and 1 or 0)
  256.  
  257.           hDlg:send("DM_SETCHECK", aPos.Viewer, Setting1.Viewer and 1 or 0)
  258.  
  259.         else
  260.  
  261.           hDlg:send("DM_SETTEXT", aPos.Cp, '')
  262.  
  263.           hDlg:send("DM_SETCHECK", aPos.BOM, 0)
  264.  
  265.           hDlg:send("DM_SETCHECK", aPos.Editor, 1 )
  266.  
  267.           hDlg:send("DM_SETCHECK", aPos.OnlyNew, 0)
  268.  
  269.           hDlg:send("DM_ENABLE", aPos.OnlyNew, 1)
  270.  
  271.           hDlg:send("DM_SETCHECK", aPos.Viewer, 1)
  272.  
  273.         end
  274.  
  275.       elseif (Msg == F.DN_EDITCHANGE and Param1 == aPos.Cp) or
  276.  
  277.              (Msg == F.DN_DROPDOWNOPENED and Param1 == aPos.Cp and Param2 == 0) then
  278.  
  279.        local _Cp=hDlg:send("DM_GETTEXT", aPos.Cp)
  280.  
  281.        local _Cpm=_Cp:match('%d*')
  282.  
  283.        if _Cpm then
  284.  
  285.          hDlg:send("DM_SETTEXT", aPos.Cp, _Cpm)
  286.  
  287.        end
  288.  
  289.       elseif Msg == F.DN_BTNCLICK then
  290.  
  291.         if Param1 == aPos.Add then
  292.  
  293.           local Mask=far.InputBox('', 'Добавление группы', 'Введите маску файлов')
  294.  
  295.           if Mask then
  296.  
  297.             Save((hDlg:send("DM_LISTGETCURPOS", aPos.List)).SelectPos)
  298.  
  299.             tin(Settings,{Mask=Mask; Editor=true; Viewer=true, OnlyNew=false, Cp=''; BOM=false})
  300.  
  301.             hDlg:send("DM_LISTADDSTR", aPos.List, Mask)
  302.  
  303.             hDlg:send("DM_LISTSETCURPOS", aPos.List, {SelectPos=#Settings})
  304.  
  305.             hDlg:send("DM_SETFOCUS", aPos.Cp)
  306.  
  307.           end
  308.  
  309.         elseif Param1 == aPos.Del then
  310.  
  311.           local iPos=hDlg:send("DM_LISTGETCURPOS", aPos.List).SelectPos
  312.  
  313.           if Settings[iPos].Deleted then
  314.  
  315.             if far.Message("Восстановить настройку?", '', ';YesNo', 'w') == 1 then
  316.  
  317.               Settings[iPos].Deleted = false
  318.  
  319.               local CurrItem=hDlg:send("DM_LISTGETITEM", aPos.List, iPos)
  320.  
  321.               CurrItem.Index=iPos
  322.  
  323.               CurrItem.Flags=F.LIF_NONE
  324.  
  325.               hDlg:send("DM_LISTUPDATE", aPos.List, CurrItem)
  326.  
  327.               LastPos.SelectPos = iPos
  328.  
  329.               hDlg:send("DM_LISTSETCURPOS",aPos.List, {SelectPos=iPos+1})
  330.  
  331.             end
  332.  
  333.           else
  334.  
  335.             if far.Message("Удалить настройку?", '', ';YesNo', 'w') == 1 then
  336.  
  337.               Settings[iPos].Deleted = true
  338.  
  339.               local CurrItem=hDlg:send("DM_LISTGETITEM", aPos.List, iPos)
  340.  
  341.               CurrItem.Index=iPos
  342.  
  343.               CurrItem.Flags=F.LIF_GRAYED
  344.  
  345.               hDlg:send("DM_LISTUPDATE", aPos.List, CurrItem)
  346.  
  347.               hDlg:send("DM_LISTSETCURPOS",aPos.List, {SelectPos=iPos+1})
  348.  
  349.               LastPos = hDlg:send("DM_LISTGETCURPOS",aPos.List)
  350.  
  351.             end
  352.  
  353.           end
  354.  
  355.         elseif Param1 == aPos.F4 then
  356.  
  357.           local Mask=far.InputBox('', 'Редактирование группы', 'Введите маску файлов', nil, Settings[(hDlg:send("DM_LISTGETCURPOS", aPos.List)).SelectPos].Mask)
  358.  
  359.           if Mask then
  360.  
  361.             local iPos=hDlg:send("DM_LISTGETCURPOS", aPos.List).SelectPos
  362.  
  363.             Settings[iPos].Mask=Mask
  364.  
  365.             hDlg:send("DM_SETTEXT", aPos.List, Mask)
  366.  
  367.           end
  368.  
  369.         end
  370.  
  371.       elseif Msg == F.DN_CONTROLINPUT and
  372.  
  373.              Param2.EventType == F.KEY_EVENT then
  374.  
  375.         local Key=far.InputRecordToName(Param2)
  376.  
  377.         if Param1 == aPos.List then
  378.  
  379.           if Key == 'Ins' then
  380.  
  381.            Msg = F.DN_BTNCLICK
  382.  
  383.            Param1 = aPos.Add
  384.  
  385.            bCont = true
  386.  
  387.           elseif Key == 'Del' then
  388.  
  389.            Msg = F.DN_BTNCLICK
  390.  
  391.            Param1 = aPos.Del
  392.  
  393.            bCont = true
  394.  
  395.           elseif Key == 'F4' then
  396.  
  397.            Msg = F.DN_BTNCLICK
  398.  
  399.            Param1 = aPos.F4
  400.  
  401.            bCont = true
  402.  
  403.           elseif Key == 'Alt2' then
  404.  
  405.             hDlg:send("DM_SETFOCUS", aPos.Cp)
  406.  
  407.           end
  408.  
  409.         elseif Key == 'Alt1' then
  410.  
  411.           hDlg:send("DM_SETFOCUS", aPos.List)
  412.  
  413.         end
  414.  
  415.       elseif Msg == F.DN_KILLFOCUS and Param1 == aPos.List then
  416.  
  417.         LastPos = hDlg:send("DM_LISTGETCURPOS", Param1)
  418.  
  419.       elseif Msg == F.DN_GOTFOCUS and Param1 == aPos.List then
  420.  
  421.         hDlg:send("DM_LISTSETCURPOS", aPos.List, LastPos)
  422.  
  423.       elseif Msg == F.DN_CLOSE then
  424.  
  425.        Save((hDlg:send("DM_LISTGETCURPOS", aPos.List)).SelectPos)
  426.  
  427.       end -- case Msg
  428.  
  429.     end -- while bCont
  430.  
  431.   end -- DlgProc
  432.  
  433.   if far.Dialog(win.Uuid"5A39EBF9-4F29-49F2-902D-80F32110773E", -1,-1,w,h,nil,DlgItems,F.FDLG_SMALLDIALOG,DlgProc) == aPos.Ok then
  434.  
  435.     for i=#Settings,1,-1 do
  436.  
  437.       if Settings[i].Deleted then
  438.  
  439.         table.remove(Settings, i)
  440.  
  441.       end
  442.  
  443.     end
  444.  
  445.     mf.msave(SetingKey.Author, SetingKey.Key, Settings)
  446.  
  447.     --far.Message"Внимание!\n\2\nИзменения вступят в силу после перезагрузки макросов!"
  448.  
  449.   else
  450.  
  451.    Settings = mf.mload(SetingKey.Author, SetingKey.Key) or Settings0
  452.  
  453.   end
  454.  
  455. end -- CodePage_Setup
  456.  
  457. -----------------------------------------------------------------------------
  458.  
  459. local function PostMacroStr(cp)
  460.  
  461.  local NeedTab = not (Area.Viewer or Area.QView)
  462.  
  463.  if NeedTab then Keys"Tab" end
  464.  
  465.  Keys("ShiftF8")
  466.  
  467.  if Menu.Select(cp,1) > 0 then Keys("Enter") else Keys("Esc") end
  468.  
  469.  if NeedTab then Keys"Tab" end
  470.  
  471. end -- PostMacroStr
  472.  
  473. -----------------------------------------------------------------------------
  474.  
  475.  
  476.  
  477. for _,v in ipairs(Settings) do
  478.  
  479.   if v.Editor then
  480.  
  481.     local EventArg =
  482.  
  483.       {
  484.  
  485.         description="Set " .. v.Cp .. ' codepage for ' .. v.Mask;
  486.  
  487.         group="EditorEvent";
  488.  
  489.         filemask=v.Mask;
  490.  
  491.         action = function(_, Event)
  492.  
  493.           if Event == F.EE_READ then
  494.  
  495.             editor.SetParam(nil, F.ESPT_CODEPAGE, v.Cp)
  496.  
  497.             editor.SetParam(nil, F.ESPT_SETBOM, v.BOM)
  498.  
  499.             -- Прибамбас специально для BAX - начало {
  500.  
  501.             if Editor.FileName:sub(-4):lower()=='.lua' and
  502.  
  503.                not _G.BAX and
  504.  
  505.                mf.fexist(win.GetEnv("FARPROFILE") .. [[\Macros\scripts\Bax\Languages\LuaComplete.lua]]) and
  506.  
  507.                mf.fexist(win.GetEnv("FARPROFILE") .. [[\Macros\modules\BAX\init.lua]]) then
  508.  
  509.                require"BAX"
  510.  
  511.             end
  512.  
  513.             -- Прибамбас специально для BAX - конец }
  514.  
  515.           end
  516.  
  517.         end
  518.  
  519.       }
  520.  
  521.     if v.OnlyNew then
  522.  
  523.      EventArg.condition =
  524.  
  525.       function(_,Event)
  526.  
  527.         return Event == F.EE_READ and band(Editor.State,1) == 1
  528.  
  529.       end
  530.  
  531.     end
  532.  
  533.     Event(EventArg)
  534.  
  535.   end -- if v.Editor
  536.  
  537.   if v.Viewer then
  538.  
  539.     Event {
  540.  
  541.       description="Set " .. v.Cp .. " codepage for View " .. v.Mask;
  542.  
  543.       group="ViewerEvent";
  544.  
  545.       filemask=v.Mask;
  546.  
  547.       action=function(Id,Event,Param)
  548.  
  549.         if Event == far.Flags.VE_READ then
  550.  
  551.           --far.MacroPost(PostMacroStr(v.Cp))
  552.  
  553.           mf.postmacro(PostMacroStr, v.Cp)
  554.  
  555.         end
  556.  
  557.       end;
  558.  
  559.     }
  560.  
  561.   end -- if v.Viewer
  562.  
  563. end
  564.  
  565.  
  566.  
  567. if math.pi > 0 then nfo.config = CodePage_Setup; end -- Всё равно не работает
  568.  
  569. Macro{
  570.  
  571.   id=win.Uuid"1467FA0A-CE28-4346-9327-019FC07C42CD";
  572.  
  573.   area="Shell";
  574.  
  575.   key="CtrlShiftB-C";
  576.  
  577.   description="Настройка кодовых страниц";
  578.  
  579. --  filemask="";
  580.  
  581.   flags=""; -- DisableOutput RunAfterFARStart EmptyCommandLine NotEmptyCommandLine NoFilePanels NoFilePPanels NoPluginPanels NoPluginPPanels NoFolders NoPFolders NoFiles NoPFiles Selection PSelection NoSelection NoPSelection EVSelection NoEVSelection NoSendKeysToPlugins
  582.  
  583. --  priority=50;
  584.  
  585. --  sortpriority=50;
  586.  
  587. --  condition=function(key) return true end;
  588.  
  589.   action=CodePage_Setup;
  590.  
  591. }
  592.  
  593. --]===]
CodePage.lua.7z
(3.87 KiB) Downloaded 80 times
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Глюки и баги, появившиеся в «ночных сборках»

Post by Shmuel »

buniak_a_h wrote: Sat 11 Apr, 2020 13:01 CodePage.lua.7z
Уберите win.Uuid со строчки 286.
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Глюки и баги, появившиеся в «ночных сборках»

Post by buniak_a_h »

Shmuel wrote: Sat 11 Apr, 2020 12:54
buniak_a_h wrote: Sat 11 Apr, 2020 12:44 Что-нить ещё надо для исправления?
Ради интереса - ваш файл CodePage.lua.
Убрал этот файл -
Shmuel wrote: Sat 11 Apr, 2020 13:23
buniak_a_h wrote: Sat 11 Apr, 2020 13:01 CodePage.lua.7z
Уберите win.Uuid со строчки 286.
Уже - не помогло. См. выше.
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Глюки и баги, появившиеся в «ночных сборках»

Post by Shmuel »

buniak_a_h wrote: Sat 11 Apr, 2020 13:25
Shmuel wrote: Sat 11 Apr, 2020 13:23 Уберите win.Uuid со строчки 286.
Уже - не помогло. См. выше.
Я нашёл вам один баг. Следующие ищите сами.
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Глюки и баги, появившиеся в «ночных сборках»

Post by buniak_a_h »

Shmuel wrote: Sat 11 Apr, 2020 13:28 Я нашёл вам один баг. Следующие ищите сами.
Я вообще убрал "спорный" файл - не помогло. При чём тут я? Это был не баг. Ну, или баг, не имеющий принципиального значения.
Ладно. Чувствую, надо на Stand Alone варианте добавлять скрипты, пока не вылезет … Я надеялся, тот, кто внёс изменения, легко найдёт причину. Грустно…
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

Глюки и баги, появившиеся в «ночных сборках»

Post by Smitis »

Shmuel, Тоже получаю вылет "invalid UTF-8 code" в своём модуле DialogClass, на вызове метода match. Пока никак не могу минимизировать проблему.
Разум когда-нибудь победит.
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Глюки и баги, появившиеся в «ночных сборках»

Post by buniak_a_h »

Smitis, спасибо. А то как-то неучем себя чувствуешь … :-(
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Глюки и баги, появившиеся в «ночных сборках»

Post by Shmuel »

Господа, ну вы же взрослые. Ваш код на ваших машинах, неужели я должен искать ваши проблемы дистанционно?
Да, обновилась библиотека luautf8, очевидно новая версия более тщательно проверяет строки на валидность UTF-8.
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

Глюки и баги, появившиеся в «ночных сборках»

Post by Smitis »

Shmuel,
Shmuel wrote: Sat 11 Apr, 2020 13:48 Ваш код на ваших машинах, неужели я должен искать ваши проблемы дистанционно?
Нет, конечно. Я пытался вычленить проблему и написать минимальный тестовый скрипт. Пока не получилось. Вот полная версия. DialogClass.lua помещается в modules. Макросы из DescriptionEdit.lua заменяют CtrlZ.
Attachments
DescriptionEdit.7z
(8.1 KiB) Downloaded 77 times
Разум когда-нибудь победит.
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Глюки и баги, появившиеся в «ночных сборках»

Post by Shmuel »

Smitis, ну это та же самая проблема, что выше была указана. Вызывается self.Guid:match() в ситуации, когда self.Guid не является валидной UTF-8 строкой.

P.S. В данном конкретном случае можно вызывать string.match(self.Guid, ...)
Last edited by Shmuel on Sat 11 Apr, 2020 14:11, edited 1 time in total.
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

Глюки и баги, появившиеся в «ночных сборках»

Post by Smitis »

Shmuel wrote: Sat 11 Apr, 2020 14:00 self.Guid не является валидной UTF-8 строкой.
type(self.Guid) показывает тип string
Разум когда-нибудь победит.
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Глюки и баги, появившиеся в «ночных сборках»

Post by Shmuel »

Smitis wrote: Sat 11 Apr, 2020 14:15 type(self.Guid) показывает тип string
Не каждый стринг являетя валидным UTF-8. Я отредактировал своё сообщение выше, привёл способ починить данный случай.
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

Глюки и баги, появившиеся в «ночных сборках»

Post by Smitis »

Shmuel,
Да, спасибо, string.match работает. Вызывает беспокойство, что теперь обычная строка так вот запросто может перестать быть валидной...
Разум когда-нибудь победит.
Post Reply

Return to “Обсуждение макросов”