Autor Beitrag
schismatic
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Di 26.05.09 09:56 
Morgen!

Ich habe hier ein (hoffentlich einfaches) Problem zu dessen Lösung mir jedoch keinerlei Wissen zur verfügung steht.

Mein kleines Tool das ich geschrieben habe lädt aktuell eine Datei aus dem Internet herunter und speicher diese auf der Festplatte. Jedoch wäre es mir wesentlich lieber wenn die Datei nur im Arbeitsspeicher für die Dauer des downloads gehalten wird und anschließend gelöscht wird. Da ich etwa mit 1.000 Downloads die Woche rechne wäre es wohl nicht besonders schonend für die Festplatte immmer und immer wieder auf der gleichen Stelle herumzuschreiben :)

Hier der Code den ich für den Download benutze:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
procedure DownloadFile(URL, DestinationFile, Username, Password : string);
var
  FileStream: TFileStream;
  HTTP : TIdHTTP;
begin
  FileStream := TFileStream.Create(DestinationFile, fmCreate);
  HTTP := TIdHTTP.Create;
  HTTP.Request.BasicAuthentication := true;
  HTTP.Request.Username := Username;
  HTTP.Request.Password := Password;
  HTTP.HandleRedirects := true;
  HTTP.Get(URL, FileStream);
  HTTP.Free;
  FileStream.Free;
end;


Wie man sieht wird zuerst eine Datei auf auf der Festplatte erstellt (DestinationFile) und anschließend beginnt der Download.

Kann ich das nun irgendwie abändern das es wie gesagt nur im Arbeitsspeicher gehalten wird und nach dem Download wieder gelöscht wird?
Xentar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: Di 26.05.09 10:16 
Wenn eine Festplatte nach 1000 Schreibzyklen pro Woche auseinanderfällt, hat sie es nicht anders verdient.. :D

Einige allgemeine Dinge zu deinem Quellcode:
- Wieso downloadest du was, nur um es hinterher wieder zu löschen? Klingt ein wenig nach Statistik pushen ;)
- Schau dir mal try..finally..end an

Und zu deiner Frage:
Wenn ein TFileStream eine Datei schreibt, was könnte man wohl nehmen, wenn der Stream nur im Speicher bleiben soll?

_________________
PROGRAMMER: A device for converting coffee into software.
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10184
Erhaltene Danke: 1259

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Di 26.05.09 10:16 
Moin und :welcome: im Forum!

user profile iconschismatic hat folgendes geschrieben Zum zitierten Posting springen:
Da ich etwa mit 1.000 Downloads die Woche rechne wäre es wohl nicht besonders schonend für die Festplatte immmer und immer wieder auf der gleichen Stelle herumzuschreiben
Wenn du sowas vermeiden willst, dann solltest du besser nie wieder ein Betriebssystem (z.B. Windows) von Platte booten... :rofl:

user profile iconschismatic hat folgendes geschrieben Zum zitierten Posting springen:
Kann ich das nun irgendwie abändern das es wie gesagt nur im Arbeitsspeicher gehalten wird und nach dem Download wieder gelöscht wird?
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
procedure DownloadFile(URL, DestinationFile, Username, Password : string);
var
  temp: String;
  HTTP : TIdHTTP;
begin
  HTTP := TIdHTTP.Create;
  HTTP.Request.BasicAuthentication := true;
  HTTP.Request.Username := Username;
  HTTP.Request.Password := Password;
  HTTP.HandleRedirects := true;
  temp := HTTP.Get(URL);
  HTTP.Free;
end;
Das sollte es schon sein. ;) Was man auch selbst rausfindet, wenn man mal ein bischen die Methodenliste durchgeblättert hätte... :roll: :zwinker:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
schismatic Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Di 26.05.09 10:23 
Ach menno :D

Ich danke Euch für den Hinweis. Statistik pushen kommt tatsächlich fast hin, hat jedoch nur für mich eine Bedeutung und sonst keinerlei Auswirkungen ;)