不正ファイル名のファイルを読みたい

解決


読め子  2008-03-07 23:28:43  No: 30107  IP: 192.*.*.*

C:\Documents and Settings\xxxxxx\Favorites以下に?(文字コード$3F)を含むファイル名のファイルがあります。  それはご存知urlの拡張子のテキストファイルなのですが、FileExistsがTrueを返すのにもかかわらずTStringList.LoadFromFileで読めません。
テキスト(バイナリでも・・・)として読む方法はありますか?

編集 削除
もにゃ  2008-03-08 00:06:54  No: 30108  IP: 192.*.*.*

たぶん不正ファイル名じゃなくてUNICODEファイル名でしょう。
Delphiでは未だに対応しておりません。
有名どころのコンポーネントだとTnt controlsってのがありますが、
今は有料ですね。
http://www.tntware.com/delphicontrols/unicode/
古いバージョンがどこかにあるといいですね。
http://mh-nexus.de/tntunicodecontrols.htm

編集 削除
もにゃ  2008-03-08 00:10:44  No: 30109  IP: 192.*.*.*

っと失礼、その中の
TTntStringList
です。

編集 削除
もにゃ  2008-03-08 00:14:06  No: 30110  IP: 192.*.*.*

あー。
酒入ってるときは投稿控えねば…
で、扱う際はファイル名はUNICODEなのでWideStringで統一して扱わないと
一度でもstringで扱った時点でデータが抜け落ちます。
findfirstもunicode対応版が入ってるのでその辺も注意してくださいね。

編集 削除
KHE00221  2008-03-08 00:17:52  No: 30111  IP: 192.*.*.*

UNICODEならFileOpen関数で
CreateFileの所をCreateFileWに変えて読み込めないかな?

編集 削除
読め子  2008-03-08 17:32:26  No: 30112  IP: 192.*.*.*

もにゃさん、KHE00221さんありがとうございます。
UNICODEだったのですね!  KHE00221さんのCreateFileWはいけそうですが、FindFirstで得たファイル名だったので断念しました。  そこでもにゃさんの示していただいたhttp://mh-nexus.de/tntunicodecontrols.htmこのサイトにソースコードが載っていたのでこれさえ読んだらOKそうです。  有料ということですがソースは公開されているのでこれは勉強になります。
最後にもう一度もにゃさん、KHE00221さんありがとうございます。

編集 削除