メガソフトトップサポートテキストエディタ MIFESシリーズマクロガイド > 記述例集-逆引きリファレンス(2)

MIFES

サポート情報 アップデータ製品情報

マクロガイド

マクロガイドトップに戻る

マクロについて 作成のための機能 ライブラリとキー割当 記述例集 ダウンロード
(1) (2) (3)

※このページのサンプルソース(枠内)は、MIFESにコピーしてコンパイルすると、コマンドとして実行できます。

文字列を配列変数にセットする

文字列を配列変数にセットするときは、strcpy関数を使用します。

以下のサンプルソースは、文字列を格納できる配列変数「@str1」に「MIFES8」をセットして、カーソル位置に挿入しています。

*setMIFES8    文字列MIFES8を@str1にセットする
  @1 = strcpy( @str1, "MIFES8")
  insstr( @str1 )
*

※セットする文字数を指定したいときは、strncpy関数をご利用ください。


文字列を比較する

数値の比較は論理式で行いますが、文字列を比較するときはstrcmp関数を使用します。

以下のサンプルソースは、パスワードとして2度文字列を入力し、同じ文字列が入力されたかどうかをチェックしています。

*chkPassWD    入力した2つのパスワードが等しいかチェックする
  @1 = input( @str1, "パスワードを入力" )    ;1度目入力
  @2 = input( @str2, "もう一度パスワードを入力" )    ;2度目入力
  if strcmp( @str1, @str2 ) != 0    ;2つのパスワードが異なる時
    @3 = messagebox( "パスワードが違います。", "パスワード入力", MB_OK|MB_ICONSTOP )
  else    ;それ以外
    @3 = messagebox( "パスワードOKです。", "パスワード入力", MB_OK )
  endif
*

※大文字/小文字を区別せずに比較したいときは、strcmpi関数をご利用ください。

文字列と文字列をつなぐ

文字列と文字列をつなげるときには、sprintf関数を使用します。

以下のサンプルソースは、ユーザーが入力したファイル名「@str1」に、拡張子「.dat」を付けて「@str2」にセットして、カーソル位置に挿入しています。

*ADDdotdat    文字列の後に「.dat」を追加する

  @1 = input( @str1, "ファイル名を入力してください。" )
  @2 = sprintf( @str2, "%s%s", @str1, ".dat")
  insstr( @str2 )
*


文字列の一部を取り出す

strncpy関数で取り出して、別の変数にセットする方法です。

以下のサンプルソースでは、@str1の5文字目から10文字分を@str2にセットしています。
文字列を格納する配列変数の1文字目は[0]番目なので、「@str1の5文字目」は「&@str1[4]」と記述します。

*get4to10    文字列の4文字目から10文字分を取り出す
  @1 = strcpy( @str1, "ABCDEFGHIJKLMNOPQRSTUVWXYZ")
  strncpy( @str2, &@str1[4], 10 )
  insstr( @str2 )
*


文字列を数値に変換して計算する

キー入力した数字列を数値に変換して計算するという処理は比較的よく行われます。

文字列を数値に変換するにはatol関数を使います。
以下のサンプルソースは、ユーザーが入力した数字列を数値に変換し、16倍して、結果をメッセージボックスに表示しています。

*16bai    16倍する
  @1 = input( @str1, "値を入力してください" )
  @2 = atol( @str1 ) * 16
  @3 = sprintf( @str2, "%s × 16 = %d", @str1, @2 )
  @4 = messagebox( @str2, "16倍しました", MB_OK )
*


文字列内の指定文字の位置を得る

関数はないので、while構文で1文字ずつ探します。
以下のサンプルソースは@str1にセットされた「MIFES.dat」の「.」の位置を調べています。

*position    ピリオドの位置を調べる
  @1 = sprintf( @str1, "%s", "MIFES.dat") ;@str1に「MIFES.dat」を、@1には文字数をセット。
  @2 = 0
  while @2 < @1 ;@str1の最後まで1文字ずつ繰り返し
      strncpy( @str3, &@str2[@2], 1) ;1文字だけ@str3に取り出し
      if strcmp( ".", @str3) == 0 ;@str3が「.」なら
         printf( ".は%d文字目", @2+1)
         exit ;終了
     else
         @2 = @2 + 1 ;次の文字へ移動
     endif
  wend ;ここまでの処理を繰り返す
*


前へ 次へ

この資料の内容は予告なしに変更されることがあります。 いかなる場合でも、この資料の内容およびその運用の結果に関しては一切の責任を負いません。 この資料に記載されている会社名、製品名は、各社の登録商標または商標です。 この資料の一部または全部を無断で使用、複製することはできません。
Copyright(C) MEGASOFT Inc.

ページのトップへ戻る
スタッフが最新情報などを配信中!
MIFES公式facebookページ
MIFES公式twitter

サポート調査依頼

アップデータ