読み込む前にファイルの長さを知ることは可能ですか?大容量で低速の場合、読み込まれたデータの割合を推定できるようにするためです。
gdtt:
読み込む前にファイルの長さを知ることは可能ですか?これは、大容量で低速の場合、ダウンロードされたデータのパーセンテージを推定できるようにするためです。
可能だと思います。msdnのwininet.dllの説明にあります。
gdtt:
GETリクエストの前に/HEADを送る
読み込む前にファイルの長さを知ることは可能ですか?これは、大容量で低速の場合に、読み込まれたデータの割合を推定できるようにするためです。
大賛成だ! とても役に立つ記事になるだろう。
gdtt:
読み込む前にファイルの長さを知ることは可能ですか?これは、大容量で低速の場合、ダウンロードされたデータのパーセンテージを推定できるようにするためです。
サーバーがコンテンツの長さを報告する 可能性はあります。
リクエストに関する情報を取得するには、wininet.dll のHttpQueryInfo 関数を使用します。この関数は、指定した配列に必要な情報を文字列形式で返します。
使用例
を #import セクションに追加します:
int HttpQueryInfoW(int hRequest,int dwInfoLevel,uchar &lpvBuffer[],int &lpdwBufferLength,int &lpdwIndex);
を追加します。
#define HTTP_QUERY_CONTENT_LENGTH 5を追加し、InternetOpenUrlWを呼び出してhURLを取得した後のコードに、コードを追加する必要があります:
int BufLen=2048; int ind=0; uchar buf0[2048]; string s=""; int ContentSize_HttpQueryInfoW=0; int iRes; iRes=HttpQueryInfoW(hURL,HTTP_QUERY_CONTENT_LENGTH,buf0,BufLen,ind); if(iRes<=0) { Print("Error in call of HttpQueryInfoW()"); } else { s=""; for(int k=0;k<BufLen;k++) { s=s+CharToString(buf0[k]);} Print("HTTP_QUERY_CONTENT_LENGTH:",s); if (StringLen(s)>0) ContentSize_HttpQueryInfoW=StringToInteger(s); Alert(「コンテンツサイズ=",ContentSize_HttpQueryInfoW); }
yandex.ruからのテスト例では、"Content size= 44649 "となり、これはダウンロードされたファイルのサイズに対応します。
現行バージョンのスクリプトにこの機能を追加した。
ご苦労様でした!
完璧です!
実行しようとするとメタトレーダーが致命的なエラーで閉じてしまいます。何か解決策はありますか?
最後のMT5アップデートの前に、wininetが動作することがわかりました。この問題を克服する方法を見つけたら教えてください。
取引の機会を逃しています。
- 無料取引アプリ
- 8千を超えるシグナルをコピー
- 金融ニュースで金融マーケットを探索
WININET_TEST:
ライブラリwininet.dllを使って、オンラインからページ(ファイル)をダウンロードするシンプルな方法です。
機能させるには、 ターミナルのオプションの"Allow DLL imports"に忘れずにチェックしてください。作者: MetaQuotes Software Corp.