AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Problem mit IdHTTP.get mit Fortschrittsanzeige
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit IdHTTP.get mit Fortschrittsanzeige

Ein Thema von dominikkv · begonnen am 30. Jun 2007 · letzter Beitrag vom 1. Jul 2007
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von arbu man
arbu man

Registriert seit: 3. Nov 2004
Ort: Krefeld
1.108 Beiträge
 
Delphi 7 Professional
 
#11

Re: Problem mit IdHTTP.get mit Fortschrittsanzeige

  Alt 1. Jul 2007, 16:11
Es geht doch wunderbar in der Konsole, sogar mit Progressbar:
Delphi-Quellcode:
program ConsoleWithHTTP;

{$APPTYPE CONSOLE}

uses
  SysUtils,
  Windows,
  IdHTTP,
  IdBaseComponent,
  IdComponent,
  IdTCPConnection,
  IdTCPClient;

const
  PROGRESSBARLENGHT = 50;

type
  TConsoleApplication = class
  private
    { Private-Deklarationen }
    FHTTP: TIdHTTP;
    FWorkMax: integer;
    FCon: TextFile;
    function ProgressBar(APos, AMax: integer): string;
    procedure WriteBack(AStr: string);
    procedure WriteLine(AStr: string);
    procedure NewLine;
  public
    { Public-Deklarationen }
    procedure Execute;
    procedure HTTPWorkBegin(ASender: TObject; AWorkMode: TWorkMode;
      AWorkCountMax: Integer);
    procedure HTTPWorkEnd(ASender: TObject; AWorkMode: TWorkMode);
    procedure HTTPWork(ASender: TObject; AWorkMode: TWorkMode;
      AWorkCount: Integer);
    constructor Create;
    destructor Destroy; override;
  end;

{ TConsoleApplication }

constructor TConsoleApplication.Create;
begin
  AssignFile(FCon, 'CON:');
  Rewrite(FCon);
end;

destructor TConsoleApplication.Destroy;
begin
  FHTTP.Free;
  inherited Destroy;
end;

procedure TConsoleApplication.Execute;
var
  s: string;
begin
  FHTTP := TIdHTTP.Create(nil);
  FHTTP.OnWork := HTTPWork;
  FHTTP.OnWorkBegin := HTTPWorkBegin;
  FHTTP.OnWorkEnd := HTTPWorkEnd;

  WriteLine('Get http://www.bsnx.net/');
  s := FHTTP.Get('http://www.bsnx.net/');

  WriteLine(inttostr(Length(s))+' Bytes uebertragen.');

  readln;
end;

procedure TConsoleApplication.HTTPWork(ASender: TObject;
  AWorkMode: TWorkMode; AWorkCount: Integer);
begin
  WriteBack(ProgressBar(AWorkCount, FWorkMax));
end;

procedure TConsoleApplication.HTTPWorkBegin(ASender: TObject;
  AWorkMode: TWorkMode; AWorkCountMax: Integer);
begin
  FWorkMax := AWorkCountMax;
  NewLine;
end;

procedure TConsoleApplication.HTTPWorkEnd(ASender: TObject;
  AWorkMode: TWorkMode);
begin
  NewLine;
end;

procedure TConsoleApplication.NewLine;
begin
  writeln(FCon);
end;

function TConsoleApplication.ProgressBar(APos, AMax: integer): string;
var
  i, c, m: integer;
begin
  m := PROGRESSBARLENGHT;
  result := '';
  c := round((APos / AMax)*100);
  c := c div (100 div m);
  for i := 0 to m-1 do begin
    if i<c then begin
      result := result + '#';
    end else begin
      result := result + '_';
    end;
  end;
  result := '['+result+']';
end;

procedure TConsoleApplication.WriteBack(AStr: string);
begin
  Write(FCon, #13, AStr);
end;

procedure TConsoleApplication.WriteLine(AStr: string);
begin
  Write(FCon, AStr);
end;

var
  App: TConsoleApplication;

begin
  App:= TConsoleApplication.Create;
  try
    App.Execute;
  finally
    App.Free;
  end;
end.
Du wirst bei der Deklaration der Events feststellen dass hinten noch ein 'of object' daranhängt. Das bedeutet es wird noch ein weiterer Parameter übergeben, die Instanz der Klasse. Sonst weiss das Programm nicht welche Instanz gemeint ist... Das bedeutet natürlich du musst eine Klasse anlegen...

mfg, Björn
Björn
>> http://bsnx.net <<
Virtual DP Stammtisch v1.0"iw" am 19.09.2007 - ich war dabei!
  Mit Zitat antworten Zitat
dominikkv

Registriert seit: 30. Sep 2006
Ort: Gundelfingen
1.109 Beiträge
 
Delphi 2007 Professional
 
#12

Re: Problem mit IdHTTP.get mit Fortschrittsanzeige

  Alt 1. Jul 2007, 17:34
danke Björn
du hast mir sehr geholfen

mfg.Dominik
Dominik
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:36 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz