* AYA 系統函式參照表 [#pd09b0c5] * AYA/YAYA 系統函式參照表 [#pd09b0c5] 根據字母順序一一進行解說。~ 感覺應該要找時間重新寫一遍,但覺得這樣也不錯而保持原樣也是有可能的。~ |[v4]|與 version 4 同名函式完全相同機能。| |[v4:...]|在 version 4 與之相同或類似機能的函式。| |(沒有註明)|在 version 5 新追加的函式。| |Tc-XXX|在 YAYA Tc-XXX 新追加的函式。| #contents ** ACOS [#t37cd4fe] ** ACOS [#ACOS] 返回反餘弦值。參數的單位為radian。~ ** ANY [#s8f9f36a] ** ANY [#ANY] 參數為字串的時候,會視為簡易陣列,隨機選取其中一個字串。參數為變數的時候,會考慮其分隔符號。~ 若為泛用陣列時,會隨機選取其中一個元素。~ 整數或實數時會原值返回。沒有參數時則傳回空字串。~ 可導入複數個參數,會隨機返回其中一個參數的值。~ DinnerTalk { unknownfood = ("蕎麥麵不加蕎麥","牛肉麵不加牛肉","黑暗鍋") _i = "\0今天想吃" + ANY(unknownfood) + "。\1" + EVAL("unknownfood[LSO]") + "?" _i } 選擇的序數可以從變數LSO取得。~ 當ANY的選擇為2時,結果為 S:「今天想吃黑暗鍋。」 K:「黑暗鍋?」 ** ARRAYSIZE [v4:具備簡易陣列的互換性、2參數的方式已廢止] [#pb5e1fde] ** ARRAYSIZE [v4:具備簡易陣列的互換性、2參數的方式已廢止] [#ARRAYSIZE] 參數指定為簡易陣列及泛用陣列,傳回此陣列的元素總數量。~ ** ASEARCH [#g50393dd] ** ASEARCH [#ASEARCH] 檢索泛用陣列中的值。第一參數是檢索的關鍵字、第二參數之後是指定要檢索的泛用陣列(不能是簡易陣列)。~ 會返回第一個找到的元素的序數。沒找到的話傳回 -1 。~ _tea = ("鐵觀音", "烏龍", "やぶきた", "茉莉花") ipod = ASEARCH("烏龍", _tea) ipod等於1。~ nyaoh = ASEARCH("猫", "麒麟", "猿", "象", "貓", "兔") nyaoh等於3。~ 由於搜尋時採用比較單純的線性檢索,所以搜尋花費的時間會隨著陣列的長度而改變。~ ** ASEARCHEX [#de1aec3b] ** ASEARCHEX [#ASEARCHEX] 檢索泛用陣列中的值。第一參數是檢索的關鍵字、第二參數之後是指定要檢索的泛用陣列(不能是簡易陣列)。~ 會將搜尋到的元素序數以陣列方式傳回。沒有搜尋到時則為空陣列(IARRAY)。~ _tea = ("鐵観音", "烏龍", "やぶきた", "烏龍", "茉莉花") ipod = ASEARCHEX("烏龍", _tea) ipod等於泛用陣列 (1,3) 。~ ** ASIN [#l32ca1dd] ** ASIN [#ASIN] 返回反正弦值。參數的單位為radian。~ ** ATAN [#h975f207] ** ATAN [#ATAN] 返回反正切值。參數的單位為radian。 ---- ** BINSTRTOI [v4:BINSTRTONUM改名] [#r128abf9] ** BINSTRTOI [v4:BINSTRTONUM改名] [#BINSTRTOI] 將2進位數值字串轉換成整數。參數異常時傳回0。 ** BITWISE_AND [TC513-901] [#BITWISE_AND] 位元操作 AND 運算子(32位元)。異常時不回傳。~ ~ 例: _val1 = 30 // 2進數為11110 _val2 = 13 // 2進數為01101 BITWISE_AND( _val1, _val2 ) // 輸出整數12(01100) ** BITWISE_NOT [TC513-901] [#BITWISE_NOT] 位元操作 NOT 運算子(32位元)。異常時不回傳。~ ~ 例: _val = 28 // 2進數為00011100 BITWISE_NOT( _val ) // 輸出整數-29(11100011) ** BITWISE_OR [TC513-901] [#BITWISE_OR] 位元操作 OR 運算子(32位元)。異常時不回傳。~ ~ 例: _val1 = 28 // 2進數為11100 _val2 = 9 // 2進數為01001 BITWISE_OR( _val1, _val2 ) // 輸出整數29(11101) ** BITWISE_SHIFT [TC513-901] [#BITWISE_SHIFT] 位元操作位移運算子(32位元)。異常時不回傳。~ 第二參數為正數時左移,負數時右移。~ ~ 例: _var=0x7fffffff _result=BITWISE_SHIFT(_var,-2); _result為0x1fffffff。 ** BITWISE_XOR [TC513-901] [#BITWISE_XOR] 位元操作 XOR 運算子(32位元)。異常時不回傳。~ ~ 例: _val1 = 28 // 2進數為11100 _val2 = 9 // 2進數為01001 BITWISE_XOR( _val1, _val2 ) // 輸出整數21(10101) ---- ** CEIL [v4] [#u3faa5b2] ** CEIL [v4] [#CEIL] 實數的小數點無條件進位。~ ** CHARSETLIB [#b00aa841] 指定外部程式庫通信所使用的文字編碼。有以下選擇。~ ** CHARSETIDTOTEXT [Tc513-901] [#CHARSETIDTOTEXT] CHARSETIDTOTEXT(code) * 0 指定Shift_JIS。~ * 1 指定UTF-8。~ * 127 指定OS預設的文字編碼。 轉換文字編碼為文字編碼名稱。失敗時回傳"default"。~ 文字編碼清單見[[附錄>./#Appendix-Charset]]。 ** CHARSETLIB [#CHARSETLIB] CHARSETLIB(code) CHARSETLIB() 指定外部程式庫通信所使用的文字編碼。~ 文字編碼清單見[[附錄>./#Appendix-Charset]]。~ ~ 請在LOADLIB之前進行指定。~ 可以對LOADLIB設定不同單位的文字編碼。~ 預設的文字編碼為基礎設定檔案中charset項目的設定值。~ 無返值。~ 預設文字編碼在基礎設定檔案的charset.extension項目(省略時為charset項目)所設定的值。~ 沒指定文字編碼時返回現時文字編碼的值,否則無返值。~ Tc531-1起可省略文字編碼指定。 ** CHR [v4:ASC的擴張。與ASCII範圍有互換性] [#e0514b80] ** CHARSETLIBEX [Tc513-901] [#CHARSETLIBEX] CHARSETLIBEX(path,code) CHARSETLIBEX(path) 指定特定外部程式庫通信所使用的文字編碼。~ 文字編碼清單見[[附錄>./#Appendix-Charset]]。~ ~ 預設文字編碼在基礎設定檔案的charset.extension項目(省略時為charset項目)所設定的值。~ 沒指定文字編碼時返回現時文字編碼的值,否則無返值。~ Tc530-2起可在LOADLIB前設定。~ Tc531-1起可省略文字編碼指定。~ ** CHARSETTEXTTOID [Tc513-901] [#CHARSETTEXTTOID] CHARSETTEXTTOID(string) 轉換文字編碼名稱為文字編碼編號。失敗時回傳0。~ 文字編碼清單見[[附錄>./#Appendix-Charset]]。 ** CHR [v4:ASC的擴張。與ASCII範圍有互換性] [#CHR] 根據UCS-2代碼返回1文字。~ Test { _a = "ABC" _b = "%(CHR(65))%(CHR(66))%(CHR(67))" _c = "現在時間是%(hour)時%(minute)分%(second)秒。" _d = EVAL("%(CHR(34))現在時間是%(hour)時%(minute)分%(second)秒%。(CHR(34))") } _a與_b相等,_c與_d相等。CHR(34)等同於雙括號( " )。~ ** CHRCODE [v4:IASC的擴張。與ASCII範圍有互換性] [#a5fd77a7] ** CHRCODE [v4:IASC的擴張。與ASCII範圍有互換性] [#CHRCODE] 將指定字串開頭的1文字轉換為UCS-2文字代碼並傳回。~ ** COS [v4] [#of876a21] ** COS [v4] [#COS] 返回餘弦值。參數的單位為radian。~ ** CUTSPACE [v4] [#y4436321] ** COSH [TC522-1] [#COSH] 返回雙曲餘弦值。參數的單位為radian。~ ** CUTSPACE [v4] [#CUTSPACE] 字串左右端有空白文字或標記文字的時候,予以去除。~ ** CVINT [v4:TONUMBER改名] [#pd2ae0df] ** CVAUTO [#CVAUTO] 根據參數指定的變數的內容自動轉換形態,將字串轉為整數或實數。~ 參數為泛用陣列時其動作尚未定義。~ 無返值。~ ** CVINT [v4:TONUMBER改名] [#CVINT] 參數指定的變數為存有整數值形式的字串時,將字串轉為整數。~ 無返值。~ ** CVREAL [#e7daf0ca] ** CVREAL [#CVREAL] 參數指定的變數為存有實數值形式的字串時,將字串轉為實數。~ 無返值。~ ** CVSTR [v4:TOSTRING改名] [#l1a6cd9f] ** CVSTR [v4:TOSTRING改名] [#CVSTR] 參數為變數時,將變數的內容轉換為字串。~ 無返值。~ ---- ** ERASE [v4:單位由byte單位變更為文字單位] [#p0890f78] ** DUMPVAR [Tc529-2] [#DUMPVAR] DUMPVAR() 將所有變數往紀念檔輸出。~ 無返值。~ ---- ** ERASE [v4:單位由byte單位變更為文字單位] [#ERASE] 削除字串的指定部分。第一參數為對象字串、第二參數為開始削除的文字位置、第三參數為要削除掉的文字數。~ Test { _i = "ABCDEFGHIJ" _i = ERASE(_i, 3, 4) _i } 結果為"ABCHIJ"。~ ** ERASEVAR [v4:ERASEVARIABLE改名] [#we05fec0] ** ERASEVAR [v4:ERASEVARIABLE改名] [#ERASEVAR] 將指定的變數削除掉。參數請輸入寫有變數名稱的字串。~ 無返值。~ ** EVAL [#ya9e0d4a] ** EVAL [#EVAL] 將輸入的字串作為 單一的文指令碼去實行。~ 請注意所謂「單一的」的意思,代表著無法執行複數的陳述式。因此,EVAL只會作算式程度的展開,無法執行包含if、for之類制御構造的指令碼,或是定義新的函式。~ 例如以下的程式碼為把1代入變數 i 中。~ EVAL("i=1") 文並不存在逸出序列(escape sequence),字串內要包含雙括號的話請使用CHR(34)。例如將"test"代入變數 i 的寫法如下。~ EVAL("i=%(CHR(34))test%(CHR(34))") 想在執行的時候進行%的展開時,也請將%寫作CHR(37)。~ 以下的例子為執行"%(foo)"時的寫法。~ EVAL("%(CHR(34))%(CHR(37))(foo)%(CHR(34))") 轉換字串的 TOSTR(EVAL("formula")) 和埋入字串展開的 "%(formula)" 兩種寫法,其結果與EVAL的結果相同。 ** EXECUTE [Tc513-901] [#EXECUTE] EXECUTE( path [ , option ] ) 執行外部程式。~ 成功時返回0或以上的數值(OS依存),失敗時返回-1。 轉換字串的 TOSTR(EVAL("formula")) 和埋入字串展開的 "%(formula)" 兩種寫法,其結果與EVAL的結果相同。 ** EXECUTE_WAIT [Tc532-1] [#EXECUTE_WAIT] EXECUTE_WAIT( path [ , option ] ) 執行外部程式並等待其結束。~ 成功時返回0或以上的數值(OS依存),失敗時返回-1。 ---- ** FATTRIB [#a2223bfd] ** FATTRIB [#FATTRIB] 取得檔案的屬性。~ 第一參數指定為檔案或資料夾名稱,全路徑指定可能。相對路徑的場合下以 DLL load 取得的路徑為基準。~ 結果返回以下的泛用陣列。分別取得0或1的值。1的時候,表示那個屬性是有效的。然而,如果指定的檔案不存在、處理失敗的時候,返回的值不會是泛用陣列,而是單一的整數 -1 。~ ARCHIV,COMPRESSED,DIRECTORY,HIDDEN,NORMAL,OFFLINE,READONLY,SYSTEM,TEMP * [0] ARCHIV 保存文件,或是保存資料夾。~ * [1] COMPRESSED 壓縮文件,或是壓縮資料夾。~ * [2] DIRECTORY 資料夾/目錄。確認此值的話,即可分辨對象是普通的文件還是資料夾。~ * [3] HIDDEN 隱藏文件,或是隱藏資料夾。~ * [4] NORMAL 無屬性。~ * [5] OFFLINE 這個檔案現在無法使用。~ * [6] READONLY 唯讀檔。~ * [7] SYSTEM Windows用檔案。~ * [8] TEMP 暫存檔。~ ** FCHARSET [#v0acbb89] 指定檔案寫入/讀取時使用的文字編碼。有以下幾種選擇。~ * 0 Shift_JIS指定。~ * 1 UTF-8指定。~ 讀取時若在檔案先頭發現BOM(Byte Order Mark)的時候,會自動的去除掉。無法寫入BOM。~ * 127 指定OS預設的文字編碼。 ** FCHARSET [#FCHARSET] 指定檔案寫入/讀取時使用的文字編碼。~ 文字編碼清單見[[附錄>./#Appendix-Charset]]。~ ~ 請在FOPEN之前進行指定。~ 可以對檔案設定不同單位的文字編碼。~ 預設的文字編碼為基礎設定檔案中charset項目的設定值。~ 無返值。~ ** FCLOSE [v4] [#g35d73ea] ** FCLOSE [v4] [#FCLOSE] 關閉用FOPEN打開的檔案。~ 參數同樣是FOPEN指定的檔案名稱。~ 無返值。~ ** FCOPY [v4] [#y0cd8294] ** FCOPY [v4] [#FCOPY] 複製檔案。~ 第一參數為要拷貝的原檔名、第二參數為原檔所在的資料夾名稱。全路徑指定可能。相對路徑的場合下以 DLL load 取得的路徑為基準。~ 返值 0 / 1 = 失敗 / 成功。~ ** FDEL [v4] [#md268c98] ** FDEL [v4] [#FDEL] 刪除檔案。~ 全路徑指定可能。相對路徑的場合下以 aya5.dll load 取得的路徑為基準。~ 返值 0 / 1 = 失敗 / 成功。~ ** FENUM [v4] [#k997e3e8] ** FDIGEST [Tc527-1, Tc530-1追加CRC32] [#FDIGEST] FDIGEST( path , type ) 對指定的檔案產生雜湊值。~ 雜湊值種類如下: :CRC32|32bit CRC值 :MD5|MD5值 :SHA-1 或 SHA1|SHA-1值 成功時返回雜湊值的16進數,失敗時返回-1。 ** FENUM [v4] [#FENUM] 列舉指定位置存在的檔案名/資料夾名,以逗號區隔並傳回。全路徑指定可能。相對路徑的場合下以 DLL load 取得的路徑為基準。~ 資料夾的名稱會在前頭附加 " \ " 。~ 第二參數可指定分隔符號。~ ** FLOOR [v4] [#bc173ff2] ** FLOOR [v4] [#FLOOR] 實數的小數點無條件捨去。~ ** FMOVE [v4] [#z7cfa3e3] ** FMOVE [v4] [#FMOVE] 移動檔案。~ 第一參數為移動對象的檔名、第二參數為移動對象的資料夾名。全路徑指定可能。相對路徑的場合下以 DLL load 取得的路徑為基準。~ 返值 0 / 1 = 失敗 / 成功。~ ** FOPEN [v4] [#heb0f58b] ** FOPEN [v4] [#FOPEN] 開啟檔案。~ 第一參數為檔案名稱。全路徑指定可能。相對路徑的場合下以 DLL load 取得的路徑為基準。~ 第二參數中對讀取 / 寫入的指定,如下列所示。~ * "w" 或是"write" 開啟寫入模式。~ * "r" 或是"read" 開啟讀取模式。~ * "a" 或是"append" 開啟追加模式。 返值 0 / 1 / 2 = 失敗 / 成功 / 已經開啟過了。~ ** FREAD [v4] [#g04ba4aa] ** FREAD [v4] [#FREAD] 對已開啟讀取模式的檔案進行一行的讀取。~ 參數同樣是FOPEN指定的檔案名稱。~ 會自動去掉改行文字。~ 到達檔案終端時會傳回 -1 。~ ** FRENAME [v4] [#y6229893] ** FREADBIN [Tc516-901] [#FREADBIN] FREADBIN( path , size [ , char ] ) 不轉換文字編碼而讀取檔案。~ 使用FREADBIN前需要先用FOPEN開啟。~ 引數: :path|FOPEN所指定的檔名 :size|讀取長度(位元組數) 0指定時為全部 :char|遇到位元組值 0x00 時所轉換成的文字(可省略:省略時為半角空白) ** FREADENCODE [Tc535-1] [#FREADENCODE] FREADENCODE( path , size [ , type ] ) 讀取被URL編碼或Base64編碼的檔案。~ 使用FREADBIN前需要先用FOPEN開啟。~ 如沒有以二進檔模式開啟的話改行字元會被轉換。~ 引數: :path|FOPEN所指定的檔名 :size|讀取長度(位元組數) 0指定時為全部 :type|base64 或 url 省略時base64 ** FRENAME [v4] [#FRENAME] 變更檔案名稱。~ 第一參數為對象檔名、第二參數為新的檔名。全路徑指定可能。相對路徑的場合下以 DLL load 取得的路徑為基準。~ 返值 0 / 1 = 失敗 / 成功。~ ** FSIZE [v4] [#a21496bd] ** FSEEK [Tc516-901] [#FSEEK] FSEEK( path , offset , origin ) 改變檔案存取位置(檔案指針)。 引數: :path|FOPEN所指定的檔名 :offset|移動的位元組數 :origin|移動的原點的字串 (SEEK_CUR 或 current:現在的位置/SEEK_END 或 end:檔案的結尾/SEEK_SET 或 start:檔案的開端) 返值 0 / 1 = 失敗 / 成功 ** FSIZE [v4] [#FSIZE] 取得指定檔案的大小(bytes數)。~ 全路徑指定可能。相對路徑的場合下以 DLL load 取得的路徑為基準。~ 失敗的情況下則回傳-1的值。~ ** FWRITE [v4] [#va754d33] ** FTELL [Tc516-901] [#FTELL] FTELL( path ) 獲得檔案存取位置(檔案指針)。 引數: :path|FOPEN所指定的檔名 成功時返回從檔案開端數起的位元組數,失敗時返回-1。 ** FWRITE [v4] [#FWRITE] 對已開啟讀取模式的檔案進行寫入字串的動作。~ 參數同樣是FOPEN指定的檔案名稱。~ 無返值。~ ** FWRITE2 [v4] [#r4fc51c1] ** FWRITE2 [v4] [#FWRITE2] 對已開啟讀取模式的檔案進行寫入字串的動作。~ 參數同樣是FOPEN指定的檔案名稱。。~ 無返值。~ FWRITE會自動輸入改行符號。FWRITE2不會。~ ** FWRITEBIN [Tc516-901] [#FWRITEBIN] FWRITEBIN( path , string [ , char ] ) 不轉換文字編碼就寫入至檔案。~ 使用FREADBIN前需要先用FOPEN開啟。~ 如沒有以二進檔模式開啟的話改行字元會被轉換。~ 引數: :path|FOPEN所指定的檔名 :size|讀取長度(位元組數) 0指定時為全部 :char|遇到這文字時就轉換為位元組值 0x00 (可省略:省略時為半角空白) 無返值。~ ---- ** GETDELIM [#i8c4bc21] ** GETCALLSTACK [Tc513-901] [#GETCALLSTACK] GETCALLSTACK() 以泛用陣列回傳使用者函數的呼叫堆疊。 ** GETDELIM [#GETDELIM] 傳回指定變數所設定的分隔符號(簡易陣列中用來分隔元素的文字)。預設分隔符號為半形逗號。~ 請在第一參數上指定對象變數。~ ** GETLASTERROR [v4:返值的體系變更] [#kbed2060] ** GETFUNCLIST [Tc513-901] [#GETFUNCLIST] GETFUNCLIST( [ prefix ] ) 取得函數清單。 引數: :prefix|有任何字串指定時,回傳以該字串開始的函數名(省略可能)。省略時為全部函數。 成功時返回函數清單的泛用陣列,失敗時返回IARRAY。 ** GETLASTERROR [v4:返值的體系變更] [#GETLASTERROR] 傳回發生的系統函式錯誤類型的代碼。代碼如下列所示。~ |代碼|意義| |8|參數不足。| |9|參數的值有誤。| |10|無法處理空字串。| |11|沒有存放結果的變數。| |12|範圍外或是無效的值。| |13|處理失敗。| |14|無法讀取指定的外部程式庫。| |15|指定的檔案沒有被打開。| |16|正則表達式的語法有誤或是太複雜了。| |17|正則表達式的處理中產生了未定義的錯誤。| |18|應該傳遞變數的參數並非是一種變數型態。| 這個函式的返值也可以用SETLASTERROR函式來進行設定。~ 使用GETLASTERROR時,如果要確實的確認錯誤發生的地方的話可以使用下列的方式。~ SETLASTERROR(0) (使用系統函式做某些處理) if !GETLASTERROR { "錯誤發生。" } ** GETMEMINFO [v4:類似於memory系系統變數] [#p89a053f] ** GETMEMINFO [v4:類似於memory系系統變數] [#GETMEMINFO] 取得動作環境的記憶體情報。結果會傳回下列的泛用陣列。~ 物理記憶體的使用率,物理記憶體量,剩餘物理記憶體量,虛擬 + 物理記憶體量,虛擬 + 物理剩餘記憶體量 ** GETSETTING [#nf313a5d] ** GETSECCOUNT [Tc513-901] [#GETSECCOUNT] GETSECCOUNT( [ yyyy [ , mm [ , dd [ , wd [ , HH [ , MM [ , SS ] ] ] ] ] ] ] ) 從1970/1/1 00:00:00 UTC起,到參數所指定的時間所經過的秒數。 引數: 全部省略時為現在時間。 部份省略時省略的會以現在的值補上。 :yyyy|西歷年 :mm|月 :dd|日 :wd|曜日。請指定0。 :HH|時 :MM|分 :SS|秒 返值 秒數。 ** GETSETTING [#GETSETTING] 傳回作動中的文的相關設定情報。~ 第一參數指定你所想要取得的情報代號。~ * 0 版本代號。是"5.6.0.232"這樣的字串。~ * 1 文字編碼。以下數值取得。~ o 0 Shift_JIS。~ o 1 UTF-8。~ o 127 OS預設的文字編碼。 * 2 文所在資料夾的絕對路徑。 ** GETSTRBYTES [#t64a4775] ** GETSTRBYTES [#GETSTRBYTES] 傳回儲存字串所必要的byte數。~ 第一參數為對象字串、第二參數為解釋用的文字編碼。有以下幾種選擇。~ * 0 Shift_JIS。~ * 1 UTF-8。~ * 127 OS預設的文字編碼。 第二參數可省略,預設為0(Shift_JIS)。~ ** GETTICKCOUNT [v4:類似於系統變數systemuptickcount] [#w975f58b] ** GETTICKCOUNT [v4:類似於系統變數systemuptickcount] [#GETTICKCOUNT] 傳回OS啟動至今的經過時間。單位ms。超過24日20小時的話值會回到0。~ ** GETTIME [v4:類似於時刻取得系系統變數] [#ebab9946] ** GETTIME [v4:類似於時刻取得系系統變數] [#GETTIME] 現在的時間情報取得。返回結果即以下的泛用陣列。~ 西元,月,日,星期,時,分,秒 星期為0~6、0是星期日。~ ** GETTYPE [v4:類似於ISINTEGER、ISREAL] [#ge7ff1f9] 值的型別取得。~ ** GETTYPE [v4:類似於ISINTEGER、ISREAL] [#GETTYPE] 取得值的類型。~ 0 / 1 / 2 / 3 / 4 = 内部錯誤 / 整數 / 實數 / 字串 / 泛用陣列 ** GETTYPEEX [Tc537-3] [#GETTYPEEX] 比GETTYPE更嚴謹的取得值的類型。 (使用方法請參照GETTYPE) ** GETVARLIST [Tc513-901] [#GETVARLIST] GETVARLIST( [ prefix ] ) 取得現存的變數清單。 引數: :prefix|有任何字串指定時,回傳以該字串開始的變數名(省略可能)。省略時為全部變數。 成功時返回變數清單的泛用陣列,失敗時返回IARRAY。 ---- ** HEXSTRTOI [v4:HEXSTRTONUM改名] [#j5cb33ce] ** HEXSTRTOI [v4:HEXSTRTONUM改名] [#HEXSTRTOI] 將16進數值字串轉換成整數。參數異常時會傳回0。 ---- ** IARRAY [#c49e6acb] ** IARRAY [#IARRAY] 傳回空的泛用陣列。~ ** INSERT [v4:byte單位換成文字單位] [#p2a0b33a] ** INSERT [v4:byte單位換成文字單位] [#INSERT] 插入字串。第一參數為對象字串、第二參數為要插入的文字位置、第三參數為要插入的字串。~ Test { _i = "ABCHIJ" _i = INSERT(_i, 3, "DEFG") _i } 結果為"ABCDEFGHIJ"。~ ** ISFUNC [v4:ISFUNCTION改名] [#wae263fd] ** ISFUNC [v4:ISFUNCTION改名] [#ISFUNC] 傳回指定名稱的函式是否存在。~ 0 / 1 / 2 = 不存在 / 函式 / 系統函式 ** ISINTSTR [#p653a437] ** ISINTSTR [#ISINTSTR] 輸入的字串如果可以解釋為整數的話傳回 1 ,其餘為 0 。~ ** ISREALSTR [#w38d050f] ** ISREALSTR [#ISREALSTR] 輸入的字串如果可以解釋為實數的話傳回 1 ,其餘為 0 。~ ** ISVAR [#x42ae95c] ** ISVAR [#ISVAR] 傳回指定名稱的變數是否存在。~ 0 / 1 / 2 = 不存在 / 全域變數 / 區域變數 ---- ** LETTONAME [v4] [#icb04129] ** LETTONAME [v4] [#LETTONAME] 第一參數所指定的字串會被轉換成變數,第二參數為代入的值。~ 無返值。~ ** LOADLIB [v4] [#o1deb7f7] ** LOADLIB [v4] [#LOADLIB] 讀取外部程式庫。做LoadLibrary,實行load。~ 外部程式庫必須與介面用的文同樣具有公開的load/unload/request函式。~ 返值 0 / 1 / 2 = 失敗 / 成功 / 已讀取。~ ** LOG [v4] [#k5c5572e] ** LOG [v4] [#LOG] 傳回自然對數。~ ** LOG10 [v4] [#lead22c0] ** LOG10 [v4] [#LOG10] 傳回常用對數。~ ** LOGGING [v4:指定字串的寫入方式變更] [#jb69d60d] ** LOGGING [v4:指定字串的寫入方式變更] [#LOGGING] 把指定的值寫入LOG檔。不問值的型別。值為簡易陣列時會用逗號結合所有元素。~ 無返值。~ ** LSO [#b138f0ec] ** LSO [#LSO] Last Selection Order. 最後進行的選擇的結果,傳回其位置的值。~ request { _i = foo LSO } foo { "earth" "moon" "sun" } _i是"sun"的時候,LSO即為2。~ 總之,必須在選擇進行的同時一起執行。在字串選擇執行完畢後才取得的LSO值是沒有意義的。~ request { { "This is a "+ANY("pen", "pencil", "eraser")+"." } res = LSO } 如果想得到ANY的選擇結果的話,這樣的寫法是錯誤的。這裡LSO所取得的值為LSO所處在的 { } 所執行的選擇。因此 res 永遠為 0 。~ 修正成以下寫法的話即可得到你所要的答案。~ request { { "This is a "+ANY("pen", "pencil", "eraser") + "." res = LSO } } 出力確定子存在的場合,LSO會取得全部組合並進行相應的動作。~ request { { "1" "2" "3" -- "A" "B" } _i = LSO } 例如上述函式内的{ }部份會有以下幾種輸出情況。~ "1A" "2A" "3A" "1B" "2B" "3B" LSO值的範圍也和此相同,取得0~5的值。各值與上述輸出種類的順序一致。 ---- ** MKDIR [v4] [#e844047e] ** MKDIR [v4] [#MKDIR] 作成資料夾。全路徑指定可能。相對路徑的場合下以 DLL load 取得的路徑為基準。~ 只能作成一階層。~ 返值 0 / 1 = 失敗 / 成功。 ---- ** POW [v4] [#t46d1371] ** POW [v4] [#POW] 傳回第一參數的第二參數次方。 ---- ** RAND [v4] [#zc4a1d04] ** RAND [v4] [#RAND] 亂數取得。第一參數為指定的亂數範圍。產生 0 ~ (第一參數 -1 ) 之間的值。~ 沒有參數時會隨機產生 0 ~ 99 的值。~ ** RE_GETLEN [#z62b41da] ** RE_GETLEN [#RE_GETLEN] 正則表達系函式的實行結果取得。~ 返值為泛用陣列,陣列元素為 ( ) 中每個符合檢索條件的部份字串的長度。要素0為正則表達全部的符合字串的長度,要素i為第 i 項的 ( ) 符合檢索條件的部份字串的長度。~ ** RE_GETPOS [#iff6bdec] ** RE_GETPOS [#RE_GETPOS] 正則表達系函式的實行結果取得。~ 返值為泛用陣列,陣列元素為 ( ) 中每個符合檢索條件的部份字串的位置。要素0為正則表達全部的符合字串的位置,要素i為第 i 項的 ( ) 符合檢索條件的部份字串的位置。~ ** RE_GETSTR [#h3b0d9e2] ** RE_GETSTR [#RE_GETSTR] 正則表達系函式的實行結果取得。~ 返值為泛用陣列,陣列元素為 ( ) 中每個符合檢索條件的字串內容。要素0為正則表達全部的符合字串的內容,要素i為第 i 項的 ( ) 符合檢索條件的字串內容。~ ** RE_GREP [#e145caa0] ** RE_GREP [#RE_GREP] 使用正則表達式(Regular Expression)對字串進行檢索,並列出結果。~ 第一參數為處理對象字串,第二參數為正則表達式。~ 返值為找到的數量。~ 詳細的結果可從函式 RE_GETSTR、RE_GETPOS、RE_GETLEN 取得。~ 使用可能的正則表達式語法可至以下網址參考。~ boost::Regex++ Regular expression syntax(日本語) http://boost.cppll.jp/HEAD/libs/regex/syntax.htm 中文的可上網搜尋"Regular Expression"即可找到相當多的教學文章。~ ** RE_MATCH [#hc33667a] ** RE_MATCH [#RE_MATCH] 處理對象字串全體與寫入的正則表達式完全吻合時返回 1 。其他情況則返回 0 。~ 第一參數為處理對象字串、第二參數為正則表達式。~ 詳細結果可從函式 RE_GETSTR、RE_GETPOS、RE_GETLEN 取得。~ ** RE_REPLACE [#ld62511c] ** RE_REPLACE [#RE_REPLACE] 利用正則表達式對字串進行檢索,將找到的吻合部份全部取代成別的字串。~ 第一參數為處理對象字串、第二參數為正則表達式、第三參數為置換後字串。~ 詳細結果可從函式 RE_GETSTR、RE_GETPOS、RE_GETLEN 取得。~ 在使用 RE_REPLACE 與 RE_SPLIT 時,RE_GETSTR、RE_GETPOS、RE_GETLEN 的意義與其他RE系函式有些不同。其中的差異在於一邊是「第 i 次吻合的 ( ) 的內容」,一邊是「在對象字串中表示正則表達全體所吻合的第 i 項的内容」。~ ** RE_SEARCH [#e0f4f6dc] ** RE_SEARCH [#RE_SEARCH] 利用正則表達式對處理對象字串進行檢索,如果其中有與正則表達式吻合的地方則傳回 1 。沒有時則傳回 0 。~ 第一參數為處理對象字串、第二參數為正則表達式。~ 詳細結果可從函式 RE_GETSTR、RE_GETPOS、RE_GETLEN 取得。~ ** RE_SPLIT [#t9df06c8] ** RE_SPLIT [#RE_SPLIT] 利用正則表達式分割字串。分割後的結果傳回泛用陣列。~ 詳細結果可從函式 RE_GETSTR、RE_GETPOS、RE_GETLEN 取得。~ ** REPLACE [v4:Byte單位轉換成文字單位] [#r0895a41] ** REPLACE [v4:Byte單位轉換成文字單位] [#REPLACE] 取代字串。~ 第一參數為對象字串、第二參數為變換前字串、第三參數為變換後字串。符合部份會全部被取代。~ ** REQUESTLIB [v4:返值追加] [#g6425024] ** REQUESTLIB [v4:返值追加] [#REQUESTLIB] 將 Load 完畢的外部程式庫根據 request 送出字串,取得結果。~ 第一參數為 Load 時指定的程式庫檔名、第二參數為送出的 request 字串。~ 返值為結果字串。~ ** RMDIR [v4] [#ud23a175] ** RMDIR [v4] [#RMDIR] 刪除資料夾。全路徑指定可能。相對路徑的場合下以 DLL load 取得的路徑為基準。無法刪除空的資料夾。~ 返值 0 / 1 = 失敗 / 成功。~ ** ROUND [v4] [#rb045ce7] ** ROUND [v4] [#ROUND] 四捨五入實數的小數點部份。 ---- ** SAVEVAR [#o15fa8d4] ** SAVEVAR [#SAVEVAR] 變數保存。與unload時實行的處理是相同的。~ ** SETDELIM [v4:SETSEPARATOR改名] [#r0125429] ** SETDELIM [v4:SETSEPARATOR改名] [#SETDELIM] 設定變數的標準分隔符號(簡易陣列中用來區別元素的分隔文字)。預設為半形逗號。~ 第一參數為對象變數、第二參數為指定作為分隔符號的文字或字串。~ 無返值。~ 這個函式有以下的限制存在。請注意一下。~ 兩個參數必須直接寫入。~ _i = (var, "/") SETDELIM(_i) 上述例子是打算將變數var的分隔符號變更為 " / " ,但是事實上這個程式碼無法正常運作。~ 請像下面一樣,將第一參數的對象變數、第二參數的分隔符號直接指定給函式。~ SETDELIM(var, "/") ** SETLASTERROR [#oc744a9c] ** SETLASTERROR [#SETLASTERROR] 用整數設定GETLASTERROR函式返回的值。~ ** SIN [v4] [#of240f1c] ** SIN [v4] [#SIN] 返回正弦值。參數的單位為radian。~ ** SPLIT [#s2f47b99] ** SPLIT [#SPLIT] 將分割的文字串以泛用陣列傳回。可以用RE_SPLIT代替,不過不使用正則表達式時比較快。~ 第一參數為對象字串、第二參數為分割字串。~ 第三參數可以指定最大的分割數。~ _array = SPLIT("A//B//C//D//E"," //", 3) _array 即 ("A", "B", "C//D//E") 。~ 分割數為 0 時全部分割(省略時也一樣)。分割數為 1 時不會進行分割。~ ** SPLITPATH [#n0a16c5c] ** SPLITPATH [#SPLITPATH] 分解輸入的路徑字串,放入泛用陣列並傳回。~ 陣列的元素為「磁碟名」「路徑」「主檔名」「副檔名」共4個。~ _i = SPLITPATH("C:\umeici\sample\readme.txt") _i 的4個元素分別為 "C:","\umeici\sample\","readme",".txt" 。~ ** SQRT [v4] [#ab18688e] ** SQRT [v4] [#SQRT] 傳回值的平方根。~ ** STRFORM [#d1a15c50] ** STRFORM [#STRFORM] 傳回格式化的字串。與C言語的 sprintf 機能類似。~ 以下為 STRFORM 與 sprintf 的比較。除了有返值和格式指定的前置字元為" $ "這兩點不同之外,基本上是同樣的用法。~ // C言語 int year = 1941; char *warname = "太平洋"; sprintf(str, "%04d年 %s戰爭爆發。", year, warname); // 文 year = 1941 warname = "太平洋" str = STRFORM("$04d年 $s戰爭爆發。", year, warname) 一個格式指定所能展開的最大字串長度為1024文字。~ ** STRLEN [v4:byte單位轉換成文字單位、2參數的方式已廢止] [#ue815dfc] ** STRLEN [v4:byte單位轉換成文字單位、2參數的方式已廢止] [#STRLEN] 傳回字串的文字數。~ ** STRSTR [v4:byte單位轉換成文字單位。2參數的方式已廢止] [#b1aa80e3] ** STRSTR [v4:byte單位轉換成文字單位。2參數的方式已廢止] [#STRSTR] 對字串内的部分字串進行檢索,傳回找到的文字位置。~ 第一參數為對象字串、第二參數為檢索用的關鍵字、第三參數為檢索開始時的文字位置。~ ** SUBSTR [v4:byte單位轉換成文字單位] [#bb275c11] ** SUBSTR [v4:byte單位轉換成文字單位] [#SUBSTR] 取出字串中的部分字串。~ 第一參數為對象字串、第二參數為開始取得時的文字位置、第三參數為取得的文字數。 ---- ** TAN [v4] [#q2287ba1] ** TAN [v4] [#TAN] 返回正切值。參數的單位是radian。~ ** TOBINSTR [v4] [#d6290ab7] ** TOBINSTR [v4] [#TOBINSTR] 將整數轉換成2進位數值字串。參數異常時傳回空字串。~ ** TOHEXSTR [v4] [#g89ef4ef] ** TOHEXSTR [v4] [#TOHEXSTR] 將整數轉換成16進位數值字串。參數異常時傳回空字串。~ ** TOINT [v4:TONUMBER2改名] [#c6cc4b0b] ** TOINT [v4:TONUMBER2改名] [#TOINT] 將字串轉換成整數。參數異常時傳回空字串。~ ** TOLOWER [v4] [#wc906fe8] ** TOLOWER [v4] [#TOLOWER] 將字串中含有的大寫英文字母轉換成小寫英文字母。~ ** TOREAL [#ge705cf0] ** TOREAL [#TOREAL] 將字串轉換成實數。參數異常時傳回0.0。~ ** TOSTR [v4:TOSTRING2改名] [#sbbb0e0c] ** TOSTR [v4:TOSTRING2改名] [#TOSTR] 將整數、實數、泛用陣列轉換成字串。~ 輸入泛用陣列時,會傳回以逗號結合的字串。也就是說,泛用陣列會轉換成簡易陣列。~ ** TOUPPER [v4] [#tc2cb52f] ** TOUPPER [v4] [#TOUPPER] 將字串中含有的小寫英文字母轉換成大寫英文字母。 ---- ** UNLOADLIB [v4] [#cde2fc88] ** UNLOADLIB [v4] [#UNLOADLIB] 將LOADLIB所讀取的外部程式庫進行 unload 之後,執行FreeLibrary。參數為讀取時所指定的程式庫檔名。~ 無返值。 ---- ** 附錄:文字編碼 [#Appendix-Charset] *** YAYA內部文字編碼 [#Appendix-Charset_Internal] - YAYA的內部文字編碼為UCS-2。 - 讀寫辭書或外部檔案、存取外部程式庫並取得回傳字串時,原則上會全部從UCS-2轉換成所需的編碼。 *** 文字編碼和YAYA內的文字編碼ID [#Appendix-Charset_CharsetID] - 一部分函數中,需要指定文字編碼要以文字編碼ID(整數)指定。 |文字編碼|字串表現|文字編碼ID|版本|h |Shift JIS|Shift_JIS|0|| |UTF-8|UTF-8|1|| |EUC-JP|EUC_JP|2|Tc531-1| |BIG-5|BIG-5|3|Tc531-1| |GB-2312|GB-2312|4|Tc531-1| |EUC_KR|EUC_KR|5|Tc531-1| |ISO-2022-JP (JIS)|ISO-2022-JP|6|Tc531-1| |二進碼|binary|126|Tc531-1| |OS預設|OSNative|127|| *** 有關文字編碼「二進碼」 [#Appendix-Charset_Binary] 文字編碼「二進碼」是特殊的文字編碼,是直接使用UCS-2字串的下位位元組的編碼。 預定是主要與 FWRITEBIN, FREADBIN 等組合使用,把「二進碼」狀態的字串直接存取外部的用法。 但是要注意字串中的0x00無法存取是由於YAYA本身的限制所限。 還有,FUNCTIONEX等既存的系統辭書中並不會想到字串會是二進碼的。