サポート情報
テキストエディタ MIFES 8

長い文字列を扱うマクロコマンドが動かなくなった

公開日:2010年3月24日

■回答

Ver.8.10にアップデート後、「長い文字列を扱うマクロコマンドの動きがおかしくなった」というご報告をいただいております。

これは、配列変数@str1〜@str8、@@str1〜@@str8の要素数が1024から、2048に拡張されたことによるものと思われます。

以下のような処理を行っている場合は、お手数ですがご対応くださいますよう、お願いいたします。

(1)

配列の要素IDの値が上限を超えた場合には、その値を配列の最大要素数(これまでは1024)で割った余りが配列の要素IDと見なされることを利用している場合
例) @str1[1024] は @str1[0] と同じになることを利用したプログラミングを行っているなど

  <対応方法>
上記の特性を利用せず、1024を超えた場合の処理を追加するか、配列の最大要素数を2048とした処理に修正してください。

(2)

calldll(),calldll1()〜calldll5()関数で、@str1[]〜@str8[]、@@str1[]〜@@str8[]までがメモリー上で連続した領域であること利用して長い文字列を扱っている場合

  <対応方法>
以下を参考に配列変数名を修正してください。
@str1[0] → @str1[0] @@str1[0] → @@str1[0]
@str2[0] → &@str1[1024] @@str2[0] → &@@str1[1024]
@str3[0] → @str2[0] @@str3[0] → @@str2[0]
@str4[0] → &@str2[1024] @@str4[0] → &@@str2[1024]
@str5[0] → @str3[0] @@str5[0] → @@str3[0]
@str6[0] → &@str3[1024] @@str6[0] → &@@str3[1024]
@str7[0] → @str4[0] @@str7[0] → @@str4[0]
@str8[0] → &@str4[1024] @@str8[0] → &@@str4[1024]

(3)

getline(),getstring(),getselstring(),fread(),getenv(),strncpy()等、長い文字列を扱う可能性のある関数の使用において、配列変数の限界を超えた長い文字列を扱うために、@nextbyte を使用する等の工夫を使用したプログラミングを行っている場合や配列の最大要素数が変更された場合

  • ※上記の場合でも、@nextbyteの使用方法が適切であれば、特に互換性の問題はありません。
  • ※関数値(指定の配列に返された文字列の文字数)が0〜1023であることを想定したプログラミングを行っていると、互換性が失われます。

 

<対応方法>
システム変数 @nextbyte を使用するように修正するか、配列の要素数を2048とした処理に修正してください。
一覧に戻る
テキストエディタ MIFES 製品情報