Entwickler-Ecke

Internet / Netzwerk - Datei aus dem Internet streamen


stigge - Do 21.06.07 13:59
Titel: Datei aus dem Internet streamen
Hallo,

ich schicke Daten per idhttp.post an eine Webseite und bekomme als Antwort eine Datei. Diese möchte ich jetzt per Stream auf der Festplatte speichern. Wie mache ich das? Mein bisheriger Code:

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:
var art: tstringlist;
    streamen: TFileStream;

...


try
  art := TStringList.Create;
  streamen.Create(handle);
  with
  art do
  begin
     Values['irgendwas'] := irgendwas;
     Values['irgendwas'] := irgendwas;
  end;
  try
  stream.speichern????? := IdHTTP1.Post('webseite', art); //Hier gehts ans Speichern
  except
  on E: Exception do
  begin
  showmessage('Es kann keine Verbindung zum Server aufgebaut werden');
  exit;
  end;
  end;
 finally
 art.Free;
streamen.free;
 end;



Wäre dankbar über Hilfe,

Stigge


Robinator - Do 21.06.07 14:51

Ohoh, da sind aber ne menge Fehler drin ;)

1. Rück deinen code vernünftig ein!
2. Wie du Objekte erstellst scheinst du ja zu wissen (siehe StringList)... genauso geht da beim FileStream auch
3. Du musst den Stream als dritten Parameter im Post befehl angeben.
4. Dann sollte es gehen :=)


gruss, ROb


stigge - Do 21.06.07 15:11


Delphi-Quelltext
1:
streamen.Create;                    

[DCC Fehler] Unit1.pas(130): E2250 Es gibt keine überladene Version von 'Create', die man mit diesen Argumenten aufrufen kann

Und wo muss ich überhaupt eintragen, wo die Datei gespeichert werden soll?


arj - Do 21.06.07 17:12

Anstatt
user profile iconstigge hat folgendes geschrieben:

Delphi-Quelltext
1:
streamen.Create;                    



solltest du

Delphi-Quelltext
1:
streamen := TFileStream.Create('C:\pfad\Dateiname.txt',fmCreate);                    


verwenden.


stigge - Do 21.06.07 18:26

user profile iconarj hat folgendes geschrieben:


Delphi-Quelltext
1:
streamen := TFileStream.Create('C:\pfad\Dateiname.txt',fmCreate);                    

Damit funktioniert's, Danke!
Aber während er downloadet reagiert das Programm nicht mehr.
Kann man das irgendwie unterbinden?


JayEff - Do 21.06.07 18:36

Den  on E:Exception do begin end; Block brauchst du nicht, wenn du sowieso nicht auf das E-Objekt zugreifst. Lass das alles weg und schreib nur try-except *Fehlerbehandlung* end;


Robinator - Do 21.06.07 18:40

user profile iconstigge hat folgendes geschrieben:
user profile iconarj hat folgendes geschrieben:


Delphi-Quelltext
1:
streamen := TFileStream.Create('C:\pfad\Dateiname.txt',fmCreate);                    

Damit funktioniert's, Danke!
Aber während er downloadet reagiert das Programm nicht mehr.
Kann man das irgendwie unterbinden?



entweder du packst das ganze in nen eigenen Thread oder du verwendest TidAntiFreeze, Das bringt zumindest nen bischen was ;)


stigge - Do 21.06.07 18:46

user profile iconRobinator hat folgendes geschrieben:
entweder du packst das ganze in nen eigenen Thread oder du verwendest TidAntiFreeze, Das bringt zumindest nen bischen was ;)

OK, Danke!