Chapter4. 拡張関数


4.2 システム関数

関数名
S@IMEGETEDITSTR
機能
日本語エディトで入力中の文字列を取得する。
書式
char S@IMEGETEDITSTR(num)
《パラメーター》
引数 説明
num int。
0:その時点で入力されている文字列を取得する。
1以上:取得したい先頭から指定した番号の単語を取得する。文字列中の単語は左側から1,2,3・・・と指定する。
戻り値 説明
char
取得した文字列を戻す
解説
入力中の文字列は単語単位に分け編集を行う。この編集中の文字列を取得するには、S@IMEGETEDITSTRでその時点で入力中の文字列を全て取得した後、取得した文字列から単語単位に文字列を取得する。
S@IMEGETEDITSTRの第一引数に0を設定し実行するとその時点で入力中の文字列を全て取得する。
その後S@IMEGETEDITSTRの第一引数に1以上を設定することで先頭から指定した番号の単語を取得する。例えば「きょうはいいてんきです」を変換すると「きょうは」「いい」「てんきです」の3つに分割される。第一引数に3を設定し実行すると「てんきです」を取得できる。文字列が存在しない番号を指定すると「」(文字列なし)を取得する。上記の例の場合4以上は「」となる。変換を確定した文字列はS@IMEGETEDITRESULTで取得できる。
用例
日本語エディト機能のサンプル
CH=G@SETUP(400,100,16,1)
S@IMESETMODE(1)
S@IMESETEDITMODE(1)
LOOP
  G@CHRCLEAR(CH)
  S@IMEGETEDITSTR(0)
  MX = 0
  I = 1
  LOOP
    MOJI$ = S@IMEGETEDITSTR( I )
    IF MOJI$ == "" THEN
      BREAK
    ENDIF
    ST=S@IMEGETEDITSTATE( I )
    SWITCH(ST)
    CASE 1:
      G@FONT( 24 , 0 , 0 , 3 , "MS 明朝" )
      BREAK;
    CASE 2:
      G@FONT( 24 , 0 , 1 , 3 , "MS 明朝" )
      BREAK;
    CASE 3:
      G@FONT( 24 , 0 , 2 , 3 , "MS 明朝" )
      BREAK;
    ENDSWITCH
    G@PRINT(CH,MX,0,MOJI$)
    MX = MX + LENG(MOJI$)*12
    I = I + 1
  ENDLOOP
  WKEKKA$ = S@IMEGETEDITRESULT()
  IF WKEKKA$ <> "" THEN
    KEKKA$ = WKEKKA$
  ENDIF
  G@FONT( 24 , 0 , 0 , 3 , "MS 明朝" )
  G@PRINT(CH,0,64,KEKKA$)
  CUR=S@IMEGETEDITCOLUMN()
  G@PRINT(CH,12*CUR,32,"^")
  G@FLIP()
ENDLOOP