windows Xp pro sp3
VB6 sp6 です。
テキスト形式で”(全角ダブルクォーテーション)又は’(全角のシングルクォーテーション)が入った文書を作成したとします。その文書をRichTextBoxで読み込むと"(半角ダブルクォーテーション)、’(全角のシングルクォーテーション)に変換されてしまいます。RTF形式で保存、読み込み、コピー AND ペーストでも同様な現象となります。
このような現象を回避する方法をご存知でしたらご教示ください。
よろしくお願いいたします。
> RTF形式で保存、読み込み、コピー AND ペーストでも同様な現象となります。
現象を再現できませんでした。こちらでも検証してみたいので、
・実際の文書ファイルの内容
・RichTextBox の設定(フォント指定など)
などを提示していただけ無いでしょうか。
また、コピー & ペースト等では無く、直接入力に対しても、
そのような変換がおこなわれてしまうのでしょうか?
魔界の仮面弁士さんありがとうございます。
私の環境で発生サンプルとしては
新しいFromにRichTextBoxを貼り付けます。
RichTextBoxの内容を.SaveFile xxxx,rtfRTFで保存、
.LoadFile xxxxx, rtfRTFで読み込みできるようにして
適当なテキストを打ち込みます全角の’又は”を含む
書き込みを実施後、クリヤーして読み込むと全角が半角になります。
テキスト形式で保存するとなりません。
以上、よろしくお願い致します。
説明を追加致します。
作成しているプログラムでは各行の末尾に制御文字等を追加する必要があることから表示のままの状態をAPIを使用して各行ごと抽出し、制御文字を追加して、抽出行に戻す作業を実施します。行の情報はテキストのみの扱いとしてます。この作業を実施するとサンプルと同様な全角が半角となる現象が発生します。
よろしくお願い致します。
GOD様、ありがとうございます。
貴URLは参考にしましたが、解決はできませんでした。
他に方法はないでしょうか?
他にもっと良いやり方があるかもしれませんが、これではどうでしょう。
Private Sub TRFRead(FName As String)
Dim strRTF As String
Dim intFNo As Integer
Dim strFName As String
intFNo = FreeFile
Open FName For Binary As intFNo
strRTF = String(LOF(intFNo), vbNullChar)
Get intFNo, , strRTF
Close intFNo
'これいるかな?
strRTF = Replace(strRTF, "\rquote ", "\rquote")
strRTF = Replace(strRTF, "\rdblquote ", "\rdblquote")
'シングルクォート変換
strRTF = Replace(strRTF, "\rquote", "\'81\'66")
'ダブルクォート変換
strRTF = Replace(strRTF, "\rdblquote", "\'81\'68")
RichTextBox1.TextRTF = strRTF
End Sub
GODさんありがとうございます。
参考にさせていただきます。
少し時間がかかると思いますので、後ほど結果報告させていただきます。
GODさんありがとうございました。
読み出し時に変更することで、なんとか使用できる目途がつきました。
今後ともよろしくお願い致します。