diff --git a/MathKrnl.dll b/MathKrnl.dll index 8ab8ef2..98c5891 100644 Binary files a/MathKrnl.dll and b/MathKrnl.dll differ diff --git a/TSCrypt.dll b/TSCrypt.dll index cde8cd6..630ee9a 100644 Binary files a/TSCrypt.dll and b/TSCrypt.dll differ diff --git a/TSLInterp.dll b/TSLInterp.dll index dd760fe..f7d6d93 100644 Binary files a/TSLInterp.dll and b/TSLInterp.dll differ diff --git a/TSLPlugin.dll b/TSLPlugin.dll index 1be395a..569cbb0 100644 Binary files a/TSLPlugin.dll and b/TSLPlugin.dll differ diff --git a/TSSVRAPI.DLL b/TSSVRAPI.DLL index 34e8286..d6d1cd5 100644 Binary files a/TSSVRAPI.DLL and b/TSSVRAPI.DLL differ diff --git a/TinyODBC.dll b/TinyODBC.dll index b39d2e8..6f25eb0 100644 Binary files a/TinyODBC.dll and b/TinyODBC.dll differ diff --git a/designer/gettslvcldesignerstart.tsf b/designer/gettslvcldesignerstart.tsf index a6837bb..34c153b 100644 --- a/designer/gettslvcldesignerstart.tsf +++ b/designer/gettslvcldesignerstart.tsf @@ -4,8 +4,18 @@ uses tslvcl,utslvclDesigner; deletefuncacheini(); isdebug := false; +willopen := ""; for i:= 0 to sysparamcount() do begin + if wait_filename then + begin + willopen := sysparamstr(i); + wait_filename := 0; + end else + if ("-tpj"=sysparamstr(i)) then + begin + wait_filename := true; + end else if ("-DEBUGSERVER" = sysparamstr(i)) then begin isdebug := true; @@ -20,6 +30,7 @@ end app := InitializeApplication(); app.createform(class(TVclDesignerStart),Desginer); Desginer.Show(); +if willopen then Desginer.OpenFileFromTpjFile(willopen); r := app.run(); return r; type TVclDesignerStart = class(TVclDesigner) //实现唯一的窗口 diff --git a/designer/teditorform.tsf b/designer/teditorform.tsf index 77fb318..1bb2dc1 100644 --- a/designer/teditorform.tsf +++ b/designer/teditorform.tsf @@ -366,11 +366,13 @@ type teditorform = class(TVCform) // begin it.caption := v; ite := new TMenu(self); - ite.caption := c_m_editor; - ite.Checked := true; + ite.caption := c_m_editor; ite.Parent := it; itb := new TMenu(self); itb.caption := c_m_exer; + global g_debug_chooser; + g_debug_chooser := c_m_exer; + itb.Checked := true; itb.Parent := it; itb._tag := ite; ite._tag := itb; @@ -1390,7 +1392,13 @@ type tsearchdir = class(TCustomControl) function Create(AOwner);override; begin inherited; + fcopyer := new TClipBoard(self); caption := "函数搜索目录:左侧为别名,右侧为-libpath目录...."; + fcpmenu := new TPopupmenu(self); + mui := new TMenu(self); + mui.caption := "复制目录"; + mui.Parent := fcpmenu; + mui.OnClick := thisfunction(copy_current_dirs); WsDlgModalFrame := true; WSSizebox := true; visible := false; @@ -1413,6 +1421,10 @@ type tsearchdir = class(TCustomControl) ls.Border := true; FLists[i] := ls; end + FLists[0].PopupMenu := fcpmenu; + FLists[0].OnPopupMenu := function(o,e)begin + if o.ItemIndex<0 then return e.skip; + end btrecs := array( array(124,3,144,25), array(124,206,144,230), @@ -1446,6 +1458,10 @@ type tsearchdir = class(TCustomControl) o.endmodal(0); end ; end + function copy_current_dirs(o,e); + begin + fcopyer.text := array2str(FLists[1].items,";"); + end function editkeyup(o,e); begin if e.CharCode = 13 then @@ -1608,6 +1624,8 @@ type tsearchdir = class(TCustomControl) FEdit; FLists; FBtns; + fcpmenu; + fcopyer; end private function GetIcon(); diff --git a/designer/utslcodeeditor.tsf b/designer/utslcodeeditor.tsf index c4b31e1..2491363 100644 --- a/designer/utslcodeeditor.tsf +++ b/designer/utslcodeeditor.tsf @@ -4265,7 +4265,12 @@ type TEditer=class(TCustomcontrol) // ft := str2array(ft,";"); end if not ft then ft := array("*"); - FindFiles(dir,ft,d["c_dir"],r); + for i,v in str2array(dir,";") do //多目录查找 + begin + tv := trim(v); + if tv then + FindFiles(tv,ft,d["c_dir"],r); + end return r; end function FindFiles(dir,ft,sub,ret); diff --git a/designer/utslsynmemo.tsf b/designer/utslsynmemo.tsf index 017bdb7..5f032c7 100644 --- a/designer/utslsynmemo.tsf +++ b/designer/utslsynmemo.tsf @@ -2206,13 +2206,17 @@ type TTsfFileParser = class() // function ParserFiles(dir,FFileNames,mf); begin dirs := FileList("",dir+fiofs+"*"); - for i,v in dirs do + for i,v in dirs do //解析文件 begin fn := v["FileName"] ; if not(pos("D",v["Attr"])) and (1=ParseRegExpr("\\.tsf$",fn,"i",m,mp,ml)) then //tsf文件处理 begin parserafile(dir,v); end + end + for i,v in dirs do //解析目录 + begin + fn := v["FileName"] ; if pos("D",v["Attr"]) and not( fn in array(".","..")) then //子目录查找 begin ParserFiles(dir+fiofs+fn,FFileNames,mf); diff --git a/designer/utslvcldebuger.tsf b/designer/utslvcldebuger.tsf index 32dd7c0..0217290 100644 --- a/designer/utslvcldebuger.tsf +++ b/designer/utslvcldebuger.tsf @@ -1425,12 +1425,13 @@ type TTslDebuga=class(TCustomControl) cnn := ""; for ii := 1 to length(cn) do begin - if cn[ii]in array(".",":")then + cni := cn[ii]; + if (cni = ".") or (cni = ":")then begin cn := cnn; break; end - cnn += cn[ii]; + cnn += cni; end f := FDebugtsfs[lowercase(cn)]; if not f then diff --git a/designer/utslvcldesigner.tsf b/designer/utslvcldesigner.tsf index 9dcd1ac..a195afc 100644 --- a/designer/utslvcldesigner.tsf +++ b/designer/utslvcldesigner.tsf @@ -318,21 +318,23 @@ type TVclDesigner = class(tvcform) public //设计器工程 ffilemenu; fviewmenu; - function OpenFileFromTpjFile(); //从文件打开工程 + function OpenFileFromTpjFile(f); //从文件打开工程 begin FProjectFileOpener.caption := "打开"; - if FProjectFileOpener.OpenDlg() then + + if not(ifstring(f)) and FProjectFileOpener.OpenDlg() then begin - f := FProjectFileOpener.FileName; - FProjectsManager.OpenFileFromTpjFile(f); - fio := ioFileseparator(); - for i := length(f) downto 2 do + f := FProjectFileOpener.FileName; + end + if not fileexists("",f) then return ; + FProjectsManager.OpenFileFromTpjFile(f); + fio := ioFileseparator(); + for i := length(f) downto 2 do + begin + if f[i]=fio then begin - if f[i]=fio then - begin - FProjectFileOpener.initialDir := f[1:(i-1)]; - break; - end + FProjectFileOpener.initialDir := f[1:(i-1)]; + break; end end end diff --git a/editor-install.exe b/editor-install.exe index 6ffa9db..23087c6 100644 Binary files a/editor-install.exe and b/editor-install.exe differ diff --git a/plugin/TSLCPLUGIN.DLL b/plugin/TSLCPLUGIN.DLL index 46257b5..f298826 100644 Binary files a/plugin/TSLCPLUGIN.DLL and b/plugin/TSLCPLUGIN.DLL differ diff --git a/plugin/office_plugin.DLL b/plugin/office_plugin.DLL index c9f6ac0..0a99b82 100644 Binary files a/plugin/office_plugin.DLL and b/plugin/office_plugin.DLL differ diff --git a/protocol.dll b/protocol.dll index 0d7def0..c8aaca2 100644 Binary files a/protocol.dll and b/protocol.dll differ diff --git a/tsleditor.exe b/tsleditor.exe index 8970d41..a1b1ce7 100644 Binary files a/tsleditor.exe and b/tsleditor.exe differ diff --git a/tslkrnl.dll b/tslkrnl.dll index 99a1136..b3da2b1 100644 Binary files a/tslkrnl.dll and b/tslkrnl.dll differ diff --git a/tslpcre.dll b/tslpcre.dll index e74cb87..671a6fc 100644 Binary files a/tslpcre.dll and b/tslpcre.dll differ diff --git a/tslvcltool.exe b/tslvcltool.exe index 8801949..83d8a31 100644 Binary files a/tslvcltool.exe and b/tslvcltool.exe differ diff --git a/whatsnew.txt b/whatsnew.txt index 9c006bf..d0b9de6 100644 --- a/whatsnew.txt +++ b/whatsnew.txt @@ -1,3 +1,17 @@ +更新日志--------2024-07-31 + 升级:office-lib。 + 优化: MedianOf,LargeOf,SmallOf,PercentileOf,PercentRankOf,QuartileOf,RankOf,TrimMeanOf对每行进行运算的效率问题。 + +更新日志--------2024-07-22 + 修正:7-19日升级引起的thashedstringlist工作异常的问题。 + 修正:7-19日升级的内核优化问题。 + +更新日志--------2024-07-19 + 升级:支持优化设置8返回系统类调用的优化信息。如果1+2+4+8 15为返回全部,之前7可以返回全部。 + 升级:支持tslassigning关键字,识别对象的读操作是否是在对象赋值中。例如a.b.c:=1,b的执行可以得到状态。 + 升级:TinyODBC/TSJDBC。 + 升级:内核优化。 + 更新日志--------2024-07-10 升级:支持缺省加载tslpkg目录里的*.pkg.load包。 升级:TSL命令行支持--build=模式下将无命名空间的函数打包成指定namespace的函数。理论上多套应用包括同名公共函数均可以采用此模式独立打包。