2010-12-11 6 views
5

ようこそ、インディGETのdowloadingスピード

私はインディHTTP GET compontentを使用して自分のアプリケーションでスピードのダウンロードについての情報とキャプションを作成する必要があります。

私の考えでは、簡単な解決策が見つかりました。

onworkイベントでは、私は実際のダウンロードの進行状況(サイズ)を取得し、それを以前の読み取りと比較します。 (例えば、5秒毎)。 curentサイズマイナス前(5秒間のエイリアセル、グローバル変数に保存)を5秒* 8で割ると速度が得られます。 実際のサイズが前と等しい場合、spedは常に0になります。

だから私はコードを開始しますが、odworkという単純な関数で問題が見つかりました。

 
procedure TForm1.HttpWork(ASender: TObject; AWorkMode: TWorkMode; 
    AWorkCount: Int64); 
    begin 
    showmessage('hello im herre'); 
end; 

問題は、私はなぜ知らない、... と呼ばれるその関数イマイチです。

私は100メガバイトのファイルをダウンロードしている、と私はどのshowmessageを参照してくださいカント...

は、任意のアイデアをお持ちですか? よろしくお願いします。

答えて

0

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

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

+0

私は手作業でonwork

 form1.Http := TIdHTTP.Create(nil); form1.Http.OnWork:=form1.HttpWork;
を追加しますが、コンパイラは失敗します
unit1.pas(356,36) Error: Wrong number of parameters specified for call to "HttpWork" 
私はそのshowmessageを追加して、どの機能がトリガされるのかを知りました。私はmemo1.lines.add( 'test');また動作しませんでした;) – marc

+0

HttpWorkのパラメータの予想数が、assinの持つパラメータの数と異なる場合でも、パラメータの数が正しく表示されません。人々があなたを助けることができるように、ここにコードをコピーして貼り付けてください。それ以外の情報はあまりありません。 – ComputerSaysNo

+0

コンパイラに問題がありますか? –

2

OnWork ...イベントは、接続のBeginWork()メソッドが事前に呼び出されている場合にのみ発生します。 Indyの読み書き方法の多くは自動的にそれを呼び出すものではありません。しかし、TIdHTTPはTStreamオブジェクトを使用してリクエスト/レスポンスボディデータを読み書きし、接続の読み取り/書き込みTStreamメソッドは内部的にBeginWork()を呼び出します。したがって、HTTP操作中にOnWork ...イベントが発生します。

0

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

関連する問題