由於奧斯汀的悲傷,在列表中沒有內置的函數來給出最大或最小值。
在你的評論中,你提到MAXIMUM(1,2,3)有效。是的,它可以工作,但是你必須確定你將三個參數傳遞給函數,而不是單個CHAR
變量內的數字列表。
爲了解決您的問題,您可以使用奧斯汀給出的解決方案,或者您可以使用兩個函數接收CHAR
變量,用分號分隔值並返回最大值或最小值。
下面是一個基於你的代碼的例子。
FUNCTION iMax RETURNS INTEGER
(INPUT pData AS CHAR):
DEF VAR iOutput AS INT NO-UNDO.
DEF VAR iCount AS INT NO-UNDO.
iOutput = ?.
DO iCount = 1 TO NUM-ENTRIES(pData,';'):
IF iOutput = ? THEN DO:
iOutput = INT(ENTRY(iCount,pData,';')).
NEXT.
END.
iOutput = MAX(iOutput,INT(ENTRY(iCount,pData,';'))).
END.
RETURN iOutput.
END FUNCTION.
FUNCTION iMin RETURNS INTEGER
(INPUT pData AS CHAR):
DEF VAR iOutput AS INT NO-UNDO.
DEF VAR iCount AS INT NO-UNDO.
iOutput = ?.
DO iCount = 1 TO NUM-ENTRIES(pData,';'):
IF iOutput = ? THEN DO:
iOutput = INT(ENTRY(iCount,pData,';')).
NEXT.
END.
iOutput = MIN(iOutput,INT(ENTRY(iCount,pData,';'))).
END.
RETURN iOutput.
END FUNCTION.
/****************/
Define variable NumberEntry as character view-as fill-in no-undo.
Define variable UsersInput as character no-undo.
Define variable i as integer no-undo.
Define variable totalEntries as integer no-undo.
Define variable m as character no-undo.
Define variable n as character no-undo.
Define button bFind.
Define frame main numberEntry label "Enter numbers separated by semi colon" skip
bFind label "Find Max and Min" with side-labels. /*Trigger for button*/
On choose of bFind in frame main do: /*Retrieve the users input*/
Usersinput = (numberEntry:screen-value). /*to find out how many characters the user has enterd.*/ totalEntries = num-entries(UsersInput,';'). Display totalentries. /*Logic to extract Users input values one by one.*/
Repeat i = 1 to totalEntries: M = entry(i, UsersInput, ";").
Display m.
End. /*Logic to find the maximum element. */ .....
MESSAGE 'MAXIMUM :' iMax(UsersInput) SKIP
'MINIMUM :' iMin(UsersInput)
VIEW-AS ALERT-BOX INFO BUTTONS OK.
END.
VIEW FRAME main.
ENABLE ALL WITH FRAME main.
WAIT-FOR CHOOSE OF bfind.
你可以叫iMax()
或iMin()
和使用INTEGER
值的CHAR
列表,無需通過半冒號分隔,使一個完整的代碼塊做對比,從進展MAXIMUM
和MINIMUM
功能得到最大或最小值,並得到提供必要的每種情況的信息。
希望它有幫助。
將變量numberEntry定義爲字符視圖 - 作爲無法撤消的填充。 – nikita
嘿奧斯汀,感謝您的回覆,但我已經加倍檢查,並有一個稱爲最大功能,請找到下面的代碼。這是我迄今爲止的整個過程。將變量NumberEntry定義爲字符視圖 - 作爲無法撤消的填充。 將變量UsersInput定義爲字符不撤銷。 將變量i定義爲整數不撤銷。 將變量totalEntries定義爲整數無撤消。 將變量m定義爲字符no-undo。 將變量n定義爲字符no-undo。 定義按鈕b找到。 – nikita
定義框架主要numberEntry標籤「輸入用分號分隔的數字」跳過 \t \t b找到帶有側標籤的標籤「Find Max and Min」。 /*觸發按鈕*/ 關於在框架主選擇bFind do: /*檢索用戶輸入*/ UsersInput =(numberEntry:screen-value)。 /*找出用戶輸入的字符數。*/ totalEntries = num-entries(UsersInput,';')。 顯示totalentries。 /*邏輯提取用戶輸入值一個接一個*/ 重複i = 1到totalEntries: M = entry(i,UsersInput,「;」)。 顯示m。 結束。 /*找到最大元素的邏輯。 */ ..... 結束。 – nikita