2011-03-11 39 views
1

因此,可以說我的計算是這樣的的FileMaker破滅陣列

Let (
    [ 
     $result[1] ="1"; 
     $result[2] ="!"; 
     $result[3] = "3"; 
     $result[4] = "4"; 
     $result[5] = "5"; 
     $result[6] = "6"; 
     $result[7] = "7"; 
     $result[8] = "8"; 
     $result[9] = "-"; 
     $result[10] = "10"; 
     $result[11] = "11"; 
     $result[12] = "12"; 
     $result[13] = "13"; 
     $result[14] = "14"; 
     $result[15] = "15"; 
     $result[16] = "!"; 
    ]; 
    $result[1] & 
    $result[2] & 
    $result[3] & 
    $result[4] & 
    $result[5] & 
    $result[6] & 
    $result[7] & 
    $result[8] & 
    $result[9] & 
    $result[10] & 
    $result[11] & 
    $result[12] & 
    $result[13] & 
    $result[14] & 
    $result[15] & 
    $result[16] 
) 

這是非常簡單的我做和數組,然後我想它返回數組作爲一個字符串是存在的,以連接更簡單的方法結果數組的值?

**樣品定製功能*** 試圖用@chuck的代碼不知道我在做什麼錯了,我能想出如何上傳文件,所以這裏有一些mimages

enter image description here enter image description here enter image description here

+0

下面是一個用於連接數組的替代自定義函數:http://www.briandunning.com/cf/1285 – 2011-03-14 04:12:15

+0

看起來您錯誤地輸入了_ConcatArray自定義函數,您應該取消一切,包括第一個equals標誌。 Chuck的自定義函數看起來好像可以正常工作,我鏈接的(我寫的)有一些額外的功能,並且是單個函數。 – 2011-03-14 04:22:13

+0

@薩姆巴納姆..做到了。我應該知道...你的鏈接看起來不錯,但仍然需要你知道數組的長度感謝你的幫助 – mcgrailm 2011-03-14 12:26:14

回答

4

下面是兩個自定義函數,如果您可以假設一旦您在數組中找到空值,您就已經到達數組的末尾了。我寫得很快,只測試過一次,但也許它會爲你做這項工作。

ConcatArray(VarName) = _ConcatArray(VarName; 1)

這只是調用與初始值的遞歸函數。

_ConcatArray(VarName; Iteration) = Let(
    [ 
    Var = Evaluate("$" & VarName & "[" & Iteration & "]") 
    ]; 

    Case(
    IsEmpty(Var); 
    ""; 
    Var & _ConcatArray(VarName; Iteration + 1) 
) 
) 

然後我在FileMaker中打開數據查看器並使用此計算對其進行測試。

Let (
    [ 
     $result[1] ="1"; 
     $result[2] ="!"; 
     $result[3] = "3"; 
     $result[4] = "4"; 
     $result[5] = "5"; 
     $result[6] = "6"; 
     $result[7] = "7"; 
     $result[8] = "8"; 
     $result[9] = "-"; 
     $result[10] = "10"; 
     $result[11] = "11"; 
     $result[12] = "12"; 
     $result[13] = "13"; 
     $result[14] = "14"; 
     $result[15] = "15"; 
     $result[16] = "!" 
    ]; 
    ConcatArray("result") 
) 

結果是1!345678-101112131415!

+0

似乎無法使這項工作不知道爲什麼它只是給了我一個?在該領域。作爲一個方面說明,如果我可以得到這個工作,它將爲這個項目做好工作,但是知道數組的長度將很高興 – mcgrailm 2011-03-13 16:10:32

+0

注意首先這是一對自定義函數。您必須擁有FileMaker Pro Advanced並按照這種方式使用它們。如果您僅使用FileMaker Pro,則這不起作用。您需要FileMaker Pro Advanced創建自定義功能,但是一旦它們在文件中定義,您可以在FileMaker Pro中使用它們。 – Chuck 2011-03-13 20:51:16

+0

另一個想法是:如果您在數組中使用數百次重複,則可能會用遞歸函數耗盡內存。如果是這種情況,您可能需要考慮以不同的方式存儲數據,例如在臨時表中。嘗試上傳我可以看一看的示例文件。 – Chuck 2011-03-13 20:58:13

1

你可以用遞歸自定義函數來做到這一點。指定結束範圍和var名稱作爲參數,然後可以使用遞增索引號重複調用自身,直到該索引號等於結束範圍。

+0

但是如果你不知道結束範圍?有沒有辦法獲得數組的長度? – mcgrailm 2011-03-11 14:35:22

+0

不,沒有辦法。 $ result [10000000]可能包含一個值,並沒有實際的方法來找出。 – 2011-03-11 16:25:37

+0

如果你能夠假定數組沒有任何空白值,那麼遞歸自定義函數就可以工作。 – Chuck 2011-03-11 20:38:45