みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
印刷するときにフィールドに文字が入りきれない場合、フィールドに入る文字数の最後の文字を”…”に変換する方法はあるでしょうか?
商品名フィールドなので全角半角混在で、全角換算で20文字目にあたる部分を変換したいです
20文字に収まる場合は変換なしにしたいです
半角を0.5 全角を1として計算すればできそうですが何をどうしたらよいのかわかりません
Let (
[
hex = HexEncode ( TextEncode ( txt ; "shift_jis" ; 1 ) ) ;
txt = TextDecode ( HexDecode ( Left ( hex ; 40 ) ; "tmp.bin" ) ; "shift_jis" )
] ;
txt & Case ( Length ( hex ) > 40 ; "…" )
)でいいのですが、40バイト目から2バイト文字が入るとエラーになりますので、別途処理が必要です。
Offline
再起式
Let ( [ $f = フィールド;
$c = 20 ;
$L = 1;
$A = Length ( $f ) ;
$式 = "Case ( $L > $A ; $l ; $L > 40 ;
Left ( $f ; $c-1 ) & ""..."" ;
Let ( [ $c = $c + 1 ;
$t = Left ( $f ; $c ) ;
$L = Length ( $t & Filter ( $t ; RomanZenkaku ( KanaZenkaku ( $t ) ) ) ) ] ;
Evaluate ( $式 ) ) )" ];
Evaluate ( $式 ) )
Offline
Shinさんの式にエラー処理を組み込むと
Let (
[
hex = HexEncode ( TextEncode ( txt ; "shift_jis" ; 1 ) ) ;
err = EvaluationError ( TextDecode ( HexDecode ( Left ( hex ; 40 ) ; "tmp.bin" ) ; "shift_jis" ) ) ;
txt = Case ( err ; TextDecode ( HexDecode ( Left ( hex ; 38 ) ; "tmp.bin" ) ; "shift_jis" ) ;
TextDecode ( HexDecode ( Left ( hex ; 40 ) ; "tmp.bin" ) ; "shift_jis" ) )
] ;
txt & Case ( Length ( hex ) > 40 ; "…" )
)
同じ計算が2回出てくるのが今一ですか
あ、40か38かのところだけCaseにすればいいんだった...それでもやっぱり同じ計算が2回出てくる感はありますが
Pages: 1
[ Generated in 0.006 seconds, 9 queries executed - Memory usage: 551.55 KiB (Peak: 579.2 KiB) ]