AnsweredAssumed Answered

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

Question asked by ねこ吉 on Aug 18, 2011
Latest reply on Aug 31, 2011 by TSGalJ

概要

変数に 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) ; "¶" )
のような置換を行って、改行を整頓すれば問題はおきないようです。

Outcomes