• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:InternetReadFileでバイナリファイルを読み込む方法)

InternetReadFileでバイナリファイルを読み込む方法

このQ&Aのポイント
  • InternetOpen, InternetOpenURL, InternetReadFileを用いてhttp上のバイナリファイルを読みとる方法をご存知の方がいらしたら、その方法をご教示ください。
  • バイナリファイルを読み取る方法は発見できませんでした。InternetOpen, InternetOpenURL, InternetReadFileの引数も調査してみましたが、バイナリモードに該当するようなオプションは見つかりませんでした。
  • 当方をBorlandのC++Builderを使用して、InternetOpen, InternetOpenURL, InternetReadFileを用いてhttp上のテキストファイルを読むところまでは順調に動作しています。

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

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

#1>0x0D+0x0Aに変換されてしまうのは0x0Aの場合のみでした 試しに、改行がLF(0x0A)で構成されるhtml ファイルで試してみましたが、そのような変換はされませんでした。(0x0Aのまま) 変換がされたと確認されているのは、InternetReadFile で取り込んだバッファの中を直接確認されているのですか?

jklm324
質問者

お礼

ご指摘ありがとう御座います。おかげさまで解決しました。 まったく恥ずかしい話ですが、格納するファイルをOpenするときに"wb"とすべきところが、"w"になっていました。同じプログラムをテキストの読み取りに使ったとき、何かのトラブルがあって、一時的に"w"にしたのが、そのままになっていたようです。

その他の回答 (2)

  • rinkun
  • ベストアンサー率44% (706/1571)
回答No.2

これはサーバ側の設定に依存します。 Webサーバはテキストをクライアントに送り出す際には改行コードをCRLFに変換します。 # これはインターネット上の取り決め(RFC)によります ダウンロードするファイルがテキストかバイナリかはWebサーバの設定によりファイルの拡張子などで判断するようになっており、特に設定されていないファイルだとテキストとして扱うサーバもあります。(多分こっちが主流) Webサーバの設定を見直し、ダウンロードするバイナリファイルを正しくバイナリファイルとして認識するようにしてください。

jklm324
質問者

お礼

たしかにサーバー側の問題という可能性もありますね。しかし、拡張子を.jpgにしても結果は同じでした。 原因は当方の初歩的なミスであることが判明しましたので、問題は解決しました。 ありがとうございました。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

http://nienie.com/~masapico/api_sample_inet04_c.html を参考にして、 C++Builder を使って、バイナリファイルを読み込んでみましたが、(特別な指定とか無くても)問題なく読み込めました。

jklm324
質問者

お礼

回答、有難うございます。しかし、教えていただいた例の通りにしても、結果は変わりませんでした。 IternetOpenの2番目の引数とInternetOpenUrlの4番目の引数が私の使用していたものと異なるので、教えていただいた例と同じにしたのですが、結果は変わりませんでした。0x0Aの前に0x0Dが追加されてしまいます。 なお、質問では「0x0Dが0x0D+0x0A」に変換されてしまうと記述しましたが、これは間違いでした。0x0D+0x0Aに変換されてしまうのは0x0Aの場合のみでした。この場を借りて訂正させていただきます。

関連するQ&A

専門家に質問してみよう