Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi idHTTP Dateien lassen sich erst nach Programme öffnen (https://www.delphipraxis.net/111106-idhttp-dateien-lassen-sich-erst-nach-programme-oeffnen.html)

Deltachaos 29. Mär 2008 17:07


idHTTP Dateien lassen sich erst nach Programme öffnen
 
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var stream: TFileStream;
begin
  stream:=TFilestream.create('ver_info.ini',fmcreate );
  form1.idhttp1.Get('http://redplug.re.funpic.de/dlw/enigmad/aktuelle_version.txt',stream);
  stream:=TFilestream.create('th_upd.exe',fmcreate );
  form1.idhttp1.Get('http://redplug.re.funpic.de/dlw/enigmad/th_upd.exe',stream);
  stream:=TFilestream.create('unrar.dll',fmcreate );
  form1.idhttp1.Get('http://redplug.re.funpic.de/dlw/unrar.dll',stream);
  form1.IdHTTP1.Disconnect; < versuch
  stream.Free;
  ShellExecute(Application.Handle,'open',PChar('th_upd.exe'),PChar(''),PChar(''),SC_DEFAULT);
  form1.close;
end;
Hallo ich habe das Problem das sich th_upd.exe nicht öffnet. ich glaube das das daran liegt das idHTTP diese noch geöffnet hat und erst nach beenden des Programms der Icon der Datei erscheint.
kann mann irgendwie die Datei schliesen oder irgendwie eine kurtz zuvor Heruntergeladene Datei öffnen

MrKnogge 29. Mär 2008 17:20

Re: idHTTP Dateien lassen sich erst nach Programme öffnen
 
Du musst jeden Stream freigeben, nicht nur den letzten:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  stream: TFileStream;
begin
  stream := TFilestream.create('ver_info.ini', fmcreate);
  try
    form1.idhttp1.Get('http://redplug.re.funpic.de/dlw/enigmad/aktuelle_version.txt',stream);
  finally
    stream.Free;
  end;

  stream := TFilestream.create('th_upd.exe',fmcreate );
  try
    form1.idhttp1.Get('http://redplug.re.funpic.de/dlw/enigmad/th_upd.exe',stream);
  finally
    stream.Free;
  end;

  stream := TFilestream.create('unrar.dll',fmcreate );
  try
    form1.idhttp1.Get('http://redplug.re.funpic.de/dlw/unrar.dll',stream);
  finally
    stream.Free;
  end;

  ShellExecute(Application.Handle,'open',PChar('th_upd.exe'),PChar(''),PChar(''),SC_DEFAULT);
  form1.close;
end;

Deltachaos 29. Mär 2008 17:30

Re: idHTTP Dateien lassen sich erst nach Programme öffnen
 
Zitat:

Zitat von MrKnogge
Du musst jeden Stream freigeben, nicht nur den letzten:

Habs etz so gemacht da ich ja nur diese datei öffnen muss wehrend das programm noch leuft.
die anderen werden ja automatisch finalisirt wenn das programm beendet wird.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var stream: TFileStream;
begin
  stream := TFilestream.create('ver_info.ini', fmcreate);
  form1.idhttp1.Get('http://redplug.re.funpic.de/dlw/enigmad/aktuelle_version.txt',stream);
  stream.Free;
  stream := TFilestream.create('th_upd.exe',fmcreate );
  try
    form1.idhttp1.Get('http://redplug.re.funpic.de/dlw/enigmad/th_upd.exe',stream);
  finally
    stream.Free;
  end;
  stream := TFilestream.create('unrar.dll',fmcreate );
  form1.idhttp1.Get('http://redplug.re.funpic.de/dlw/unrar.dll',stream);
  stream.Free;
  ShellExecute(Application.Handle,'open',PChar('th_upd.exe'),PChar(''),PChar(''),SC_DEFAULT);
  form1.close;
end;

MrKnogge 29. Mär 2008 17:41

Re: idHTTP Dateien lassen sich erst nach Programme öffnen
 
Die Try-Finally Bläche haben damit nichts zu tun, es ist ratsam diese bei Klassen (gerade bei Dateizugriffen) immer zu verwenden.


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