Autor Beitrag
the-kecks
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 157
Erhaltene Danke: 1

Windows Vista Home Premium 64Bit
Delphi 7 Ent.
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1581
Erhaltene Danke: 279


Delphi 10 Seattle Prof.
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 157
Erhaltene Danke: 1

Windows Vista Home Premium 64Bit
Delphi 7 Ent.
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19341
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 157
Erhaltene Danke: 1

Windows Vista Home Premium 64Bit
Delphi 7 Ent.
BeitragVerfasst: 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:
ausblenden volle Höhe Delphi-Quelltext
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';                      //Abbrechen
    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;                         //Ausrechnung des downloadspeeds
    if DLTime > 0 then
    AverageSpeed := (AWorkCount / 1024) / DLTime;         
  
    if not(round(AverageSpeed)=0then 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, 03) + ' Std';                          //zeit verbleibend
        end;
        zeit:=FloatToStr(temp/60);
        zeit:=Copy(zeit, 03) + ' 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), 32) + '%';   //Prozentanzeige
  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 + ')'//anzeige wievielte datei gedownloadet wird
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19341
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 157
Erhaltene Danke: 1

Windows Vista Home Premium 64Bit
Delphi 7 Ent.
BeitragVerfasst: 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:
ausblenden Delphi-Quelltext
1:
2:
3:
  AverageSpeed := (AWorkCount / 1024) / DLTime;
  -->
  AverageSpeed := (AWorkCount / 1024) / round(DLTime);


mfg
pesi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 67
Erhaltene Danke: 1



BeitragVerfasst: 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