parent
9084557760
commit
1ed266f959
BIN
CommKrnl.dll
BIN
CommKrnl.dll
Binary file not shown.
BIN
MathKrnl.dll
BIN
MathKrnl.dll
Binary file not shown.
BIN
TSCrypt.dll
BIN
TSCrypt.dll
Binary file not shown.
Binary file not shown.
BIN
TSLInterp.dll
BIN
TSLInterp.dll
Binary file not shown.
BIN
TSLPlugin.dll
BIN
TSLPlugin.dll
Binary file not shown.
BIN
TSSVRAPI.DLL
BIN
TSSVRAPI.DLL
Binary file not shown.
|
|
@ -758,6 +758,10 @@ type teditorform = class(TVCform) //
|
|||
if not it then return ;
|
||||
if o.Checked then return ;
|
||||
case o.Caption of
|
||||
c_e_none:
|
||||
begin
|
||||
it.currentcodeisnone();
|
||||
end
|
||||
c_e_ansi:
|
||||
begin
|
||||
it.CurrentcodeIsAnsi();
|
||||
|
|
|
|||
|
|
@ -1441,9 +1441,16 @@ type TPageEditerItem=class(TPageItem)
|
|||
FEnCode := "ANSI";
|
||||
FLastversion := "";
|
||||
end
|
||||
function currentcodeisnone();
|
||||
begin
|
||||
if FEnCode="UTF8" then
|
||||
begin
|
||||
FEnCode := "None";
|
||||
end
|
||||
end
|
||||
function CurrentCodeIsUtf8();
|
||||
begin
|
||||
if FEnCode="ANSI" then
|
||||
if FEnCode="ANSI" or FEnCode="None" then
|
||||
begin
|
||||
s := FEditer.Text;
|
||||
try
|
||||
|
|
|
|||
|
|
@ -281,7 +281,7 @@ type ctslctrans = class(tmemoryclass)
|
|||
ret := 1;
|
||||
end
|
||||
end
|
||||
"short":
|
||||
"short","word":
|
||||
begin
|
||||
if ifnumber(v)then
|
||||
begin
|
||||
|
|
@ -289,7 +289,7 @@ type ctslctrans = class(tmemoryclass)
|
|||
ret := 1;
|
||||
end
|
||||
end
|
||||
"shortarray":
|
||||
"shortarray","wordarray":
|
||||
begin
|
||||
if arraynumberchek(v)and length(v)<= l then
|
||||
begin
|
||||
|
|
@ -570,14 +570,14 @@ type ctslctrans = class(tmemoryclass)
|
|||
o := _objs[i];
|
||||
o._setcptr_(tptr);
|
||||
end else
|
||||
if v1="userarray" then
|
||||
if v="userarray" then
|
||||
begin
|
||||
tptr := ptr+v3;
|
||||
o := _objs[i];
|
||||
o._setcptr_(tptr);
|
||||
end else
|
||||
begin
|
||||
_objs[v0]:= ptr+v3;
|
||||
_objs[i]:= ptr+v3;
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -657,11 +657,11 @@ type ctslctrans = class(tmemoryclass)
|
|||
begin
|
||||
ret := _tool.readbyte(p);
|
||||
end
|
||||
"short":
|
||||
"short","word":
|
||||
begin
|
||||
ret := _tool.readshort(p);
|
||||
end
|
||||
"shortarray":
|
||||
"shortarray","wordarray":
|
||||
begin
|
||||
ret := _tool.readshorts(p,l);
|
||||
end
|
||||
|
|
@ -2143,7 +2143,7 @@ begin
|
|||
end
|
||||
function is_validate_type(tp);
|
||||
begin
|
||||
return array("uint":1,"char":1,"float":1,"double":1,"int":1,"intptr":1,"pointer":1,"int64":1,"byte":1,"short":1,"char*":1,"user*":1,"long":1)[tp];
|
||||
return array("uint":1,"char":1,"float":1,"double":1,"int":1,"intptr":1,"pointer":1,"int64":1,"byte":1,"short":1,"char*":1,"user*":1,"long":1,"word":1,"dword":1)[tp];
|
||||
end
|
||||
function tslarraytocstructcalc(data,alim,bsi,ssize); //计算对其长度
|
||||
begin
|
||||
|
|
@ -2265,7 +2265,9 @@ begin
|
|||
ret1 := tslarraytocstructcalc(v,alim,npoint,sz);
|
||||
ret[i,2]:= ret1;
|
||||
end else
|
||||
raise "ÀàÐÍ´íÎó";
|
||||
begin
|
||||
raise ("ÀàÐÍ´íÎó:" $ tp1);
|
||||
end
|
||||
ret[i,3]:= npoint; //元素开始的地址
|
||||
ret[i,4]:= sz; //元素占用空间
|
||||
ret[i,6]:= size; //元素个数
|
||||
|
|
|
|||
|
|
@ -61,7 +61,7 @@ uses utslvclauxiliary,UVCPropertyTypesPersistence,utslvclbase;
|
|||
begin
|
||||
if not(o is class(tcomponent))then return array();
|
||||
t := o.classinfo;
|
||||
idx := getmsgd_Crc32(tostm(t))+"&&";
|
||||
idx := getmsgd_Crc32(tostm(t,0,1))+"&&";
|
||||
r := GetClassDigestB(idx);
|
||||
if ifarray(r)then return r;
|
||||
r := array();
|
||||
|
|
|
|||
|
|
@ -297,7 +297,7 @@ type tcontrol = class(tcomponent)
|
|||
}
|
||||
if not(o is class(tcontrol))then return array();
|
||||
t := o.classinfo;
|
||||
idx := getmsgd_Crc32(tostm(t))+"%%";
|
||||
idx := getmsgd_Crc32(tostm(t,0,1))+"%%";
|
||||
r := CtlInfoAndDigest(idx);
|
||||
if ifarray(r)then return r;
|
||||
r := array();
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -51,6 +51,7 @@ function TS_ExecPath():string;
|
|||
function TS_GetAppPath():string;
|
||||
function TS_GetIniPath(t:integer;iname:string):string;
|
||||
function gettslexefullpath();
|
||||
function int_to_binary(d,n); //整数转换成字符串
|
||||
//function tsl_str_head_at(s,n);
|
||||
function get_tsl_mem_ptr(s,n);
|
||||
type tuiglobaldata=class() //全局对象存储
|
||||
|
|
@ -3626,7 +3627,7 @@ begin
|
|||
@return(string) 16进制字符串 %%
|
||||
**}
|
||||
r := "";
|
||||
str := tostm(t);
|
||||
str := tostm(t,0,1);
|
||||
ky := static(inttostr(0 -> 9)union array("A","B","C","D","E","F"));
|
||||
idx := 1;
|
||||
setlength(r,length(str)* 2);
|
||||
|
|
@ -3994,6 +3995,31 @@ function TS_ModulePath():string;cdecl;external {$ifdef linux}"libTSSVRAPI.so"{$
|
|||
function TS_ExecPath():string;cdecl;external {$ifdef linux}"libTSSVRAPI.so"{$else}"TSSVRAPI.dll"{$endif} name "TS_ExecPath";
|
||||
function TS_GetAppPath():string;cdecl;external {$ifdef linux}"libTSSVRAPI.so"{$else}"TSSVRAPI.dll"{$endif} name "TS_GetAppPath";
|
||||
function TS_GetIniPath(t:integer;iname:string):string;cdecl;external {$ifdef linux}"libTSSVRAPI.so"{$else}"TSSVRAPI.dll"{$endif} name "TS_GetIniPath";
|
||||
function int_to_binary(d,n); //整数转换成字符串
|
||||
begin
|
||||
r := "";
|
||||
x := d;
|
||||
ct := 0;
|
||||
if not(n>1)then n := 8;
|
||||
while x>0 do
|
||||
begin
|
||||
divmod(x,2,a,b);
|
||||
r := inttostr(b)+r;
|
||||
x := a;
|
||||
ct++;
|
||||
if ct >= n then break;
|
||||
end
|
||||
if ct=0 then
|
||||
begin
|
||||
ct := 1;
|
||||
r := "0";
|
||||
end
|
||||
for i := ct to n-1 do
|
||||
begin
|
||||
r := "0"+r;
|
||||
end
|
||||
return r;
|
||||
end
|
||||
function istextascii(s); //ansi编码
|
||||
begin
|
||||
len := length(s);
|
||||
|
|
|
|||
|
|
@ -1480,9 +1480,10 @@ type tg_axes = class(tg_base) //
|
|||
begin
|
||||
return ;
|
||||
end
|
||||
function gs_auto_ticks(idx,v);//自动更新坐标标签
|
||||
function gs_auto_ticks(vidx,v);//自动更新坐标标签
|
||||
begin
|
||||
tg_boolen_value(v,nv);
|
||||
idx := tg_get_true_idx(vidx);
|
||||
if nv=tgc_on or nv=tgc_off then
|
||||
begin
|
||||
if idx in array(0,1,2) then
|
||||
|
|
@ -1501,8 +1502,9 @@ type tg_axes = class(tg_base) //
|
|||
return fauto_ticks;
|
||||
end
|
||||
end
|
||||
function get_axises(idx);
|
||||
function get_axises(vidx);
|
||||
begin
|
||||
idx := tg_get_true_idx(vidx);
|
||||
if idx in array(0,1,2) then
|
||||
begin
|
||||
return faxes_objects[idx];
|
||||
|
|
@ -1524,8 +1526,9 @@ type tg_axes = class(tg_base) //
|
|||
return faxes_bounds;
|
||||
end
|
||||
end
|
||||
function gs_data_bounds(idx,v);
|
||||
function gs_data_bounds(vidx,v);
|
||||
begin
|
||||
idx := tg_get_true_idx(vidx);
|
||||
if v=-1 then
|
||||
begin
|
||||
if idx in array(0,1,2) then
|
||||
|
|
@ -1547,8 +1550,9 @@ type tg_axes = class(tg_base) //
|
|||
return fdata_bounds;
|
||||
end
|
||||
end
|
||||
function gs_zoom_box(idx,v);
|
||||
function gs_zoom_box(vidx,v);
|
||||
begin
|
||||
idx := tg_get_true_idx(vidx);
|
||||
if ifarray(v) and ifnumber(v[0]) and ifnumber(v[1]) then
|
||||
begin
|
||||
if idx in array(0,1,2) then
|
||||
|
|
@ -1562,9 +1566,10 @@ type tg_axes = class(tg_base) //
|
|||
return fzoom_box;
|
||||
end
|
||||
end
|
||||
function gs_axes_reverse(idx,v); //反向
|
||||
function gs_axes_reverse(vidx,v); //反向
|
||||
begin
|
||||
if not tg_boolen_value(v,nv) then return ;
|
||||
idx := tg_get_true_idx(vidx);
|
||||
if nv=tgc_off or nv=tgc_on then
|
||||
begin
|
||||
if idx in array(0,1) then
|
||||
|
|
@ -1594,8 +1599,9 @@ type tg_axes = class(tg_base) //
|
|||
return fmargins;
|
||||
end
|
||||
end
|
||||
function gs_sub_ticks(idx,v); //小刻度线
|
||||
function gs_sub_ticks(vidx,v); //小刻度线
|
||||
begin
|
||||
idx := tg_get_true_idx(vidx);
|
||||
if ifnumber(v) and (v>=0) then
|
||||
begin
|
||||
if idx in array(0,1,2) then
|
||||
|
|
@ -3450,6 +3456,10 @@ type tg_base = class(TNode,tg_const) //
|
|||
vi.paint(cvs);
|
||||
end
|
||||
end
|
||||
function hit_at(xy);virtual;
|
||||
begin
|
||||
return false;
|
||||
end
|
||||
function set_lineinfo_to_canvas(cvs,info);
|
||||
begin
|
||||
if info is class(tg_line_info) then li := info;
|
||||
|
|
@ -3485,6 +3495,18 @@ type tg_base = class(TNode,tg_const) //
|
|||
cvs.font.bkcolor := fi.bkcolor;
|
||||
cvs.font.width := fi.size;
|
||||
cvs.font.height := fi.size*2;
|
||||
end
|
||||
function addEventListener(evtype,fn,ifCapture);
|
||||
begin
|
||||
|
||||
end
|
||||
function removeEventListener(evtype,fn,ifCapture);
|
||||
begin
|
||||
|
||||
end
|
||||
function dispatchEvent(evt); //分发
|
||||
begin
|
||||
|
||||
end
|
||||
published
|
||||
property line_mode read fline_mode write set_line_mode;
|
||||
|
|
@ -3657,9 +3679,110 @@ type tg_const = class()
|
|||
//static const tgc_out_lower_left = "out_lower_left";
|
||||
//////////////
|
||||
end
|
||||
type tg_evt =class() //消息
|
||||
function create(etype,pms);
|
||||
begin
|
||||
feventtype := etype;
|
||||
ftimeStamp := mtic;
|
||||
fisTrusted := false;
|
||||
feventPhase := 0;
|
||||
freturnValue := true;
|
||||
fdefaultPrevented := false;
|
||||
fbubbles := true;
|
||||
FstopImmediatePropagationed := false;
|
||||
if not ifarray(pms) then return ;
|
||||
fiparams := pms;
|
||||
fisTrusted := pms["istrusted"]?true:false;
|
||||
ftarget := pms["target"];
|
||||
fcurrentTarget := pms["currenttarget"];
|
||||
fbubbles := pms["bubbles"]?true:false;
|
||||
feventPhase := (pms["eventphase"]>0)?pms["eventphase"]:0;
|
||||
end
|
||||
function preventdefault();
|
||||
begin
|
||||
fdefaultPrevented := true;
|
||||
end
|
||||
function stoppropagation();
|
||||
begin
|
||||
fstoppropagationed := true;
|
||||
end
|
||||
function composedPath();//从触发元素到最外层Window
|
||||
begin
|
||||
return array();
|
||||
end
|
||||
function stopImmediatePropagation();
|
||||
begin
|
||||
FstopImmediatePropagationed := true;
|
||||
end
|
||||
published
|
||||
property bubbles read fbubbles; //是否冒泡,只读
|
||||
property currentTarget read fcurrentTarget;//当前绑定的对象,只读
|
||||
property target read ftarget;//目标对象,只读
|
||||
property stoppropagationed read fstoppropagationed;//是否已经调用 stoppropagation,只读
|
||||
property defaultPrevented read fdefaultPrevented;//是否已经调用 preventdefault,只读
|
||||
property returnValue read freturnValue write freturnValue;//true表示正常执行,false表示阻止默认行为
|
||||
property eventPhase read feventPhase;//只读,0,1,捕获,2到达目标,3,冒泡
|
||||
property timeStamp read ftimeStamp;//只读,加载完成到现在的时间
|
||||
property eventtype read feventtype;//只读类型
|
||||
property isTrusted read fisTrusted;//true表示用户触发,false表示代码触发
|
||||
property init_params read fiparams; //初始化参数
|
||||
private
|
||||
feventtype;
|
||||
ftimeStamp;
|
||||
fisTrusted;
|
||||
feventPhase;
|
||||
freturnValue;
|
||||
fdefaultPrevented;
|
||||
fstoppropagationed;
|
||||
ftarget;
|
||||
fbubbles;
|
||||
fcurrentTarget;
|
||||
FstopImmediatePropagationed;
|
||||
fiparams;
|
||||
end
|
||||
type tg_evt_mouse = class(tg_evt) //鼠标消息
|
||||
function create(etyp,pms);
|
||||
begin
|
||||
inherited;
|
||||
if ifarray(pms) then
|
||||
begin
|
||||
fcvsx := pms["cvsx"];
|
||||
fcvsy := pms["cvsy"];
|
||||
end
|
||||
end
|
||||
property cvsx read fcvsx;
|
||||
property cvsy read fcvsy;
|
||||
private
|
||||
fcvsx;
|
||||
fcvsy;
|
||||
end
|
||||
type tg_evt_custom = class(tg_evt) //自定义消息
|
||||
function create(etyp,pms);
|
||||
begin
|
||||
inherited;
|
||||
fdetail := array();
|
||||
if ifarray(pms) then fdetail := pms["detail"];
|
||||
end
|
||||
property detail read fdetail;
|
||||
private
|
||||
fdetail;
|
||||
end
|
||||
implementation
|
||||
|
||||
|
||||
function node_hit_at(nd,info); //命中处理
|
||||
begin
|
||||
if not(nd.visible) then return 0;
|
||||
nct := nd.NodeCount;
|
||||
if nct>0 then
|
||||
begin
|
||||
for i := nd.NodeCount-1 downto 0 do
|
||||
begin
|
||||
hnod := node_hit_at(nd.GetNodeByIndex(i),info) ;
|
||||
if hnod then return hnod;
|
||||
end
|
||||
end
|
||||
if nd.hit_at(info) then return nd;
|
||||
return 0;
|
||||
end
|
||||
function mg_bds(bds,d); //ºÏ²¢Êý¾ÝÉÏϽç
|
||||
begin
|
||||
d[0,0] := min(bds[0,0],d[0,0]);
|
||||
|
|
@ -4091,6 +4214,16 @@ function rec_to_points(rec);
|
|||
begin
|
||||
return array(rec[array(0,1)],rec[array(2,1)],rec[array(2,3)],rec[array(0,3)],rec[array(0,1)]);
|
||||
end
|
||||
function tg_get_true_idx(idx);
|
||||
begin
|
||||
nidx := idx;
|
||||
case idx of
|
||||
"x","X": nidx := 0;
|
||||
"y","Y": nidx := 1;
|
||||
"z","Z": nidx := 2;
|
||||
end ;
|
||||
return nidx;
|
||||
end
|
||||
////////////////////////////////////////
|
||||
initialization
|
||||
finalization
|
||||
|
|
|
|||
|
|
@ -666,9 +666,9 @@ type twindowsapi = class()
|
|||
function ImageList_ReplaceIcon(himl:pointer;i:integer;hicon:pointer):integer;stdcall;external "Comctl32.dll" name "ImageList_ReplaceIcon";
|
||||
function ImageList_SetIconSize(himl:pointer;cx:integer;cy:integer):integer;stdcall;external "Comctl32.dll" name "ImageList_SetIconSize";
|
||||
function ImageList_GetIconSize(himl:pointer;var cx:integer;var cy:integer):integer;stdcall;external "Comctl32.dll" name "ImageList_GetIconSize";
|
||||
function ImageList_GetIcon(himl:pointer;i:integer;flags:integer):pointer;stdcall;external "Comctl32.dll" name "ImageList_GetIcon";
|
||||
function ImageList_DrawIndirect(pimldp:pointer):pointer;stdcall;external "Comctl32.dll" name "ImageList_DrawIndirect";
|
||||
function ImageList_DragShowNolock(fShow:integer):integer;stdcall;external "Comctl32.dll" name "ImageList_DragShowNolock";
|
||||
function ImageList_GetIcon(himl:pointer;i:integer;flags:integer):pointer;stdcall;external "Comctl32.dll" name "ImageList_GetIcon";
|
||||
function ImageList_DrawIndirect(pimldp:pointer):pointer;stdcall;external "Comctl32.dll" name "ImageList_DrawIndirect";
|
||||
function ImageList_DragShowNolock(fShow:integer):integer;stdcall;external "Comctl32.dll" name "ImageList_DragShowNolock";
|
||||
function InitCommonControlsEx(it:pointer):integer;stdcall;external "Comctl32.dll" name "InitCommonControlsEx";
|
||||
function Comctl32DllGetVersion(it:pointer):pointer;stdcall;external "Comctl32.dll" name "DllGetVersion";
|
||||
function GetOpenFileNameA(LPOPENFILENAMEA:pointer):integer;stdcall;external "Comdlg32.dll" name "GetOpenFileNameA" keepresident;
|
||||
|
|
|
|||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
protocol.dll
BIN
protocol.dll
Binary file not shown.
BIN
tsleditor.exe
BIN
tsleditor.exe
Binary file not shown.
BIN
tslkrnl.dll
BIN
tslkrnl.dll
Binary file not shown.
BIN
tslpcre.dll
BIN
tslpcre.dll
Binary file not shown.
27
whatsnew.txt
27
whatsnew.txt
|
|
@ -1,3 +1,28 @@
|
|||
更新日志--------2024-06-02
|
||||
修正:officeplugin的问题。
|
||||
修正:数据库连接采用JDBC驱动时在无主键sqltable插入时数据异常时的问题。
|
||||
升级:支持超大流的存在,支持tostm(x,0,2)模式(超级大流的紧缩模式),即允许超过1.9G模式。
|
||||
升级:新增超长binary类型,该类型目前仅在流生成以及流的文件写入等提供支持。新一代客户端提供对超长binary的支持。
|
||||
升级:支持超大结果集的返回以及超大执行体的执行(包含网格)。
|
||||
原有的最大流设定依旧生效,且作为缺省值,FileMgr.ini中新增如下设定覆盖该设定:
|
||||
[FileMgr Config]
|
||||
StrmLimited=19000
|
||||
;缺省值,单位为M
|
||||
[Strm Limited]
|
||||
user1=20480
|
||||
;指定用户,单位为M
|
||||
;如需要32位和64位问题,则可同时支持StrmLimited64和Strm Limited64来区分64位版本的独立设定。当前由于32位支持暂未继续支持新版本已无必要,但代码仍保留支持。
|
||||
升级:平台用户可以自主设定流的最大限额,终端用户的流限额保持原有不变。
|
||||
|
||||
更新日志--------2024-05-17
|
||||
升级:MATLAB 支持包,将采用matlab.dll.202xx来支持使用包括R2017b以上及各种未来新MATLAB版本,避免对新版本支持的升级。
|
||||
|
||||
更新日志--------2024-05-16
|
||||
升级:MATLAB 2024a及以上支持包,将采用matlab.dll.202xx来支持使用各种未来新MATLAB版本,避免对新版本支持的升级。
|
||||
|
||||
更新日志--------2024-04-30
|
||||
修订:04-26日版本修复,JDBC连接模式的功能Execsql执行中如果发生错误,将错误信息返回给输出结果集参数。
|
||||
|
||||
更新日志--------2024-04-26
|
||||
修订:JDBC连接模式的功能
|
||||
增加对ftBytes的支持
|
||||
|
|
@ -5,6 +30,8 @@
|
|||
Execsql执行中如果发生错误,将错误信息返回给result参数
|
||||
TS-SQL和ExecSql执行中如果发生错误,在TSL日志中增加连接串别名和SQL
|
||||
修订:SQLBeginTrans函数实现层支持JDBC连接模式options
|
||||
升级:tslsvr.ini增加CQ_MARKET的设置,允许配置哪些市场需要除权
|
||||
修正:event -job命令可能崩溃的问题
|
||||
|
||||
更新日志--------2024-04-25
|
||||
修订:特殊错误表达式导致的问题(正常使用不受影响)。
|
||||
|
|
|
|||
Loading…
Reference in New Issue