| Autor |
Beitrag |
the-kecks
      
Beiträge: 157
Erhaltene Danke: 1
Windows Vista Home Premium 64Bit
Delphi 7 Ent.
|
Verfasst: Di 29.09.09 15:08
hi,
ich möchte ein programm schreiben welches eine datei (http://seite.de/file/[zufällig generierter code]) downloadet. nur weiß ich nicht wie ich das machen soll. wär nett wenn ihr mir eine komponente empfehlen könnt oder einen kleinen denkanstoß gebt
mfg
|
|
Nersgatt
      
Beiträge: 1581
Erhaltene Danke: 279
Delphi 10 Seattle Prof.
|
Verfasst: Di 29.09.09 15:10
Ich werfe einfach mal IdHttp in der Raum. Such mal danach.
_________________ Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
|
|
the-kecks 
      
Beiträge: 157
Erhaltene Danke: 1
Windows Vista Home Premium 64Bit
Delphi 7 Ent.
|
Verfasst: Di 29.09.09 15:12
kenne ich...nur wie downloade ich damit ein file?
wenn ich den IdHTTP1.Get(Link, FileStream) mache kommt nur die startseite als .html file raus.
PS: es handelt sich bei der seite um uploaded.to
mfg
|
|
jaenicke
      
Beiträge: 19341
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mi 30.09.09 01:22
Du musst die Schritte halt genauso nachvollziehen. Codeeingabe usw., was halt alles passiert. Dafür musst du in den Quelltext der Seite schauen bzw. kannst einen Blick in Firefox-Addons wie HttpFox, Firebug usw. werfen.
|
|
the-kecks 
      
Beiträge: 157
Erhaltene Danke: 1
Windows Vista Home Premium 64Bit
Delphi 7 Ent.
|
Verfasst: So 04.10.09 16:20
das downloaden klappt jetzt soweit nur ich krieg sobald der download angefangen hat immer die fehlermeldung "ungültige gleitkommaoperation"
hier meine OnWork (-Begin, -End) ereignisse:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74:
| procedure TForm1.IdHTTP1Work(ASender: TObject; AWorkMode: TWorkMode; AWorkCount: Integer); var TotalTime: TDateTime; H, M, Sec, MS: Word; DLTime: Double; AverageSpeed, temp : Extended; zeit : String; begin if bAbort=true then begin IdHTTP1.Disconnect; Button1.Enabled:=true; Button2.Enabled:=false; Statusbar1.Panels[0].Text:='Fertig'; Statusbar1.Panels[1].Text:='Speed: 0 KB/s'; Application.ProcessMessages; exit; end; If ProgressDownloading=true then begin ProgressBar1.Position := AWorkCount;
TotalTime := Now - STime; DecodeTime(TotalTime, H, M, Sec, MS); Sec := Sec + M * 60 + H * 3600; DLTime := Sec + MS / 1000; if DLTime > 0 then AverageSpeed := (AWorkCount / 1024) / DLTime; if not(round(AverageSpeed)=0) then temp:=round(((ProgressBar1.Max - AWorkCount) / 1024) / round(AverageSpeed)) else temp:=0; if temp>0 then begin if temp>=60 then begin if temp>=3600 then begin zeit:=FloatToStr(temp/60); zeit:=Copy(zeit, 0, 3) + ' Std'; end; zeit:=FloatToStr(temp/60); zeit:=Copy(zeit, 0, 3) + ' Min'; end else zeit:=FloatToStr(temp) + ' Sek'; end else zeit:='0 Sek';
StatusBar1.Panels[1].Text := 'Speed: ' + FloatToStr(round(AverageSpeed)) + ' KB/s' + ' (' + zeit + ' verbleibend)';
temp:=ProgressBar1.Position/Progressbar1.Max; Label5.Caption:=Copy(FloatToStr(temp), 3, 2) + '%'; end; Application.ProcessMessages; end;
procedure TForm1.IdHTTP1WorkBegin(ASender: TObject; AWorkMode: TWorkMode; AWorkCountMax: Integer); begin STime:=Now; ProgressBar1.Max := AWorkCountMax; ProgressBar1.Position := 0; if ProgressDownloading=true then StatusBar1.Panels[0].Text := 'Download (' + AktDatei + '/' + Memo1.Lines.Count + ')'; end;
procedure TForm1.IdHTTP1WorkEnd(ASender: TObject; AWorkMode: TWorkMode); begin StatusBar1.Panels[1].Text := 'Speed: 0 KB/s'; Statusbar1.Panels[0].Text:='Fertig'; Label5.Caption:= '0%'; ProgressBar1.Position := 0; end; |
mfg
|
|
jaenicke
      
Beiträge: 19341
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 04.10.09 16:42
Da wird wohl irgendetwas 0 werden, durch das du teilst, nehme ich an. Da es dabei nur um die Anzeige des Fortschritts geht, kannst du ja z.B. einfach Teile des Codes schrittweise auskommentieren um den Fehler zu finden. Oder eine Loggingfunktion einbauen um festzustellen wo der Fehler genau auftritt. Oder debuggen. Oder...
|
|
the-kecks 
      
Beiträge: 157
Erhaltene Danke: 1
Windows Vista Home Premium 64Bit
Delphi 7 Ent.
|
Verfasst: So 04.10.09 17:40
genau das habe ich gemacht...
immer wenn ich geteilt habe, hab ich eine haltemarke davor gesetzt. bei jeder haltemarke kam dieses grüne häckchen
hab den fehler gefunden:
Delphi-Quelltext 1: 2: 3:
| AverageSpeed := (AWorkCount / 1024) / DLTime; --> AverageSpeed := (AWorkCount / 1024) / round(DLTime); |
mfg
|
|
pesi
      
Beiträge: 67
Erhaltene Danke: 1
|
Verfasst: Mo 05.10.09 20:47
Ähem... was ist mit dem guten alten Befehl UrlDownloadToFile ???
Der is easy zu nutzen, braucht keine Zusatzkompos und ist bestimmt auch noch bei neuern Delphiversionen vorhanden, oder??? Bei D5 und Turbodelphi gibt´s ihn jedenfalls!
Gruß Peter
|
|