みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
今回の?が反る原因は、たぶんフィールドの文字数が少ない場合にだけ起きたことと思われます。
SetRecursion (
While (
[
$text = recursive::text ;
・
] ;
t2 <> "" ;
[
c = Left ( t2 ; 1 ) ;
・ ・
] ;
t1
);
Length ( $text ))
の「Length ( $text ))」部分で起きていました。
私の場合「Length ( recursive::a1 ))」使っていたのでそのまま書いていました。
いつも最初は12文字ぐらいで試していたが、再度「Length ( $text ))」では300000でも?が返り「Length ( recursive::a1 ))」にすれば問題なくテキストが返される文字数の問題は関係がない?
ローカル変数をグローバル変数にに変えると問題なく?ではなくテキストが返る
$text = recursive::a1;・・・Length ($text)
$$text = recursive::a1;・・・Length ($$text)
先に文字数の件については、
フィールドの文字種よりSetRecursion の値が小さい場合?が返される
ことと勘違いしていた・・・前に何を試していたか訳が分からなくなっていたので余計なことを書き込んで申し訳ありません。
グローバル変数に変えると問題が発生するのに気付いた。
SetRecursion (・・・Length ($$text))
では、ファイルを起動し最初に試すと?が返り再度試すとテキストが反る。
普通の日本語なら使ってる文字はせいぜい3000種類とかだろうから
とあるように文字種の数が50000を超えないならばSetRecursion ()でwhileの上限を広げる必要はないのでグローバル変数に変える必要はないかも
但し、下記の場合ローカルでは駄目みたいだった・・・改行テキストでスペース有り→改行テキストで文字間のスペースは1個だけにする。
While (
[
$$text = TrimAll ( recursive::a1;3;3 );
t2 = $$text
];
t2 <> "" ;
[
c = Left ( t2 ; 1 ) ;
$$text = Substitute ( $$text ; c ; c & " " ) ;
t2 = Substitute ( t2 ; c ; "" )
] ;
Substitute(Left($$text;Length ( $$text ) * 2 - 1);¶ & " ";¶)
)
途中ですが一応報告まで。
また間違えた計算式のタイプミスで別にグローバルにする必要はない
余計な書き込みだった。
どうでもいいことだけど、先程計算式を途中までで書き込んだので直しました。
While (
[
$text = TrimAll ( recursive::a1;3;3 );
t2 = $text
];
t2 <> "" ;
[
c = Left ( t2 ; 1 ) ;
$text = Substitute ( $text ; c ; c & " " ) ;
t2 = Substitute ( t2 ; c ; "" )
] ;
Left(Substitute($text;" " & ¶ & " ";¶);Length ( Substitute($text;" " & ¶ & " ";¶))-1))
初歩的な勘違いにようやく気付いた
変数を初期値で
SetRecursion (while[ = recursive::a1;・・・]・・・Length ($text))
の形で使用すればSetRecursionで使う変数に最初に何も指定されていないことになりあとのwhile内での$textで指定されても反映されないことになる、だからグローバルにすれば最初のスクリプトで?で返っても、もう一度同じスクリプトを実行すればテキストが返る。もし変数をSetRecursionで敢えて使用するとするならば下記のようにLet式にすれば?は返ってきません。
Let(
$text = recursive::a1;
SetRecursion (
While (
[
t1 = Substitute ( $text ; " " ; " " ) ;
t2 = Substitute ( $text ; " " ; "" );
i = 1];
i < 30;
[
c = Left ( t2 ; 1 ) ;
t1 = Substitute ( t1 ; c ; c & " " ) ;
t2 = Substitute ( t2 ; c ; "" );
i = i + 1
] ;
t1
);
Length ( $text )))
本当に余計な投稿を繰り返し誠に申し訳ありませんでした。
ああ、なるほど、そこの問題でしたか。
私の最初の#39がそういう書き方になってしまってますね。$textはスクリプトの前のステップで設定している(フィールド値だったり、計算式だったり)ので、気づきませんでした。
別件で修正した#41では式の中に$textの設定がなくなって、そのことは暗示されてるのですが、それで「不完全」に見えますね。
[ Generated in 0.032 seconds, 7 queries executed - Memory usage: 517.84 KiB (Peak: 522.38 KiB) ]