1 返信 最新の回答 日時: Aug 31, 2011 12:49 AM ユーザー:TSGalJ

    変数に CR+LF を含む文字列を代入

    ねこ吉

      概要

      変数に CR+LF を含む文字列を代入

      製品

      FileMaker Pro

      バージョン

      Mac 版 11.0v4 および Windows版 11.0v3

      オペレーティングシステムのバージョン

      Mac OSX 10.6.8 および Windows XP SP SP3

      問題の内容

      CR+LF の改行コードを含む文字列に対して、Position関数や Length関数で取得される文字数が正しく取得できない場合がある。

      GetLayoutObjectAttributeで、Webページのソースを取得した文字列に対して、計算をする場合に発生する。(Webページのソースが、CR+LF の改行で作られている場合。)

      問題の再現方法

      (1) 改行コードが CR+LF である Webページをダミーで作成し、Webビューアに表示させる。
      (2) GetLayoutObjectAttribute で、Webのソース(HTML文)を $source という変数に取得する。
      (3) たとえば、(2) の直後に Length ($source) の結果が100文字であったとする。
      (4) 変数を設定スクリプトで、
        $source ← "¶" & $source という代入を実行する。
      (5) 再び、Length ($source) を実行する。
       予測される結果は、101文字のはずであるが、このとき 81文字のように、(4)実行前よりも少ない数値が返却される。

      予想された結果

      文字列を連結しているのに、連結前より文字数が少なくなるのはおかしいと思います。(5) の返却結果は、101になるべきでは。

      対処方法

      GetLayoutObjectAttribute 直後に、
      Substitute ( $source ; Char(13) & Char(10) ; "¶" )
      のような置換を行って、改行を整頓すれば問題はおきないようです。

        • 1. Re: 変数に CR+LF を含む文字列を代入
          TSGalJ

          ねこ吉 様

          平素は弊社製品をご愛顧いただき。誠にありがとうございます。

          ご投稿いただきました CR+LF の改行コードを含む文字列に対して、Position 関数や Length 関数で正しく字数数が取得できない現象について、特に文字列に全角文字が含まれる場合に再現することを確認いたしました。

          不具合情報として、開発部門に報告させていただきます。

          なお、おとりいただける回避策としましては、ご投稿の通り、CR や LF を一旦 ¶ に置換しておいていただくことのみとなるようです。

          このたびは貴重な不具合情報をご投稿いただき、誠にありがとうございました。

          今後とも、ファイルメーカー社製品をよろしくお願い申し上げます。

          TSGalJ

          ファイルメーカー株式会社