查看: 7|回复: 7

【全局表基础应用】把临时实体的生成时间、离开时间写入全局表

[复制链接]

主题

0

回帖

544

积分

中级会员

积分
544
发表于 2016-4-12 15:25:50 | 显示全部楼层 |阅读模式
[i=s] 本帖最后由 zorsite 于 2016-4-12 15:40 编辑 [/i]

以一个非常简单的模型为例。

现在要把临时实体的生成时间、离开暂存区的时间写入全局表。

首先创建一个名为“测试全局表”的全局表。

重置触发代码:[code]/**重置全局表*/
treenode current = ownerobject(c);
settablesize("测试全局表",1,1);
clearglobaltable(1);
settableheader("测试全局表",1,1,"");
settableheader("测试全局表",2,1,"");[/code]离开触发代码:[code] /**将离开时间写入全局表*/
treenode item = param(1);
treenode current = ownerobject(c);
int port = param(2);
/*
假设要把临时实体生成时间、离开暂存区的时间写入全局表,同时给出备注。
*/
var table = "测试全局表";
int columns = 3;//要写入3列数据
intarray array = makearray(columns);
fillarray(array,1,1,2);//定义全局表每列的数据类型。1是数值型,2是文本型。
stringarray arraystr=makearray(columns);
fillarray(arraystr,"生成时间","离开时间","备注");//定义列标题。
if (getoutput(current) == 0)
//如果是第一个临时实体
//请注意,这里的判断根据自己的需要来设定,目的是为了判断是否是第一次向全局表中写入数据
{
settablesize(table,1,columns);//在第一次写入之前会制定全局表的列数,这里是1行3列
for (int index=1; index<=columns; index++)
  {
   nodeadddata(gettablecell(table,1,index),array[index]);//设置列数据类型
   settableheader("测试全局表",2,index,arraystr[index]);//设置列标题
  }
} else settablesize(table,gettablerows(table)+1,columns);//如果不是第一次写入全局表,新增一行
double rows = gettablerows(table);//获取行数
settableheader("测试全局表",1,rows,concat("第",numtostring(getoutput(current)+1),"个"));
//设置行标题
int i = 1;
settablenum(table, rows, i, getcreationtime(item)); i++;//写入数据
settablenum(table, rows, i, time()); i++;
settablestr(table, rows, i, concat("备注",numtostring(duniform(1,100)))); i++;

[/code]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

主题

0

回帖

2945

积分

高级会员

积分
2945
发表于 2016-4-12 15:56:11 | 显示全部楼层
[i=s] 本帖最后由 FFFrenk 于 2016-4-12 15:59 编辑 [/i]

有几个问题和加老师探讨一下:
1.使用数组,是不是使得逻辑复杂了?根据模型来说,完全可以不使用数组;

2.既然全局表的列数和列标题都是固定的,其实就没有必要重置的时候删除列,在离开离开触发中又增加列,不仅增加了代码量,也使得整体的逻辑更加难以理解。对于新手很不友好,对于老手来说,又显得格外复杂。

主题

0

回帖

544

积分

中级会员

积分
544
 楼主| 发表于 2016-4-12 16:33:22 | 显示全部楼层
[b] [url=http://flexsim.asia/redirect.php?goto=findpost&pid=20115&ptid=6228]2#[/url] [i]FFFrenk[/i] [/b]
你说的很对~~

这是一个非常简单的案例。搞这么复杂的原因是为了尽可能多的用一些函数,包括数组函数、全局表函数,让新手接触到这些函数,知道有这么一个函数的存在。希望新手能够我的一片苦心,不要骂我故弄玄虚才好。

主题

0

回帖

343

积分

注册会员

积分
343
发表于 2016-8-14 08:08:09 | 显示全部楼层
不错~~~~~~~~~~~

主题

0

回帖

57

积分

注册会员

积分
57
发表于 2016-8-14 15:03:33 | 显示全部楼层
好经验,好材料,学习了!

主题

0

回帖

3103

积分

高级会员

积分
3103
发表于 2017-4-19 13:05:43 | 显示全部楼层
Mark~谢谢分享。

主题

0

回帖

311

积分

注册会员

积分
311
发表于 2018-1-21 17:22:24 | 显示全部楼层
学习

主题

0

回帖

1381

积分

高级会员

积分
1381
发表于 2020-12-19 11:14:57 | 显示全部楼层
内容丰富, 感谢老师分享
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注公众号

相关侵权、举报、投诉及建议等,请发 E-mail:admin@discuz.vip

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.|京ICP备14043114号-2

在本版发帖
关注公众号
QQ客服返回顶部