Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi IdHTTP problem (https://www.delphipraxis.net/56373-idhttp-problem.html)

A-M-X 4. Nov 2005 18:01


IdHTTP problem
 
Huhu!!

Hab da folgende Probleme:

wie unterbreche ich WÄHREND des downloads ein IdHTTP?
und wie gebe ich diese datei dann frei und kann sie DANN löschen

BZW --->>> Mein Programm löscht die gedownloadete datei , dass der Benutzer keine Probleme hat , diese von Hand zu löschen

Zum downloaden so

Delphi-Quellcode:
  Button1.Enabled := false;
  Edit1.Enabled := false;
  Edit2.Enabled := false;
  Button2.Enabled := true;
  Ziel := Edit2.text;
  Datei:=TFileStream.create(Ziel,fmCreate);
  IdHttp1.Get(Edit1.Text,Datei);
  Datei.Free;
zum löschen so:

Delphi-Quellcode:
function DeleteFile(const AFile: string): boolean;
var
 sh: SHFileOpStruct;
begin
 ZeroMemory(@sh, sizeof(sh));
 with sh do
   begin
   Wnd := Application.Handle;
   wFunc := fo_Delete;
   pFrom := PChar(AFile +#0);
   fFlags := fof_Silent or fof_NoConfirmation;
   end;
 result := SHFileOperation(sh) = 0;
end;

  Datei.Free;
  Button1.Enabled := true;
  Edit1.Enabled := true;
  Edit2.Enabled := true;
  Button2.Enabled := false;
  DeleteFile(Ziel);
Aber wie gehts richtig? :mrgreen: :mrgreen: :mrgreen:

marabu 4. Nov 2005 19:05

Re: IdHTTP problem
 
Hallo.

Du kannst einen Download mit der Indy HTTP Client-Komponente im Ereignis OnWork() abbrechen, indem du eine stumme Exception wirfst:

Delphi-Quellcode:
type
  TDemoForm = class(TForm)
  ...
  private
    Canceled: boolean;
  ...
  end;

procedure TDemoForm.CancelClick(Sender: TObject);
begin
  Canceled := true;
end;

procedure TDemoForm.HTTPWork(Sender: TObject; AWorkMode: TWorkMode;
  const AWorkCount: Integer);
begin
  if Canceled then
    Abort;
end;

procedure TDemoForm.DownloadClick(Sender: TObject);
var
  fs: TFileStream;
  fn: TFileName;
begin
  fn := 'c:\daten\abort.txt';
  fs := TFileStream.Create(fn, fmCreate);
  Canceled := false;
  try
    HTTP.Get('http://www.amazon.de', fs);
  except
  end;
  fs.Free; // Datei freigeben
  if Canceled then
    DeleteFile(fn);
end;
Grüße vom marabu

A-M-X 4. Nov 2005 19:45

Re: IdHTTP problem
 
super!!

funktioniert perfekt! vielen dank :thumb:

xZise 17. Mär 2007 09:47

Re: IdHTTP problem
 
Auch wenns ein bisschen her ist: Aber welche Exception muss ich beim Abrruch abfangen? Weil ich wollte bei allen anderen Exception eine Fehlermeldung anzeigen lassen...


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:59 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