Delphi2005で欧文の文字(UTF-8)をTEditに表示


お世話になります  2012-09-26 00:39:16  No: 43011

Delphi2005でプログラムを作っています。
UTFコードの文字(ドイツ語)をTEditに表示させたいのですが、文字化けしてしまいます(ウムラウト等)。
なにかいい方法があるでしょうか?


igy  2012-09-26 02:08:20  No: 43012

UNICODE対応のDelphi2009以降を使うのは、だめですか?
# 最新の DelphiXE3 体験版がダウンロードできるので、それで試してみるとか・・・


igy  2012-09-26 02:37:35  No: 43013

Delphi2005で、ということでしたら、

TMS Unicode Component Pack(英語版)
http://www.componentsource.co.jp/products/tms-unicode-component-pack/index.html

のようなコンポーネントもあるようです。
# 実際、使ったことはないので、“お世話になります”さんが希望されることができるかわかりませんが・・・


お世話になります  2012-09-26 16:56:44  No: 43014

igyさん、ありがとうございます。
今はあまりお金がないので、体験版でやってみます。
ところで、Delphi2005のプログラムはそのまま使えるのでしょうか?
(TEditに表示する部分以外は)正常に動いているソフトを修正して使いたいのです。


igy  2012-09-26 20:25:45  No: 43015

>ところで、Delphi2005のプログラムはそのまま使えるのでしょうか?
>(TEditに表示する部分以外は)正常に動いているソフトを修正して使いたいのです。

思いつくことを、挙げてみると・・・

・Delphi2005にコンポーネントをインストールして使用しているなら、XE3に対応したものが必要です。
・Delphi2005には標準搭載されていたが、XE3に搭載されなくなったコンポーネントがあれば、
  その処理の部分の書き換えか、
  (Starter版以外の製品版のXE3には旧バージョンの2009〜XE2もダウンロードして使用できますので、)
  Delphi2009〜XE2で搭載されているなら、XE3ではなく、搭載しているほうのDelphiを使用するなど、検討する必要があります。
・UNICODE対応のための修正
  DEKOさんの資料
  http://ht-deko.minim.ne.jp/tech045.html#tech093
  あたりを参照してみてください。

でしょうか。


au  2012-09-26 20:38:46  No: 43016

TMS Unicode Component Packの元になったTNT Unicode Controlsが下記からダウンロード出来るようなので、Delphi2005で行くならこちらを使うのもありかと思います。
http://www.yunqa.de/delphi/doku.php/products/tntunicodecontrols/index


お世話になります  2012-09-29 01:57:22  No: 43017

XE3の体験版を使ってみようかと思ったんですが、いろいろと変更するところが多いみたいで、私にはハードルが高いです。
1ヶ月という制限もあります。
TNT Unicode Controlsを使ってみようかと思って検索していたんですが、いまいちよくわからず、調べているうちにRichEditでもいける(Delphi2005でも?)ようなことを書いていたので、RichEditに表示させようとしたのですが、やはり文字化けしました。
RichEditでエンコードを指定する方法でもあるのでしょうか?


けど  2012-09-29 07:56:15  No: 43018

表示するのが目的なら TWebBrowser 使っちゃうとか
  WebBrowser1.Navigate('D:\中身がUNICODE.txt');
右クリックとかできちゃうけど


お世話になります  2012-09-29 14:50:52  No: 43019

けどさん、ありがとうございます。
試してみます。


takana  2012-09-29 16:46:47  No: 43020

WebBrowserを使った方法で、右クリックの内容を変更したいなら以下のコードで可能です。

PopupMenu1: TPopupMenu;
を追加したら、右クリックメニューを自由にカスタマイズすることが可能です。
ただし、クリップボードへのコピーを可能にしたいなら以下を参照して下さい
https://www.petitmonte.com/bbs/answers?question_id=4744

procedure TForm1.FormCreate(Sender: TObject);
begin
  WebBrowser1.Navigate('D:\中身がUNICODE.txt');

  Application.OnMessage := HookWndProc;
end;

procedure TForm1.HookWndProc(var Msg: TMsg; var Handled: Boolean);
//var
//  Pos: TPoint;
begin
  with msg do
  begin
    if (message = WM_CONTEXTMENU) or (message = WM_RBUTTONUP) then
    begin
      if GetParent(GetParent(hwnd)) = WebBrowser1.Handle then
      begin
//        GetCursorPos(Pos);
//        PopupMenu1.Popup(Pos.x, Pos.y);
        Handled := true;
        Exit;
      end;
    end;
  end;
end;


こんぽ  2012-09-29 17:43:03  No: 43021

SpTBXLibとか
http://www.silverpointdevelopment.com/


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

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






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