Visual Basic 6.0 プログラムでは、関数 chr(11) に文字列を追加して使用し、テキスト ボックスに表示しました。
Windows 2003 Server では、テキスト ボックスの値は「ボックス (chr(11) の場合) の後に文字列が続く」と表示されます。Windows 7 では、テキスト ボックスの値は「♂ (chr(11) の場合) の後に文字列が続く」と表示されます。 "
なぜこのように振る舞うのか、誰にもアドバイスできますか?
前もって感謝します。
Visual Basic 6.0 プログラムでは、関数 chr(11) に文字列を追加して使用し、テキスト ボックスに表示しました。
Windows 2003 Server では、テキスト ボックスの値は「ボックス (chr(11) の場合) の後に文字列が続く」と表示されます。Windows 7 では、テキスト ボックスの値は「♂ (chr(11) の場合) の後に文字列が続く」と表示されます。 "
なぜこのように振る舞うのか、誰にもアドバイスできますか?
前もって感謝します。
おそらくフォントの違いでしょう。
同じ「フェイス名」が使用されている場合でも、実際にインストールされているフォントは、どのグリフがサポートされているかなどの点で異なる場合があります。
あなたのプログラムはどんな意味でも ASCII を使っているのではなく、ANSI を使っていることに注意してください。プログラム内の Unicode から表示用の ANSI へのマッピングは、ロケールと文字セットの設定によっても異なります。ここでは、文字セットも要因になる可能性があります。
Chr(11)
「11 を取り、それを現在のコードページの ANSI 文字として扱い、それを Unicode に変換してから、Variant String として返します。」
Chr$(11)
文字列を返すことでそのオーバーヘッドの一部を取り除き、ChrW$(11)
さらにクリーンで、ANSI から Unicode への変換によるロンダリングもスキップします。
vbVerticalTab
代わりに、この文字に名前付き定数を使用する方がさらに高速です。
しかし、どれもdisplayには影響しません。それは、不必要なオーバーヘッドを回避することの問題です。
信頼できないものに依存しています。つまり、印刷できない文字には常にグリフがあるということです。表示される「ボックス」記号は、その文字に使用できるグリフがないことを意味します。
Character Map アプレットでさえ、33 未満の値 (&H21) のグリフ マッピングを表示しません。