C:\Documents and Settings\xxxxxx\Favorites以下に?(文字コード$3F)を含むファイル名のファイルがあります。 それはご存知urlの拡張子のテキストファイルなのですが、FileExistsがTrueを返すのにもかかわらずTStringList.LoadFromFileで読めません。
テキスト(バイナリでも・・・)として読む方法はありますか?
たぶん不正ファイル名じゃなくてUNICODEファイル名でしょう。
Delphiでは未だに対応しておりません。
有名どころのコンポーネントだとTnt controlsってのがありますが、
今は有料ですね。
http://www.tntware.com/delphicontrols/unicode/
古いバージョンがどこかにあるといいですね。
http://mh-nexus.de/tntunicodecontrols.htm
っと失礼、その中の
TTntStringList
です。
あー。
酒入ってるときは投稿控えねば…
で、扱う際はファイル名はUNICODEなのでWideStringで統一して扱わないと
一度でもstringで扱った時点でデータが抜け落ちます。
findfirstもunicode対応版が入ってるのでその辺も注意してくださいね。
UNICODEならFileOpen関数で
CreateFileの所をCreateFileWに変えて読み込めないかな?
もにゃさん、KHE00221さんありがとうございます。
UNICODEだったのですね! KHE00221さんのCreateFileWはいけそうですが、FindFirstで得たファイル名だったので断念しました。 そこでもにゃさんの示していただいたhttp://mh-nexus.de/tntunicodecontrols.htmこのサイトにソースコードが載っていたのでこれさえ読んだらOKそうです。 有料ということですがソースは公開されているのでこれは勉強になります。
最後にもう一度もにゃさん、KHE00221さんありがとうございます。
ツイート | ![]() |