• ベストアンサー

Turbo Delphi での、unicode 出力について

お世話になります。 Turbo Delphi という体験版を入れてみました。 Delphi9 では、unicode をサポートしているようですが、 Turbo Delphi でも、WideString で、unicode を扱えるとのことですが、 実際にファイル出力の仕方がよく分りません。 WideString := 'abcABC'; として、 Writeln(TextFile, WideString); と出力しても、s_jis で出力されるようです。 何かご存知の方いらしたらお教えください。 宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • SHIMAPEE
  • ベストアンサー率75% (154/203)
回答No.1

Windows XP SP3, Vista SP1 + Delphi2007 Proで試してみました。 Writeln(TextFile, WideString); ではおっしゃるとおりs_jisになってしまいました。おそらくstringに変換されてしまうのだと思います。型なしファイルのBlockWriteやTFileStreamのWriteを使うとUnicodeで書き込めます。 program WideString; {$APPTYPE CONSOLE} uses Classes; var wstr: System.WideString; mstr: string; f: File; fs: TFileStream; begin wstr:='123abcあいう123abc'; mstr:='456defかきく456def'; wstr:=wstr+mstr; AssignFile(f, 'test.txt'); Rewrite(f, 1); try BlockWrite(f, wstr[1], length(wstr)*2); finally CloseFile(f); end; fs:=TFileStream.Create('testfs.txt', fmCreate); try fs.Write(wstr[1], length(wstr)*2); finally fs.Free; end; end.

kttn
質問者

お礼

SHIMAPEE様 回答ありがとうございました。 お礼が遅れ申し訳ございませんでした。 BlockWrite で、unicodeでの出力を確認しました。 先頭に、BOMを付けることを確認していました。 program Test; {$APPTYPE CONSOLE} uses Classes; var f: File; fpass: String; str1: WideString; begin fpass := 'c:\xxxxxx.txt'; AssignFile(f, fpass); ReWrite(f, 1); str1 := WideChar($FEFF) + 'abcABC' + WideChar($000D) + WideChar($000A); try BlockWrite(f, str1[1], Length(str1) * 2); finally CloseFile(f); end; end. として、出力が確認できました。文法をよく理解できていないので、 時間がかかってしまいました。 今現在、まだ、手が回りませんが、TFileStream についても、勉強させていただきます。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 無償で使えた Turbo Delphi Explorerについて 

    お世話になります。 無償と言う事だったので、今年の5月頃に「Turbo Delphi 2006 Explorrer 」をダウンロードして使わせていただいております。 実際には、完全無償と言うより、試用期間が36000日もある状態で、実質無償のような使い方ができております。 先程、知り合いの人から、Delphi相談を受けたので、この様な物があるよということで、この「Turbo Delphi 2006 Explorrer 」を勧めたのですが、先程、ダウンロードページを探してみても、このダウンロードページが見当たらなくなっていました。 ダウンロードページの試用版は、通常良くある30日のものだけでした。 「Turbo Delphi Explorrer 」の無償提供は もう無くなったのでしょうか? ご存知の方がいらっしゃいましたら、教えていただければと思います。 よろしくお願いします。

  • TurboDelphiかDelphi2007か

    お世話になってます。 この度、Delphiを始めようと思い、いろいろ調べています。 そこで悩みが出てきまして、TurboDelphiにするかDelphi2007にするかで困っています。 無償版は他コンポーネントが使用できないので最初から考えていません。 Win32アプリで考えているので.NETに対応していない2007でも問題はありません。 配布を前提としたWinアプリを作るつもりなのですが、コストパフォーマンスだけで言ったらTurboでしょうか。 でもVista対応している2007のメリットがいまいち分からないのです。 まだVistaを使用したことがないので、2007をチョイスした場合どれだけのメリットがあるのかが分かりません。 今選ぶとしたら、Turboか?2007か?

  • unicode と shift_jis

    テキストファイルを読み込みデータを作成して出力するプログラムを作成しているのですが国際化させることになりました。そこで問題が‥テキストファイルが日本用はshift_jis、海外用はunicodeで構成されています。shift_jisでの文字列操作は良いとしてunicodeが全然わかりません。海外向けを想定したときに気をつけなければならないこともわかりません。なんでもいいので教えてください。お願いします。特に、unicodeの文字列操作はまったくよくわかりませんので細かい点から教えていただけると光栄です。よろしいお願いします。

  • SQLServer2005でSELECTした結果(クエリ結果)をS-JISで出力する

    SQLServer2005でSELECTした結果(クエリ結果)をファイル出力した場合、UNICODEで出力されてしまいます。 S-JISで出力する方法をご存じの方、ご教示いただけないでしょうか?

  • Delphi6を、バージョンアップする利点。

    今まで、フリー版のDelphi6(personal)を使っていたのですが、時間も出来たので、バージョンをあげようかと。 今だと、Delphi2006ですよね? まずは、バージョンをあげる利点はあるでしょうか? 何か大きな違いはありましたか? また、ノートはCPU(800Mhz)の関係で、Delphi6を使い続けようと思うのですが、Delphi2006との互換性はあるのでしょうか? 次は、Turbo Delphi Explorerと.NET Explorerの違いです。 .NETは、.NET Framework用って事なんでしょうか? (実は、.NET FrameworkはJAVAの仮想環境っぽいやつくらいのイメージしかないです。^^;) もう一つは、コンポーネントの取り扱いです。 http://hp.vector.co.jp/authors/VA019656/#Component の、「BMPファイルからAVIファイルを作成する」を利用させて頂いてるのですが、対応バージョンがDelphi7となっているので、2006では使えそうなのかな?と。 一つでも回答して頂ければ、幸いです。^^;

  • リダイレクトする時の文字コードをUnicodeに

    現在、VisualStudioで、システムコールの標準出力結果をリダイレクトしてファイルに保存する プログラムを書いています。 _tsystem(command); のような感じで、commandには "hogehoge > hoge.txt"のように入ります。 ※command はTCHAR この出力結果が、Shift-Jisになっているようで、Shift-Jisだと日本語が文字化けせずに表示されるのですが、Unicode UTF-16にすると文字化けしてしまいます。 Unicode UTF-16とかUnicode UTF-8など文字コードを指定してリダイレクトできないのでしょうか。 ちょっと調べてみましたがうまく見つかりませんでした。

  • Delphi 10.3 をインストールできない。

    現在PCにEmbarcadero C++ Builder 10.3 communityをインストールしてプログラムをやってます。 旧バージョンのC++ Builderで作成されたプロジェクトを最新の10.3でもビルドできるように移行させているのですが、プロジェクト内でBorland Delph 5などで開発されたコンポーネントなどがあり、入手できても、一旦DelphiでビルドしなおしてC++用に出力する必要があるとのことでした。 そのため、Delphi Communityがダウンロードできるサイトに行ってインストーラーファイルをダウンロードしようとしたのですが、一旦今まで動作しているC++ Builderのアンインストールを求められて、アンインストール後にDelphiをインストールしようとしても選択肢がなく、C++ Builderが再インストールされてしまいました。 インストーラーファイルを見てみると"radstudio_10_3_2_esd_96593b.exe"というexeファイルが来るのですが、これは前回C++ Builder 10.3をインストールした時と同名のファイル名です。 C++ Builder 10.3 community版とDelphi community版を同じPCにインストールすることは可能でしょうか? どうぞ、ご教示の程よろしくお願い致します。

  • Perlでのファイル出力における文字コード指定について

    質問させて下さい。 Windows環境、ActivePerl ver5.8.6.811です。 現在、走らせるとテキストファイルが生成されるスクリプトを作成して使っているのですが、作成したテキストファイルに出力される文字データをUnicode(UTF16-LE)にすることは、可能でしょうか? 何もしないでいると、S-JISでの出力になってしまうのですが…。 参考になるサイトなどありましたら、教えて頂けたら幸いです。 よろしくお願いします。

  • unicode文字列(日本語)のファイル出力方法

    お世話になっております。 現在、VC++でプログラミングを行っておりますが、 日本語の文字列のファイル出力ができずに困っております。 参考にしたのは以下のサイトです。 http://sunafukin.jp/dannatti/software/vc/control/secure/fprintf_s.html 作成したプロジェクトファイルは以下の設定です。 ・Visual C++のプロジェクト「Win32」 ・「Win32コンソールプロジェクト」 ・アプリケーションの設定はWindowsアプリケーション ・文字セットにUnicodeを選択 文字セットにUnicodeを利用しなければ、日本語の文字列も正常に出力されるのですが、Unicodeを利用すると日本語が全て「?」と表記されてしまいます。 この「?」が出てしまう問題の解決方法をご存じの方がいらっしゃいましたら、ご教授宜しくお願い致します。

  • htmlにおけるUnicodeとShift-JISの違い

    いつもお世話になっております。 現在HPを作成しているのですが、日記用CGIは無償サイトのソースをダウンロードして使うことにしました。そのCGIはUnicodeで書かれています。 スタイルシートでfont-family : 'Verdana';を使用すると、「★」や「※」が□(もしかしたら半角[]かもしれません)で表示されてしまいまいました。font-family : 'Verdana', sans-serif;と表記したところで何も変わりませんでした。(半角英数字はきちんとVerdanaで表示されています。) Shift-JISで書かれたhtmlファイルのスタイルシートで同じ表記をした場合、半角英数字はVerdanaで、しかし「★」や「※」は恐らくデフォルトであるMS ゴシックで表示されます。 これはUnicodeとShift-JISの違いなのでしょうか? また、UnicodeのCGIを使用している限りVerdanaは使えないのでしょうか。 ご教授お願い致します。

    • ベストアンサー
    • HTML
このQ&Aのポイント
  • A列~D列において、セルA1とB1が同じならばセルC1の値を表示、おなじでなければA1を表示するが、セルA2~D4にも同じものがある場合は次の行のそれぞれ重複しない値を表示させたい。
  • IF、INDEX、MATCH、それぞれ試したが、うまくいかず。
  • 助けてください。お願いします。
回答を見る

専門家に質問してみよう