shamat Posted October 14, 2007 Report Posted October 14, 2007 SalutDupa ce am vazut postul lui tw8 http://rstcenter.com/forum/viewtopic.php?t=8904 m-am gandit sa fac un tutorial asemanator, dar pentru Delphi, avand in vedere ca multora le este mai usor sa scrie un program in Delphi.Pentru aceasta vom avea folosii o functie ce va avea ca parametri: adresa fisierului ce vrem sa-l downloadam si calea catre fisierul unde vrem sa-l salvam.Functiile cu care vom realiza download-ul fisierului apartin de WinInet asa ca primul lucru este sa-l declaram in sectiunea uses.Partea declarativa a functiei noastre va arata cam asa:var hSesiune, hURL: HInternet; //variabilele pt sesiune Buffer: array[1..1024] of byte; BufferLen: DWORD; // lungimea buffer-ului f: file; NumeApp: string; //aici vom salva numele aplicatiei noastreDupa ce am terminat cu declaratiile trecem la scrierea propriu-zisa a functiei:Pentru inceput vom crea o sesiune folosind functia InternetOpen. NumeApp := ExtractFileName(Application.ExeName); //extragem numele aplicatiei noastre hSesiune := InternetOpen(Pchar(NumeApp), INTERNET_OPEN_TYPE_DIRECT, nil, nil, 0);Acum deschidem URL-ul cu functia InternetOpenUrl: hURL := InternetOpenUrl(hSesiune, Pchar(FileUrl), nil, 0, 0, 0 );In momentul acesta avem realizata o conexiune catre fisierul ce dorim sa-l downloadam. Tot ce ramane de facut este sa il salvam.Vom citii fisierul cu functia InternetReadFile si il vom scrie in fisierul local folosind procedura BlockWrite.AssignFile(f, FileName); rewrite(f,1); repeat InternetReadFile(hUrl,@Buffer, SizeOf(Buffer), BufferLen); BlockWrite(f,Buffer,BufferLen); until BufferLen = 0;In final tot ce mai avem de facut este sa inchidem fisierul in care am scris si sesiuniule deschide anterior. CloseFile(f); Result:=true; InternetCloseHandle(hUrl); InternetCloseHandle(hSesiune);Functia terminata arata cam asa:function GetFile(const FileUrl, FileName: string): boolean;var hSesiune, hURL: HInternet; Buffer: array[1..1024] of byte; BufferLen: DWORD; f: file; NumeApp: string;begin NumeApp := ExtractFileName(Application.ExeName); //extragem numele aplicatiei noastre hSesiune := InternetOpen(Pchar(NumeApp), INTERNET_OPEN_TYPE_DIRECT, nil, nil, 0); hURL := InternetOpenUrl(hSesiune, Pchar(FileUrl), nil, 0, 0, 0 ); AssignFile(f, FileName); rewrite(f,1); repeat InternetReadFile(hUrl,@Buffer, SizeOf(Buffer), BufferLen); BlockWrite(f,Buffer,BufferLen); until BufferLen = 0; CloseFile(f); Result:=true; InternetCloseHandle(hUrl); InternetCloseHandle(hSesiune);end;Pentru a folosii functia nu trebuie decat sa o apelam. De exemplu: GetFile('http://www.site.com/fisier.exe', 'fisier.exe');Acesta functie poate fi folosita de asemenea si pentru a salva sursa unei pagini web.GetFile('http://www.google.com/index.html', 'Index Google.html');Sper sa va fie de folos. Quote