如何將數據表作為參數發送到函數中大家好,
所以我已經嘗試這樣做有一段時間了,但我無法理解它。
我正在製作一個腳本來從幾個不同的文件夾導出多張圖片。 我創建了一個“導入”函數和一個“修剪”函數。
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() 指令只是不返回正常的字符串,而是返回一個奇怪的東西,比如“!\“數據表名稱”!\”
我想在最後的手段中我可以修剪該字符串以刪除特殊字符,但這聽起來像是一個絕望的措施