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

解決


読め子  2008-03-08 08:28:43  No: 30107

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


もにゃ  2008-03-08 09:06:54  No: 30108

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


もにゃ  2008-03-08 09:10:44  No: 30109

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


もにゃ  2008-03-08 09:14:06  No: 30110

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


KHE00221  2008-03-08 09:17:52  No: 30111

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


読め子  2008-03-09 02:32:26  No: 30112

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


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

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






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