お世話になります。
Turbo Delphi という体験版を入れてみました。
Delphi9 では、unicode をサポートしているようですが、
Turbo Delphi でも、WideString で、unicode を扱えるとのことですが、
実際にファイル出力の仕方がよく分りません。
WideString := 'abcABC'; として、
Writeln(TextFile, WideString);
と出力しても、s_jis で出力されるようです。
何かご存知の方いらしたらお教えください。
宜しくお願い致します。
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.
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が見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
特定の列・行をテキストファイ...
-
raw形式からbmp形式への書き込...
-
Acccess レポートをグループ別...
-
コマンド(例えばls)の出力結果...
-
AccessVBA複数レポート条件毎に...
-
VC++でUTF-8のファイルを出力し...
-
サウンド出力のデバイスを選択...
-
Wordマクロで指定したフォルダ...
-
pcap形式データをテキストへ抽出
-
OCRで起こしたテキスト文字をCS...
-
Excel2007でのエクスポート
-
ガウシアンでSCFする前の結...
-
I/Oエラー(Delphi)
-
外国語とCSVについて
-
100行単位のエクセルデータをテ...
-
Excel のページを Jpegファイル...
-
BitBltについて。
-
ファイル出力の場所を指定
-
CreateProcess関数と実行後の戻...
-
ビデオCDの制作方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【ExcelVBA】UTF-8(BOM無)でC...
-
コマンド(例えばls)の出力結果...
-
Acccess レポートをグループ別...
-
ファイル出力の場所を指定
-
VC++でUTF-8のファイルを出力し...
-
ファイルの文字コードをUTF-8に...
-
CreateProcess関数と実行後の戻...
-
VBA でメモ帳へ保存する際の保...
-
テキストファイルに改行コード...
-
シェルコマンドの 2>&1 とはど...
-
外国語とCSVについて
-
ファイル形式またはファイル拡...
-
AccessVBA複数レポート条件毎に...
-
printfだと出力されるのにfprin...
-
1行ずつではなくまとめてファイ...
-
pcap形式データをテキストへ抽出
-
C言語のプログラムが異常終了し...
-
Wordマクロで指定したフォルダ...
-
CBool関数について VB6とVB.net...
-
C言語での印刷方法
おすすめ情報