如何将数据表作为参数发送到函数中大家好,
所以我已经尝试这样做有一段时间了,但我无法理解它。
我正在制作一个脚本来从几个不同的文件夹导出多张图片。 我创建了一个“导入”函数和一个“修剪”函数。
Import = Function ({path},
dtimport= Multiple File Import (
// the import arguments
)<< Import Data;
Return (dtimport);
};
Trimtables = Function ({table, arg1, arg2, arg3},
table:Image<<SET name=""></SET>因此,它工作正常,直到我尝试将此表作为我的修剪函数的参数发送。
我知道 dt1 不是我的实际表,而只是一个指针,如果我将其直接发送到表,该函数将只有一个指向该指针的指针。 所以我尝试使用:
dt1<<SET name=""></SET>
效果很好。 问题是当我尝试不为每个表使用自定义标题时。 我尝试了以下操作:
Trimtables (dt1<<GET name=""></GET>
但这是行不通的。 我尝试了很多变体(同时改变了函数的期望):
Trimtable (Char(dt1<<GET name=""></GET>
但似乎没有任何作用。 本质上我需要的就像在 C 中一样,你可以发送 &datatable 作为参数。 我确信这很微不足道,但对于我来说,我无法理解它。
有任何想法吗 ?
谢谢,
鲍勃
回复:如何将数据表作为参数发送到函数中谢谢克雷格·黑尔斯,
当你发布你的回复时,我正在写我的回复。 幸好我们得出了相同的结论:)
回复:如何将数据表作为参数发送到函数中嗨,普罗兹,
感谢您的快速回复。
我一直在使用 Caption 函数,我认为它与 Show 非常相似,还有一个好处是它会显示在其他所有内容之上,而不是写入日志,一旦出现错误,日志就会变得非常混乱。
我编写了以下代码,该代码有效:
Names Default To Here( 1 );
Mydt = Function({},
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt<<SET name=""></SET>所以这告诉我确实可以使用数据表名称作为参考并从那里开始工作。
问题是,当我尝试将此代码与使用多文件导入功能创建的表一起使用时,它不再起作用,这告诉我还有其他事情正在发生。
我认为当从多重导入创建表时,jmp 不会将该对象视为数据表,而是将其视为其他内容。 当我使用获取名称函数时,它返回的不是普通的带引号的字符串,而是一个列表。
现在我在“mydt”函数中使用以下内容似乎正在工作:
m = dt[1] <<GET name=""></GET>
不过这感觉还是有点奇怪。 任何想法为什么导入多个文件会导致这种行为?
回复:如何将数据表作为参数发送到函数中MFI 返回它打开的表的列表,即使只有一个表。 导入函数的结果可能是一个包含单个项目的列表, {数据表(“图片.jmp”) }或类似的。 你可能需要类似的东西
TrimTable( dt1[ 1 ] )
从列表中获取第一个数据表。
回复:如何将数据表作为参数发送到函数中尝试在函数中放入一些 show 语句以查看发生了什么。此代码片段工作正常:
fn1 = function({tbl_path},
dt_fn1 = open(tbl_path);
dt_fn1;
);
fn2 = function({tbl, arg1, arg2},
show(tbl, arg1, arg2);
tbl:height << set name("New Name");
);
dt = fn1("$sample_data\Big Class.jmp");
show(dt);
fn2(dt, "Hello", "World");
回复:如何将数据表作为参数发送到函数中当然我尝试过这个:
Trimtables (Data Table (dt1<<GET name=""></GET>
我猜 Get Name() 指令只是不返回正常的字符串,而是返回一个奇怪的东西,比如“!\“数据表名称”!\”
我想在最后的手段中我可以修剪该字符串以删除特殊字符,但这听起来像是一个绝望的措施