![]() |
Indy idHTTP - Downloadprozess - Wert für IOHandler ist ungültig
Hey Leute.
Delphi-Quellcode:
Wie ihr seht will ich, wenn auf Button1 geklickt wird 2 Datein heruntergeladen werden. Dieser Downloadprozess soll in einer ProgressBar angezeigt werden. Ich habe meinen Code von
procedure TForm1.Button1Click(Sender: TObject);
var Ziel: string; Ziel2: String; URL: String; URL2: String; Name1: String; Name2: String; lStream: TFileStream; lStream2: TFileStream; Pfad: String; begin lStream.Free; lStream2.Free; Name1:='Premaidercraft '+Memo3.Lines[0]+'.zip'; Name2:='mcpatcher-'+Memo3.Lines[1]+'.exe'; Pfad := IncludeTrailingPathDelimiter(UserAppData) + '.minecraft\texturepacks'; Ziel := IncludeTrailingPathDelimiter(Pfad) + Name1; Ziel2 := IncludeTrailingPathDelimiter(Pfad) + Name2; URL:=Memo2.lines[0]; URL2:=Memo2.Lines[1]; try lStream:=TFileStream.Create(Ziel, fmCreate); finally try idHTTP1.Get(URL, lStream); idHTTP1.Get(URL2, lStream); finally lStream.Free; lStream2.Free; If CheckBox1.checked=true Then ShellExecute(Application.Handle,'open',PChar(Pfad + Memo3.Lines[0] + '.exe'),nil,PChar(Pfad),sw_ShowNormal); end; end; Memo1.Lines[17]:='skin:Premaidercraft '+Memo3.lines[0]+'.zip'; Memo1.Lines.SaveToFile(UserAppData + '\.minecraft\options.txt'); end; ![]() Bei mir kommt aber beim downloaden der zweiten Datei ein Fehler. "Wert für IOHandler ist ungülig". Warum ? |
AW: Indy idHTTP - Downloadprozess - Wert für IOHandler ist ungültig
Wieso gibst Du Objekte frei, die Du gar nicht erzeugst? Und die Verwendung von try-finally ist ein wenig, na sagen wir mal "kreativ". Ich würde Dir raten: schreibe Dir eine Methode zum Herunterladen, der Du die Quell-URL und die Zieldatei als Parameter übergibst. Dann rufst Du nur noch diese auf.
|
AW: Indy idHTTP - Downloadprozess - Wert für IOHandler ist ungültig
Meinst du ich soll anstatt lStream meinen Dateipfad reinschreiben ? Sorry bin noch ein ziemlicher Anfänger und verstehe nicht genau was du meinst
|
AW: Indy idHTTP - Downloadprozess - Wert für IOHandler ist ungültig
Ich meinte etwas in der Art:
Delphi-Quellcode:
function TForm1.DownloadFile(const SrcURL, DestFile: string): Boolean;
begin //Code end; ... DownloadFile(URL, Ziel); DownloadFile(URL2, Ziel2); |
AW: Indy idHTTP - Downloadprozess - Wert für IOHandler ist ungültig
aber dann funktionert doch die ProgressBar nicht mehr ??
|
AW: Indy idHTTP - Downloadprozess - Wert für IOHandler ist ungültig
Und wieso sollte sie nicht? Du kannst doch in der DownloadFile-Methode weiterhin den Indy-HTTP-Client benutzen.
|
AW: Indy idHTTP - Downloadprozess - Wert für IOHandler ist ungültig
Okay ich werd mal schaun :O
|
AW: Indy idHTTP - Downloadprozess - Wert für IOHandler ist ungültig
Ne, DownloadFile gibt es anscheind bei Delphi7 garnicht ??
|
AW: Indy idHTTP - Downloadprozess - Wert für IOHandler ist ungültig
Du hast keinen Plan, was du machst oder?
Download könnte so aussehen:
Delphi-Quellcode:
procedure TForm2.Download(Url, Filename: AnsiString);
var FileStream: TFileStream; begin FileStream := TFileStream.Create(Filename, fmCreate); try try IdHTTP1.Get(Url, FileStream); except on E: Exception do Exception.Create('Fehler beim Runterladen!' + #13#10 + E.Message); end finally FileStream.Free; end; end; |
AW: Indy idHTTP - Downloadprozess - Wert für IOHandler ist ungültig
Zitat:
Vermutlich schliesst Indy aber automatisch den Stream sobald das (erste) GET abgeschlossen ist. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:54 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz