初心者のFileMaker pro Q&A (旧掲示板)

みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。

1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)

You are not logged in.

Announcement

新しい掲示板は、こちら:https://fm-aid.com/forum/t/filemaker


#1 2018-02-05 16:26:51

クネ〜ル
Member

バイト数取得する

FM13です。

以前の質問より全半角混合のテキストAフィールドのバイト数を取得できるようになりました。
Length ( A & Filter ( A } ; RomanZenkaku ( KanaZenkaku ( A ))))

もしAフィールドが15バイト以上の場合は、15バイトのみ取得するようにすることは可能でしょうか。

Left関数を使用としたところ全半角すべて1文字となるためどうしたものか悩んでいます。

よろしくお願い申し上げます。

Offline

#2 2018-02-05 17:00:32

qb_dp
Member

Re: バイト数取得する

文字列がSHIFT-JISとしてバイト数を求めた場合、
12345678901234あ
上記例の場合は、16バイトとなります。15バイト目が あ の1バイト分となるため、15バイトちょうどの文字列は、取得できません。

Left関数 で、15文字取得
バイト数判定
15バイトを超えていたら
Left関数 で、14文字取得
15バイト以内なら終了

という感じでスクリプトでLoop処理する必要があるでしょう。

Offline

#3 2018-02-05 17:37:19

チポ
Member

Re: バイト数取得する

ぴったり15バイトにならない場合は14バイトを取る再起式です。

Let ( [$t = テキスト ;
        $c = 6 ;
        $b = 0 ;
        $f = "Case ( $b = 15 ; $l ;
                           $b > 15 ; Left ( $l ; $c - 1 ) ;
                            Let ( [ $c= $c + 1 ;
                                     $l = Left ( $t ; $c ) ;
                                    $b = Length ( $l & Filter ( $l ; RomanZenkaku ( KanaZenkaku ( $l ) ) ) ) ] ;
                            Evaluate ( $f ) ) )"
       ] ;
        Evaluate ( $f ) )

Offline

#4 2018-02-05 17:48:02

チポ
Member

Re: バイト数取得する

ああ、14バイト以下の場合を考慮しないとダメです

Case ( Length ( テキスト & Filter ( テキスト ; RomanZenkaku ( KanaZenkaku ( テキスト ) ) ) ) > 14 ;
Let ( [$t = テキスト ;
        $c = 6 ;
        $b = 0 ;
        $f = "Case ( $b = 15 ; $l ;
                            $b > 15 ; Left ( $l ; $c - 1 ) ;
                            Let ( [ $c= $c + 1 ;
                                     $l = Left ( $t ; $c ) ;
                                    $b = Length ( $l & Filter ( $l ; RomanZenkaku ( KanaZenkaku ( $l ) ) ) ) ] ;
                            Evaluate ( $f ) ) )"
       ] ;
        Evaluate ( $f ) ) ; テキスト )

訂正お願いします。

Offline

#5 2018-02-05 18:30:48

クネ〜ル
Member

Re: バイト数取得する

チポ様毎度ありがとうございます。
ご回答を見る限り自分では到底たどり着ける範囲ではなさそうですが、
バッチリ解決いたしました。

Offline

Registered users online in this topic: 0, guests: 1
[Bot] ClaudeBot

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.005 seconds, 7 queries executed - Memory usage: 509.16 KiB (Peak: 516.04 KiB) ]