掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
RichEditに絵文字を表示させるには (ID:149509)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
ついでですので,更に追加です. > このように,文字には数値が割り当てられています. Delphi 2009 以降は UTF-16 と呼ばれる文字符号化方式ですが, その符号化の内,BMP (Basic Multilingual Plane) と呼ばれる領域があります. これはコードポイントが 2 バイトで,世界中のほとんどの文字・記号類が含まれています. しかし,これでは不足するため,2 バイトを超える文字符号が定義されています. 2 バイトを超える文字符号にもいろいろ種類がありますが,絵文字もそうです. 今回の $1F600 は「絵文字」の記事に書いている通りサロゲートペアと言って, 実際には 2 バイトの符号のペアで構成されています. このことは,以下のコードで確認できます.どちらも同じ文字を表示します. このようなのを複数エレメント構成の文字といいます. ただし,実際に使用する時は $1F600 を使用することができます. procedure TForm1.Button1Click(Sender: TObject); begin Edit1.Font.Name := 'Segoe UI Emoji'; Edit1.Font.Size := 20; Edit1.Text := #$1F600; end; procedure TForm1.Button2Click(Sender: TObject); begin Edit1.Font.Name := 'Segoe UI Emoji'; Edit1.Font.Size := 20; Edit1.Text := #$D83D#$DE00; end; よく使用されている Char 関数は 2 バイト用です.SizeOf(Char) は 2 を返します. そのため,「絵文字」のサンプルでは MECSUtils の関数を使用しています. 「絵文字」の記事のサンプルでは Char 関数を使用していません. MECSUtils は「絵文字」の記事にリンクを貼っています.そこから入手できます. サロゲートペアについても「絵文字」の記事にリンクを貼っています. 記事だけでなくリンクも参考にしてください.記事中のリンクは伊達ではありません. バイトの意味については以下を参考にしてください. 今回の $1F600 は 2 バイトのペアですから,4 バイトです. 2 バイトは 16 ビットです.4 バイトは 32 ビットです. 「絵文字」の記事に 32 ビット云々のリンクを貼っています. [ テキストをバイナリに変換して保存 ] http://mrxray.on.coocan.jp/Delphi/Others/TextToBinary.htm U+1F600 https://unicode.org/emoji/charts/full-emoji-list.html#1f600 ※ 私はエスパー (超能力者) ではありません. ※ プログラムというのは,コードを書いてそれを実行します. ※ どんなコードを実行して,どんな結果になったのか, ※ ダメとかエラーが発生しましただけで状況が理解できる能力は,私にはありません.
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.