Delphi7 にてJIS第三水準の文字を扱うには?

解決


HeavyMetal  2008-06-18 01:45:21  No: 30999

初めて投稿します。

Delphi7 で旧漢字(JIS第三水準の文字)を入力しようとすると、"?"になってしまいます。
Delphi7 ではコードページ932を使っているようではありますが、JIS第三水準の文字を入出力できるようにする方法はありませんか?

よろしくお願いします。


OSは?  2008-06-18 05:16:14  No: 31000

OSが不明。Vistaなら標準で扱えるのかな?
WinXP、Win2000でJIS第三水準・第四水準の文字を扱う方法が
↓ここに書いてあるけど、Unicodeに対応させる必要ありなのね。
http://daukan.hp.infoseek.co.jp/code/jisx0213.htm
DelphiでUnicodeを本格的に扱うには、VCLもUnicode対応にすることで、
そのコンポは↓ここに。
http://mh-nexus.de/tntunicodecontrols.htm


HeavyMetal  2008-06-19 19:18:15  No: 31001

OSは?さん、
ありがとうございます。

OSはWinXPです。
ご紹介いただいたMicrosoftのパッチですが、既に当てています。
また、TNT Unicode Controls もDLし試してみましたが、JIS第三水準の文字は
扱えるようにはなりません…


もにゃ  2008-06-19 21:37:45  No: 31002

UNICODEはANSIstringではなくWIDEstringで扱わなくてはなりません。
あとAPIはすべてwがつくものを使用しなくてはなりません。
Delphi2007まではデフォルトAPIはすべてANSI型なので全く使えません。
Delphi2008からは標準がUNICODEになる予定だそうです。
急ぎでなければあと100日待ちましょう。

procedure TForm1.Button1Click(Sender: TObject);
var
  wc:WideString;
begin
  wc :='';
  wc :=wc + #$2600;
  wc :=wc + #$2601;
  wc :=wc + #$2602;
  wc :=wc + #$2603;
  wc :=wc + #$2604;
  //メッセージボックス
  MessageBoxW(Handle,PWideChar(wc),'',MB_OK);
  //Canvas描画
  TextOutW(Canvas.Handle,0,0,PWideChar(wc),Length(wc));
end;


HeavyMetal  2008-06-19 22:13:43  No: 31003

もにゃさん、
ありがとうございます。

> UNICODEはANSIstringではなくWIDEstringで扱わなくてはなりません。
> あとAPIはすべてwがつくものを使用しなくてはなりません。
> Delphi2007まではデフォルトAPIはすべてANSI型なので全く使えません。

Delphi2007までは TEdit の text プロパティなどではunicodeは扱えない、
ということでしょうか?


もにゃ  2008-06-19 23:32:53  No: 31004

扱えません。
もちろん、改造すれば扱えますが、
その改造を行ったのものがTNTcontrol群です。
TNT Editをフォームに貼り付けて、
メモ帳からUnicode文字をコピぺしてみてください。
うまく貼り付けられると思います。
プログラム上でそれらの文字を扱う場合はstringではなくwidestringを指定してあげてください。


HeavyMetal  2008-06-20 04:18:33  No: 31005

もにゃさん、
度々ありがとうございます。

TntEditを使うことで解決できました。
お忙しい中、ありがとうございました!


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加