5

いらっしゃいませ、

indy http get compontentを使用して、アプリケーションのダウンロード速度に関する情報を含むキャプションを作成する必要があります。

私の心の中で私は簡単な解決策を見つけました。

オンワークイベントでは、ダウンロードの実際の進捗状況(サイズ)を取得し、以前の読み取り値と比較します。(たとえば、5秒ごと)。現在のサイズから前のサイズを引いたもの(5秒のeariel、グローバル変数に格納)を5秒* 8で割ると、速度が得られます。実際のサイズが以前と等しい場合、速度は常に0です。

だからコーディングを始めたいのですが、odworkという単純な関数に問題が見つかりました。

プロシージャTForm1.HttpWork(ASender:TObject; AWorkMode:TWorkMode;
  AWorkCount:Int64);
  始める
    showmessage('hello im herre');
終わり;  

問題は、その関数が呼び出されないことです...理由はわかりません。

100 MBのファイルをダウンロードしていますが、showmessageが表示されません...

何か考えがありますか?よろしく

4

3 に答える 3

2

OnWork... イベントは、接続の BeginWork() メソッドが事前に呼び出されている場合にのみ発生します。Indy の読み取り/書き込みメソッドの多くは、それを自動的に呼び出しません。ただし、TIdHTTP は TStream オブジェクトを使用して要求/応答本文データの読み取り/書き込みを行い、接続の読み取り/書き込み TStream メソッドは内部で BeginWork() を呼び出すため、HTTP 操作中に OnWork... イベントが確実に発生します。

于 2010-12-14T19:41:03.677 に答える
0

httpwork もコンポーネントに割り当てますか? onprogress または onwork と呼ばれるものは何ですか?

また、クリックするまで戻らないモーダル コンポーネントではなく、ラベルを使用してください。ダウンロード フローが中断される可能性があるためです。

于 2010-12-11T11:26:30.997 に答える
0

あなたの HTTPWork イベントはコンポーネントにフックされていないと言わざるを得ません。フォームに HTTP コンポーネントがある場合は、プロパティを表示して OnWork イベントをダブルクリックし、ShowMessage を挿入します。表示されるはずです。

于 2010-12-15T05:01:40.280 に答える