This commit is contained in:
parent
ab8b5bb6a5
commit
ef1986a030
BIN
CommKrnl.dll
BIN
CommKrnl.dll
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
BIN
MathKrnl.dll
BIN
MathKrnl.dll
Binary file not shown.
BIN
Mod_TSL24.dll
BIN
Mod_TSL24.dll
Binary file not shown.
BIN
PK_SQL.DLL
BIN
PK_SQL.DLL
Binary file not shown.
BIN
PK_SQL_MYSQL.DLL
BIN
PK_SQL_MYSQL.DLL
Binary file not shown.
BIN
PK_SQL_ODBC.DLL
BIN
PK_SQL_ODBC.DLL
Binary file not shown.
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.
Binary file not shown.
BIN
TSSVRAPI.DLL
BIN
TSSVRAPI.DLL
Binary file not shown.
|
|
@ -44,6 +44,7 @@ type teditorform = class(TVCform) //
|
||||||
const c_m_editor = "默认";
|
const c_m_editor = "默认";
|
||||||
const c_m_exer = "当前执行程序";
|
const c_m_exer = "当前执行程序";
|
||||||
const c_m_help = "帮助";
|
const c_m_help = "帮助";
|
||||||
|
const c_m_manu = "使用手册";
|
||||||
const c_m_tsl_help = "tsl语言帮助";
|
const c_m_tsl_help = "tsl语言帮助";
|
||||||
const c_m_about = "关于";
|
const c_m_about = "关于";
|
||||||
function WMACTIVATE(o,e):WM_ACTIVATE;override; //激活
|
function WMACTIVATE(o,e):WM_ACTIVATE;override; //激活
|
||||||
|
|
@ -400,7 +401,7 @@ type teditorform = class(TVCform) //
|
||||||
FHelpMenu := new TMenu(self);
|
FHelpMenu := new TMenu(self);
|
||||||
FHelpMenu.Caption := c_m_help;
|
FHelpMenu.Caption := c_m_help;
|
||||||
FHelpMenus := array();
|
FHelpMenus := array();
|
||||||
for i,v in array(c_m_tsl_help,c_m_about) do
|
for i,v in array(c_m_manu,c_m_tsl_help,c_m_about) do
|
||||||
begin
|
begin
|
||||||
vi := new TMenu(self);
|
vi := new TMenu(self);
|
||||||
vi.Caption := v;
|
vi.Caption := v;
|
||||||
|
|
@ -538,6 +539,10 @@ type teditorform = class(TVCform) //
|
||||||
function HelpClick(o,e);
|
function HelpClick(o,e);
|
||||||
begin
|
begin
|
||||||
case o.Caption of
|
case o.Caption of
|
||||||
|
c_m_manu:
|
||||||
|
begin
|
||||||
|
return FEdter.showeditorchm();
|
||||||
|
end
|
||||||
c_m_tsl_help:
|
c_m_tsl_help:
|
||||||
begin
|
begin
|
||||||
return FEdter.ShowTslLangChm();
|
return FEdter.ShowTslLangChm();
|
||||||
|
|
@ -1106,7 +1111,7 @@ type TBlockManager=class(TVCForm)
|
||||||
bi.parent := self;
|
bi.parent := self;
|
||||||
end
|
end
|
||||||
FList := new TListView(self);
|
FList := new TListView(self);
|
||||||
FList.Columns := array(("text":"ǰ׺","width":40),("text":"Ãû³Æ","width":130),("text":"Öµ","width":200),("text":"À©Õ¹","width":430));
|
FList.Columns := array(("text":"前缀","width":40),("text":"显示","width":130),("text":"提示关键字","width":200),("text":"插入代码块","width":430));
|
||||||
FList.ColumnAsBool(0);
|
FList.ColumnAsBool(0);
|
||||||
{
|
{
|
||||||
r := array();
|
r := array();
|
||||||
|
|
@ -1572,6 +1577,7 @@ type tdirviewer = class(tcustomcontrol)
|
||||||
addtoolbar();
|
addtoolbar();
|
||||||
fnodes := array();
|
fnodes := array();
|
||||||
FEdit := new tedit(self);
|
FEdit := new tedit(self);
|
||||||
|
FEdit.autosize := true;
|
||||||
FEdit.parent := self;
|
FEdit.parent := self;
|
||||||
FEdit.Align := alTop;
|
FEdit.Align := alTop;
|
||||||
FTree := new TTreeView(self);
|
FTree := new TTreeView(self);
|
||||||
|
|
|
||||||
|
|
@ -1752,10 +1752,15 @@ type TTslChmHelp=class()
|
||||||
begin
|
begin
|
||||||
if fapi then return fapi.open_chm((FTSLinterpPath+FChmName));
|
if fapi then return fapi.open_chm((FTSLinterpPath+FChmName));
|
||||||
end
|
end
|
||||||
|
function showeditorchm();
|
||||||
|
begin
|
||||||
|
if fapi then return fapi.open_chm((FTSLinterpPath+FeditorChmName));
|
||||||
|
end
|
||||||
function Create(p);
|
function Create(p);
|
||||||
begin
|
begin
|
||||||
fapi := p;
|
fapi := p;
|
||||||
FChmName := "help"$ioFileseparator()$"LANGUAGEGUIDE.CHM";
|
FChmName := "help"$ioFileseparator()$"LANGUAGEGUIDE.CHM";
|
||||||
|
FeditorChmName := "help"$ioFileseparator()$"EDITORGUIDE.CHM";
|
||||||
FTSLinterpPath := TS_ModulePath();
|
FTSLinterpPath := TS_ModulePath();
|
||||||
end
|
end
|
||||||
property ChmName read FChmName write FChmName;
|
property ChmName read FChmName write FChmName;
|
||||||
|
|
@ -1764,6 +1769,7 @@ type TTslChmHelp=class()
|
||||||
FTSLinterpPath;
|
FTSLinterpPath;
|
||||||
FHanle;
|
FHanle;
|
||||||
FChmName;
|
FChmName;
|
||||||
|
FeditorChmName;
|
||||||
end
|
end
|
||||||
|
|
||||||
type TEditer=class(TCustomcontrol) //관윅묏야으,榴檄으,渴놔,꿴冷
|
type TEditer=class(TCustomcontrol) //관윅묏야으,榴檄으,渴놔,꿴冷
|
||||||
|
|
@ -3735,6 +3741,10 @@ type TEditer=class(TCustomcontrol) //
|
||||||
begin
|
begin
|
||||||
FTslChmHelp.ShowTslLangChm();
|
FTslChmHelp.ShowTslLangChm();
|
||||||
end
|
end
|
||||||
|
function showeditorchm();
|
||||||
|
begin
|
||||||
|
FTslChmHelp.showeditorchm();
|
||||||
|
end
|
||||||
function InitShowWndPos(wnd,n,ix,iy,flg); //셕炬놓迦貫零
|
function InitShowWndPos(wnd,n,ix,iy,flg); //셕炬놓迦貫零
|
||||||
begin
|
begin
|
||||||
if flg or (not FFistShows[n])then
|
if flg or (not FFistShows[n])then
|
||||||
|
|
@ -4698,6 +4708,17 @@ type TEditerEchoWnd=class(TSynMemoNorm) //
|
||||||
ClearAll();
|
ClearAll();
|
||||||
AppendString("ctrl+z 界岺;ctrl+c 릿齡朞嶝\r\n");
|
AppendString("ctrl+z 界岺;ctrl+c 릿齡朞嶝\r\n");
|
||||||
end;
|
end;
|
||||||
|
fmcp := new TMenu(self);
|
||||||
|
fmcp.Caption := "¸´ÖÆ";
|
||||||
|
fmcp.parent := m;
|
||||||
|
fmcp.OnClick := function(o,e)
|
||||||
|
begin
|
||||||
|
self.ExecuteCommand(self.ecCopy);
|
||||||
|
end;
|
||||||
|
OnPopupMenu := function(o,e);
|
||||||
|
begin
|
||||||
|
if fmcp then fmcp.Enabled := SelAvail;
|
||||||
|
end
|
||||||
FProcess := new tcustomprocess(self);
|
FProcess := new tcustomprocess(self);
|
||||||
FProcess.OnEcho := thisfunction(TEchoToString);
|
FProcess.OnEcho := thisfunction(TEchoToString);
|
||||||
FProcess.onended := thisfunction(onprocend);
|
FProcess.onended := thisfunction(onprocend);
|
||||||
|
|
@ -4811,6 +4832,7 @@ type TEditerEchoWnd=class(TSynMemoNorm) //
|
||||||
FDoLockTime;
|
FDoLockTime;
|
||||||
F_Highlighter;
|
F_Highlighter;
|
||||||
private
|
private
|
||||||
|
[weakref]fmcp;
|
||||||
function format_build_params(d);
|
function format_build_params(d);
|
||||||
begin
|
begin
|
||||||
r := d["build"]+"="+format('"%s" ',d["buildfile"]);
|
r := d["build"]+"="+format('"%s" ',d["buildfile"]);
|
||||||
|
|
|
||||||
|
|
@ -1505,17 +1505,16 @@ type TxmlSynHighLighter = class(tcustomsynhighlighter)
|
||||||
end
|
end
|
||||||
function SetTToken(tokens,ttk,idx,ext);override;
|
function SetTToken(tokens,ttk,idx,ext);override;
|
||||||
begin
|
begin
|
||||||
st := ExecuteCommand("getcurrentpairstate",">");
|
|
||||||
st1 := st.state;
|
|
||||||
d := inherited;
|
d := inherited;
|
||||||
if not d then return ;
|
if not d then return ;
|
||||||
if st1=1 and st.state=1 then
|
st := ExecuteCommand("getcurrentpairstate",">");
|
||||||
|
if st then st1 := st.state;
|
||||||
|
if st1=1 {and st.state=1} then
|
||||||
begin
|
begin
|
||||||
st.subitemadd();
|
st.subitemadd();
|
||||||
if st.subitemcount()>1 then
|
if st.subitemcount()>1 then
|
||||||
begin
|
begin
|
||||||
|
|
||||||
|
|
||||||
end else
|
end else
|
||||||
begin
|
begin
|
||||||
|
|
||||||
|
|
@ -1532,7 +1531,7 @@ type TxmlSynHighLighter = class(tcustomsynhighlighter)
|
||||||
d.FFColor := sysfuncolor;
|
d.FFColor := sysfuncolor;
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end;
|
||||||
end
|
end
|
||||||
return d;
|
return d;
|
||||||
//echo "\r\n>>>",st1,"====",st2;
|
//echo "\r\n>>>",st1,"====",st2;
|
||||||
|
|
|
||||||
|
|
@ -720,12 +720,19 @@ type TTslDebuga=class(TCustomControl)
|
||||||
FShowText.Border := true;
|
FShowText.Border := true;
|
||||||
pmenu := new TPopUpMenu(self);
|
pmenu := new TPopUpMenu(self);
|
||||||
cmu := new TMenu(self);
|
cmu := new TMenu(self);
|
||||||
|
cmu2 := new TMenu(self);
|
||||||
cmu.OnClick := function(o,e)
|
cmu.OnClick := function(o,e)
|
||||||
begin
|
begin
|
||||||
FShowText.Text := "";
|
FShowText.Text := "";
|
||||||
end;
|
end;
|
||||||
cmu.Caption := "Çå³ý";
|
cmu.Caption := "Çå³ý";
|
||||||
|
cmu2.Caption := "¸´ÖÆ";
|
||||||
cmu.Parent := pmenu;
|
cmu.Parent := pmenu;
|
||||||
|
cmu2.Parent := pmenu;
|
||||||
|
cmu2.onClick := function(o,e)
|
||||||
|
begin
|
||||||
|
FShowText.ExecuteCommand(FShowText.ecCopy);
|
||||||
|
end
|
||||||
FShowText.PopUpMenu := pmenu;
|
FShowText.PopUpMenu := pmenu;
|
||||||
dbwnd.addwnds(FStackList,FVaraiblesList,FCommandtext,FShowText);
|
dbwnd.addwnds(FStackList,FVaraiblesList,FCommandtext,FShowText);
|
||||||
ExecuteCommand("clearall");
|
ExecuteCommand("clearall");
|
||||||
|
|
@ -2702,6 +2709,10 @@ type TGroupGridA=class(TDrawGrid)
|
||||||
o.Visible := false;
|
o.Visible := false;
|
||||||
callDatafunction(FCelledit,o._Tag,o.text);
|
callDatafunction(FCelledit,o._Tag,o.text);
|
||||||
end
|
end
|
||||||
|
VK_ESCAPE:
|
||||||
|
begin
|
||||||
|
o.Visible := false;
|
||||||
|
end
|
||||||
end;
|
end;
|
||||||
end
|
end
|
||||||
function SetNodeData(d,ncls); //ÉèÖÃÊý¾Ý
|
function SetNodeData(d,ncls); //ÉèÖÃÊý¾Ý
|
||||||
|
|
|
||||||
|
|
@ -579,11 +579,12 @@ type TVclDesigner = class(tvcform)
|
||||||
)),
|
)),
|
||||||
("type":"menu","caption":"帮助","items":(
|
("type":"menu","caption":"帮助","items":(
|
||||||
("type":"menu","caption":"关于","onclick":thisfunction(openabout)),
|
("type":"menu","caption":"关于","onclick":thisfunction(openabout)),
|
||||||
("type":"menu","caption":"使用手册","onclick":thisfunction(OpenHelp),
|
("type":"menu","caption":"使用手册","onclick":thisfunction(OpenHelp)),
|
||||||
|
("type":"menu","caption":"tsl语言","onclick":thisfunction(OpenHelp),
|
||||||
"bitmap":getmanubmpinfo()),
|
"bitmap":getmanubmpinfo()),
|
||||||
("type":"menu","caption":"控件详情","onclick":thisfunction(OpenHelp),
|
("type":"menu","caption":"控件详情","onclick":thisfunction(OpenHelp),
|
||||||
"bitmap":getctlsbmpinfo()),
|
"bitmap":getctlsbmpinfo()),
|
||||||
("type":"menu","caption":"范例..","onclick":thisfunction(OpenExaple),
|
("type":"menu","caption":"范例","onclick":thisfunction(OpenExaple),
|
||||||
"bitmap":getexamplesbmpinfo())
|
"bitmap":getexamplesbmpinfo())
|
||||||
),
|
),
|
||||||
|
|
||||||
|
|
@ -662,6 +663,10 @@ type TVclDesigner = class(tvcform)
|
||||||
FChmHelper := new unit(UtslCodeEditor).TTslChmHelp(_wapi);
|
FChmHelper := new unit(UtslCodeEditor).TTslChmHelp(_wapi);
|
||||||
end
|
end
|
||||||
case o.caption of
|
case o.caption of
|
||||||
|
"tsl语言":
|
||||||
|
begin
|
||||||
|
FChmHelper.ChmName := "help"$ioFileseparator()$"LANGUAGEGUIDE.CHM";
|
||||||
|
end
|
||||||
"使用手册":
|
"使用手册":
|
||||||
begin
|
begin
|
||||||
FChmHelper.ChmName := "help"$ioFileseparator()$"designerUserGuid.CHM";
|
FChmHelper.ChmName := "help"$ioFileseparator()$"designerUserGuid.CHM";
|
||||||
|
|
|
||||||
|
|
@ -1386,7 +1386,11 @@ type TTSLDataGrid=class(TDrawGrid)
|
||||||
function EditKeyPress(o,e);
|
function EditKeyPress(o,e);
|
||||||
begin
|
begin
|
||||||
k := e.wparam;
|
k := e.wparam;
|
||||||
if k=VK_ESCAPE or k=13 then
|
if k=VK_ESCAPE then
|
||||||
|
begin
|
||||||
|
o.visible := false;
|
||||||
|
end else
|
||||||
|
if k=13 then
|
||||||
begin
|
begin
|
||||||
info := o._tag;
|
info := o._tag;
|
||||||
if ifarray(info)then
|
if ifarray(info)then
|
||||||
|
|
@ -1525,6 +1529,10 @@ type TGridCellNaturalEdit = class(TGridPropertyRender,TPropertyNatural)
|
||||||
end
|
end
|
||||||
function EditKeyPress(o,e);virtual;
|
function EditKeyPress(o,e);virtual;
|
||||||
begin
|
begin
|
||||||
|
if VK_ESCAPE=e.wparam then
|
||||||
|
begin
|
||||||
|
o.visible := false;
|
||||||
|
end else
|
||||||
if 13 = e.wparam then
|
if 13 = e.wparam then
|
||||||
begin
|
begin
|
||||||
try
|
try
|
||||||
|
|
@ -1661,6 +1669,10 @@ type TGridCellStringEdit = class(TGridCellNaturalEdit)
|
||||||
end
|
end
|
||||||
function EditKeyPress(o,e);override;
|
function EditKeyPress(o,e);override;
|
||||||
begin
|
begin
|
||||||
|
if e.wparam=VK_ESCAPE then
|
||||||
|
begin
|
||||||
|
o.visible := false;
|
||||||
|
end else
|
||||||
if e.wparam <>13 then
|
if e.wparam <>13 then
|
||||||
begin
|
begin
|
||||||
end else inherited;
|
end else inherited;
|
||||||
|
|
|
||||||
Binary file not shown.
Binary file not shown.
|
After Width: | Height: | Size: 4.2 KiB |
|
|
@ -0,0 +1,31 @@
|
||||||
|
tsl语言本界面开发工具
|
||||||
|
版本:1.0.0
|
||||||
|
日期:2025-04-2
|
||||||
|
使用前请阅读<TSL语言许可权利和限制>
|
||||||
|
许可权利和限制
|
||||||
|
深圳市天软科技开发有限公司(以下简称天软)授予您使用程序的非排他性、不可转让、有限的许可,但必须遵守本协议和计划文档中规定的限制,仅限于在如下用途使用:
|
||||||
|
(I) 个人自用
|
||||||
|
(II) 开发用途
|
||||||
|
(III) 天软许可的产品中使用
|
||||||
|
(IV) 获得天软的独立商用许可后在商业用途中使用
|
||||||
|
被允许或禁止的行为
|
||||||
|
您可以在合理必要的范围内复制程序,以行使本协议中授予的许可权。
|
||||||
|
您不得有如下行为:
|
||||||
|
(I) 删除或修改任何程序标记或包含有天软的专有权利的任何信息;
|
||||||
|
(II) 以任何方式将程序提供给任何第三方,除非该第三方是代表您行事的承包商;
|
||||||
|
(III) 转让本协议或将程序或其中的权益分发、赠送或转让给任何第三方,除非该第三方为代表您行事的承包商仅在为您开发的范畴内使用;
|
||||||
|
(IV) 对程序进行反向工程、反汇编或反编译,除非是法律明确许可的范围。
|
||||||
|
(V) 程序可能包含源代码,除非在本协议中明确许可用于其他目的(例如,在开放源码许可下许可),否则根据本协议的条款提供的源代码仅供参考,不得修改。
|
||||||
|
权利说明
|
||||||
|
(I) 天软保留本协议中未明确授予的所有权利。如果您要将程序用于本协议明确允许之外的任何目的,均必须从天软或天软的经销商处获得有效的程序许可证。
|
||||||
|
(II) 天软或其许可方保留程序的所有所有权和知识产权。
|
||||||
|
(III) 所使用到的第三方技术或程序可能具有独立的条款,您需要在使用第三方技术或程序时遵守第三方技术的单独条款,第三方技术的权利不受本协议的任何限制。
|
||||||
|
(IV) 随软件可能附带有一些源代码,您需要遵守本协议以及源代码的相关的权利约束,这些源代码如果是第三方的,您还需要遵守第三方的源代码权利许可约束。
|
||||||
|
信息收集
|
||||||
|
程序的安装或自动更新过程可能会向天软或其服务提供商传输有关这些过程的数据,以帮助天软了解和优化这些过程。天软不会将这些数据与个人身份信息相关联。
|
||||||
|
免责声明
|
||||||
|
这些程序按原样提供,不提供任何形式的担保,且天软拒绝所有明示和默示的保证,包括但不限于对适销性、特定用途的适用性或不侵权的任何默示担保。
|
||||||
|
在任何情况下,除非适用法律要求,否则天软不对您承担任何损害责任,包括因使用或无法使用程序而造成的任何一般、特殊、附带或后果性损害(包括但不限于数据丢失或数据变得不准确、您或第三方遭受的损失或程序无法与任何其他程序一起运行),即使该持有者或其他方已被告知此类损害的可能性。
|
||||||
|
出口管制
|
||||||
|
中国的出口法律法规和任何其他相关的当地出口法律法规适用于这些项目。您同意此类出口管制法律管辖您对本协议下提供的程序(包括技术数据)和任何可交付服务的使用,并且您同意遵守所有此类出口法律和法规(包括“视为出口”和“视为再出口”规定)。您同意,程序或服务(或其直接产品)产生的任何数据、信息、程序和/或材料将不会直接或间接地违反这些法律而出口,也不会被用于这些法律禁止的任何目的。
|
||||||
|
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 4.2 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 4.2 KiB |
|
|
@ -1,6 +1,6 @@
|
||||||
tsl语言本地编辑器
|
tsl语言本地编辑器
|
||||||
版本:1.0.0
|
版本:1.0.0
|
||||||
日期:2022-07-19
|
日期:2025-04-2
|
||||||
使用前请阅读<TSL语言许可权利和限制>
|
使用前请阅读<TSL语言许可权利和限制>
|
||||||
许可权利和限制
|
许可权利和限制
|
||||||
深圳市天软科技开发有限公司(以下简称天软)授予您使用程序的非排他性、不可转让、有限的许可,但必须遵守本协议和计划文档中规定的限制,仅限于在如下用途使用:
|
深圳市天软科技开发有限公司(以下简称天软)授予您使用程序的非排他性、不可转让、有限的许可,但必须遵守本协议和计划文档中规定的限制,仅限于在如下用途使用:
|
||||||
|
|
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 4.2 KiB |
|
|
@ -1,6 +1,6 @@
|
||||||
tsl语言本界面开发工具
|
tsl语言本界面开发工具
|
||||||
版本:1.0.0
|
版本:1.0.0
|
||||||
日期:2023-01-19
|
日期:2025-04-2
|
||||||
使用前请阅读<TSL语言许可权利和限制>
|
使用前请阅读<TSL语言许可权利和限制>
|
||||||
许可权利和限制
|
许可权利和限制
|
||||||
深圳市天软科技开发有限公司(以下简称天软)授予您使用程序的非排他性、不可转让、有限的许可,但必须遵守本协议和计划文档中规定的限制,仅限于在如下用途使用:
|
深圳市天软科技开发有限公司(以下简称天软)授予您使用程序的非排他性、不可转让、有限的许可,但必须遵守本协议和计划文档中规定的限制,仅限于在如下用途使用:
|
||||||
|
|
|
||||||
|
|
@ -678,8 +678,9 @@ type TCustomMemo = class(TCustomScrollControl,TCustomMemoCmd) //
|
||||||
r[1]:= RC[1]+fTextHeight * iy;
|
r[1]:= RC[1]+fTextHeight * iy;
|
||||||
iy++;
|
iy++;
|
||||||
r[3]:= r[1]+fTextHeight;
|
r[3]:= r[1]+fTextHeight;
|
||||||
if i+1=fCaretY then
|
if (i+1=fCaretY) and (fBlockBegin = fBlockEnd) then
|
||||||
begin
|
begin
|
||||||
|
//echo tostn(array(fBlockBegin ,fBlockEnd));
|
||||||
if Color<>fcurrentLineColor then
|
if Color<>fcurrentLineColor then
|
||||||
begin
|
begin
|
||||||
cvs.Brush.Color := fcurrentLineColor;//rgb(232,232,255);
|
cvs.Brush.Color := fcurrentLineColor;//rgb(232,232,255);
|
||||||
|
|
@ -718,108 +719,6 @@ type TCustomMemo = class(TCustomScrollControl,TCustomMemoCmd) //
|
||||||
end
|
end
|
||||||
paintlinestext(RC,FirstLine,LastLine,FirstCol,LastCol);
|
paintlinestext(RC,FirstLine,LastLine,FirstCol,LastCol);
|
||||||
end
|
end
|
||||||
{function DrawLongString2(cvs,dtx,tl,r,rnzf);
|
|
||||||
begin
|
|
||||||
if tl<1 then return ;
|
|
||||||
bt := 0;
|
|
||||||
ft := cvs.Font;
|
|
||||||
if rnzf>tl then
|
|
||||||
begin
|
|
||||||
qmzfs := 1;
|
|
||||||
ct := tl-1;
|
|
||||||
end else
|
|
||||||
begin
|
|
||||||
qmzfs := max(1,integer((0-r[0])/FCharWidth));
|
|
||||||
if qmzfs>3 and qmzfs<tl then
|
|
||||||
begin
|
|
||||||
if bytetype(dtx,qmzfs)=2 then qmzfs -= 1;
|
|
||||||
end
|
|
||||||
ct := min(tl-qmzfs+1,rnzf);
|
|
||||||
end
|
|
||||||
idx := qmzfs;
|
|
||||||
nqmzfs := qmzfs+ct;
|
|
||||||
qgqy := array((qmzfs,bt));
|
|
||||||
lqgqy := 1;
|
|
||||||
while idx<=(nqmzfs) do
|
|
||||||
begin
|
|
||||||
nbt := bytetype(dtx,idx)?1:0;
|
|
||||||
if nbt<>bt then
|
|
||||||
begin
|
|
||||||
qgqy[lqgqy++] := array(idx,nbt);
|
|
||||||
bt := nbt;
|
|
||||||
end
|
|
||||||
idx++;
|
|
||||||
end
|
|
||||||
qgqy[lqgqy] := array(nqmzfs+1,bt);
|
|
||||||
bn := ft.charset ;
|
|
||||||
for i:= 0 to lqgqy-1 do
|
|
||||||
begin
|
|
||||||
ks := qgqy[i][0];
|
|
||||||
jz := qgqy[i+1][0];
|
|
||||||
ct := jz-ks;
|
|
||||||
if ct then
|
|
||||||
begin
|
|
||||||
r2 := r;
|
|
||||||
|
|
||||||
dtx2 := copy(dtx,ks,ct);
|
|
||||||
r2[0]+=(ks-1)* FCharWidth;
|
|
||||||
r2[2]:= r2[0]+ct * FCharWidth;
|
|
||||||
if qgqy[i][1] then
|
|
||||||
begin
|
|
||||||
ft.charset := 134;
|
|
||||||
end else
|
|
||||||
begin
|
|
||||||
ft.charset := bn;
|
|
||||||
end
|
|
||||||
//echo ">>draw:",dtx2," --- ",ft.charset;
|
|
||||||
cvs.DrawText(dtx2,r2,DT_NOPREFIX);
|
|
||||||
end
|
|
||||||
end
|
|
||||||
ft.charset := bn;
|
|
||||||
end
|
|
||||||
function DrawLongString(cvs,dtx,tl,r,rnzf);
|
|
||||||
begin
|
|
||||||
bn := 100000;
|
|
||||||
ft := cvs.Font;
|
|
||||||
if rnzf>tl then
|
|
||||||
begin
|
|
||||||
for i := 1 to tl step 2 do
|
|
||||||
begin
|
|
||||||
if bytetype(dtx,i)<> 0 then
|
|
||||||
begin
|
|
||||||
bn := ft.charset;
|
|
||||||
ft.charset := 134;
|
|
||||||
break;
|
|
||||||
end
|
|
||||||
end
|
|
||||||
cvs.DrawText(dtx,r,DT_NOPREFIX);
|
|
||||||
end else
|
|
||||||
begin
|
|
||||||
qmzfs := max(1,integer((0-r[0])/FCharWidth));
|
|
||||||
if qmzfs>3 and qmzfs<tl then
|
|
||||||
begin
|
|
||||||
if bytetype(dtx,qmzfs)=2 then qmzfs -= 1;
|
|
||||||
end
|
|
||||||
ct := min(tl-qmzfs+1,rnzf);
|
|
||||||
for i := qmzfs to qmzfs+ct step 2 do
|
|
||||||
begin
|
|
||||||
if bytetype(dtx,i)<> 0 then
|
|
||||||
begin
|
|
||||||
bn := ft.charset;
|
|
||||||
ft.charset := 134;
|
|
||||||
break;
|
|
||||||
end
|
|
||||||
end
|
|
||||||
dtx2 := copy(dtx,qmzfs,ct);
|
|
||||||
r[0]+=(qmzfs-1)* FCharWidth;
|
|
||||||
r[2]:= r[0]+ct * FCharWidth;
|
|
||||||
cvs.DrawText(dtx2,r,DT_NOPREFIX);
|
|
||||||
end
|
|
||||||
if bn <> 100000 then
|
|
||||||
begin
|
|
||||||
ft.charset := bn;
|
|
||||||
end
|
|
||||||
end}
|
|
||||||
function DrawLongString(cvs,dtx,tl,r,rnzf);
|
function DrawLongString(cvs,dtx,tl,r,rnzf);
|
||||||
begin
|
begin
|
||||||
bn := 100000;
|
bn := 100000;
|
||||||
|
|
|
||||||
Binary file not shown.
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.
BIN
tslvcltool.exe
BIN
tslvcltool.exe
Binary file not shown.
BIN
tsl语言本地编辑器.docx
BIN
tsl语言本地编辑器.docx
Binary file not shown.
87
whatsnew.txt
87
whatsnew.txt
|
|
@ -1,5 +1,92 @@
|
||||||
|
更新日志--------2025-3-24
|
||||||
|
修订:TMemIniFile erasesection方法无法删除掉section本身。
|
||||||
|
修订:TMemIniFile ValueExists和SectionExists在大小写敏感时查询到大小写不一致的内容。
|
||||||
|
|
||||||
|
更新日志--------2025-3-21
|
||||||
|
新增:python 3.13支持。
|
||||||
|
修正:office_plugin对XLSX错误类型处理对应正确的NAN类型,可cverrget识别错误类型。
|
||||||
|
修正:THashedStringList被派生后当成TStringList基类的问题。
|
||||||
|
修正:Uppercase和lowercase支持特殊中文。
|
||||||
|
|
||||||
|
更新日志--------2025-3-17
|
||||||
|
修正:InputDialog函数多选类型参数不选择时会报告错误的问题。
|
||||||
|
修正:一些错误的使用导致的内核健壮性问题。
|
||||||
|
修正:tostn对非连续下标网格数组无法等待网格的结果。
|
||||||
|
修正:类成员CONST还未初始化时,断点调试访问会导致未初始化的CONST成员无法被初始化。
|
||||||
|
修正:Unit中存在变量时classinfo问题。
|
||||||
|
修正:LINUX版本sysexec多线程稳定性问题。
|
||||||
|
优化:DateTimeToStr等时间转换字符串的性能提升。
|
||||||
|
升级:提供平台管理基础协议cmdlist,cmdlists支持。
|
||||||
|
提示:若用户使用MATLAB 2024A通过COM访问天软平台遇到无法正常使用RemoteCallFunc等需要使用到数组的调用,需升级到update7以更正其BUG,请联系第三方软件厂商。
|
||||||
|
|
||||||
|
更新日志--------2025-1-24
|
||||||
|
修正:当使用RDO2调用本地方法的时候,且非采用/tslstart启动模式,一旦本地方法在系统变量里存贮对象等类型,会导致不安全使用发生。
|
||||||
|
|
||||||
|
更新日志--------2025-1-23
|
||||||
|
**************************************************************************************************************************************
|
||||||
|
升级:支持禁用无市场数据抛出异常。新增系统函数为:pn_noraisenodata(),设置为1禁用。(测试版本平台已支持)
|
||||||
|
当客户端打开选项或者手动设定该系统参数,可以禁止市场数据类函数当股票不存在、缺乏时间序列数据或者实时行情等引发的主动异常。
|
||||||
|
**************************************************************************************************************************************
|
||||||
|
修正:zip相关函数的目录分割符号问题。
|
||||||
|
升级:周期类开盘价、最高价、最低价考虑期间交易情况。(测试版本平台已支持)
|
||||||
|
升级:提供平台管理基础协议支持。(为平台管理工具提供基础支撑)
|
||||||
|
优化:内核性能优化,INI读取的性能提高,减少别名连接方法读配置的开销。
|
||||||
|
|
||||||
|
更新日志--------2024-12-25
|
||||||
|
修正:客户端解决深圳新节点的端口仅为4433,原有客户端登录加入新节点采用了缺省443。
|
||||||
|
深圳新节点的配置可以手动修正端口为4433或者删除掉该节点再重新登录可以添加正确的端口。
|
||||||
|
|
||||||
|
更新日志--------2024-12-24
|
||||||
|
服务:深圳新节点已经启用,欢迎大家使用,预计新节点的性能比原有节点的性能高数倍,请选择深圳新节点登录。
|
||||||
|
深圳新节点已启用智能DNS,如需指定联通链路112.95.140.61,电信链路119.147.24.199,移动链路120.232.255.75,端口为4433
|
||||||
|
|
||||||
|
更新日志--------2024-12-23
|
||||||
|
升级:WORD转PDF渲染公式的增强。
|
||||||
|
|
||||||
|
更新日志--------2024-12-19
|
||||||
|
优化:内核优化性能。
|
||||||
|
修订:WriteFile可能在多个线程同时因无法打开导致重建丢失写入内容的可能性。修订后版本无需加锁写入。
|
||||||
|
WriteFile仅需要将位置设置为-1则可保障追加模式,如果调用失败,可检测返回值为字符串后然后重试即可。(当多线程尝试打开同一个文件写入时会返回错误)
|
||||||
|
|
||||||
|
更新日志--------2024-11-28
|
||||||
|
升级:pdf_plugin升级。
|
||||||
|
升级:错误包容性。在导出文件时,当包含路径的文件名中的路径被错误地设置为双斜杠,无论是//还是\\模式(即转义\\\\),当子目录未存在时,均可能会因为路径的错误无法创建子目录从而导致导出失败。
|
||||||
|
修正:dbglocalrunning函数和dbginfo/dbginfosvr管理命令在执行服务极端高并发时存在的问题。
|
||||||
|
修正:为保障和APACHE的兼容性,JAVA WEB容器下运行TSL时候,原TWebRequst.URL的输出在Java Web Server下不包含参数部分,现改为包含。
|
||||||
|
|
||||||
|
更新日志--------2024-11-22
|
||||||
|
修正:具备高权限导出数据时,当别名为空,采用非绝对路径作为文件名时,可能会导致崩溃的问题。
|
||||||
|
升级:保留旧版本的邮件以及FTP类,类名以legacy_作为前缀,如legacy_smtp,legacy_pop3,legacy_mailmsg,legacy_ftp等类,当新版本的相关类无法正常使用时可使用(目前发现对某些ExchangeServer的邮件服务存在认证问题,有待排查测试升级)。
|
||||||
|
|
||||||
|
更新日志--------2024-11-18
|
||||||
|
修正:类中常量定义 const ddd=true但ddd被设定0的问题。
|
||||||
|
|
||||||
|
更新日志--------2024-11-16
|
||||||
|
升级:提供更快速的数据压缩传输模式,极大提高大结果集的传输速度(需服务器支持)。
|
||||||
|
升级:支持更大的流文件格式导入导出(需设置pubkrnl.ini配置[Memory]的MaxStrmSize64值(KB))。
|
||||||
|
升级:客户端新增dbglocalcancel(ID:Integer)函数,ID为dbglocalrunning中返回信息中的id字段以十六进制模式转换为64位整数,该功能可以用来终止运行的WEB任务。
|
||||||
|
升级:firedac API,Poco连接,JDBC模式在数据库执行过程中支持取消,防止因数据库锁等调用使得取消无法完成。
|
||||||
|
修正:LINUX下sysexec异步执行多个子进程执行的时候当某个子进程结束时会使得sleep需要等待所有子进程结束。
|
||||||
|
修正:客户端关于中重复显示项问题。
|
||||||
|
|
||||||
|
更新日志--------2024-11-05
|
||||||
|
升级:新增filemove函数,filemove(srcAlias,srcname,destAlias,destname:String[;flag:Integer]):Boolean 相比filerename而言支持跨卷移动。
|
||||||
|
flag .& 1 为真时 相当于设定MOVEFILE_REPLACE_EXISTING,允许替换,
|
||||||
|
flag .& 2 为真时 相当于设定MOVEFILE_COPY_ALLOWED,允许复制模式
|
||||||
|
|
||||||
|
更新日志--------2024-11-04
|
||||||
|
升级:客户端新增dbglocalrunning函数,获得当前所有的任务列表以及堆栈信息,主要用于web等检查在运行中的任务。
|
||||||
|
升级:新增unicompress(统一压缩函数)和uniuncompress(统一解压函数)函数,使用方式如下:
|
||||||
|
function unicompress(type:string;data:string/binary[;compresslevel:Integer]):String;
|
||||||
|
type目前支持zstd,zlib,lz4三种类型,压缩级别在zstd和zlib模式下生效。
|
||||||
|
function uniuncompress(type:string;data:string/binary[;srclen:Integer]):String;
|
||||||
|
type目前支持zstd,zlib,lz4三种类型,srclen的设置是解压的大小,不设定会自动识别,设定后会比较大小是否相符,如果知道原大小,则应该设定该参数。
|
||||||
|
升级:syscreatemutex创建的互斥,在任务结束时如果未释放主动进行释放,防止当取消任务或者调试时停止造成的问题。
|
||||||
|
升级:linux版本syscreatemutex创建的互斥支持线程内syswaitforsingleobject重复获得锁。
|
||||||
|
|
||||||
更新日志--------2024-10-23
|
更新日志--------2024-10-23
|
||||||
升级:修复10-10流处理的问题。
|
升级:修复10-10流处理的问题。
|
||||||
|
升级:hpdf库支持压缩模式。
|
||||||
|
|
||||||
更新日志--------2024-10-10
|
更新日志--------2024-10-10
|
||||||
升级:内核对特殊错误数据的健壮性。
|
升级:内核对特殊错误数据的健壮性。
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue