![]() |
download ohne cache..
hey.. für heute ist das mal meine letzte frage :))..
ich hab diesen code bei swissdelphicenter gefunden
Code:
meine frage... was ist denn eigentlich hier s? wo wird die datei gespeichert?... wasn das :D..?
function DownloadURL_NOCache(const aUrl: string; var s: String): Boolean;
var hSession: HINTERNET; hService: HINTERNET; lpBuffer: array[0..1024 + 1] of Char; dwBytesRead: DWORD; begin Result := False; s := ''; // hSession := InternetOpen( 'MyApp', INTERNET_OPEN_TYPE_DIRECT, nil, nil, 0); hSession := InternetOpen('MyApp', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0); try if Assigned(hSession) then begin hService := InternetOpenUrl(hSession, PChar(aUrl), nil, 0, INTERNET_FLAG_RELOAD, 0); if Assigned(hService) then try while True do begin dwBytesRead := 1024; InternetReadFile(hService, @lpBuffer, 1024, dwBytesRead); if dwBytesRead = 0 then break; lpBuffer[dwBytesRead] := #0; s := s + lpBuffer; end; Result := True; finally InternetCloseHandle(hService); end; end; finally InternetCloseHandle(hSession); end; end; //aufrufen var s: String; begin if DownloadURL('http://www.swissdelphicenter.ch/', s) then ShowMessage(s); end; |
AW: download ohne cache..
Der Response ist in
Delphi-Quellcode:
zu finden
s
|
AW: download ohne cache..
also ist die runtergeladene datei in s gespeichet??
und wie speicher ich es ab? s.safetofile()??? bin nicht zuhause und kann es leider grafe nicht testen |
AW: download ohne cache..
Da S ein String ist geht das so nicht.
Du könntest es mit einem Filestream machen
Delphi-Quellcode:
oder mit einer Stringlist:
..fs.write(s[1],length(s)*sizeof(char))
Delphi-Quellcode:
So als Anregung.
stl.text:=s;
stl.savetofile('irgendeinedatei'); Gruß K-H |
AW: download ohne cache..
.. Du könntest Dir die Routine auch entsprechend umbauen und in einen FileStream speichern/schreiben.
Ein String ist sowieso nicht ideal, wenn Du nicht ascii Dateien laden willst. Grüße Klaus |
AW: download ohne cache..
Für Download ohne Cache:
INTERNET_FLAG_RELOAD + INTERNET_FLAG_PRAGMA_NOCACHE |
AW: download ohne cache..
ggf. wird trotzdem ein Cache aktiv.
Mit einen zufälligen Queryparameter hat man das Problem dann garantiert nicht mehr. |
AW: download ohne cache..
ich hab das ganze mal in ner tstringlist gespeichert.. dann wie hier vorgeschlagen per safetofile abgespeichert..
jetzt habe ich 2 probleme... wenn die datei nicht existiert die heruntergeladen werden soll.. dann ist die erstellte datei 1,23 KB groß... und wenn die datei existiert hab ich auch ein problem.. unzwar.. die testdatei die runtergeladen werden soll ist 46,9 KB.. nun ist aber die abgespeicherte datei 21,5 KB groß.. bevor ich es in die funktion einbaue hab ich das mal so ausprobiert..
Code:
wie man sieht ist es ne jpg datei.. und natürlich kann ich sie auch nicht öffnen nach dem "runterladen" :)
var stl:TStringList;
s:string; begin stl:= TStringList.Create; DownloadURL_NOCache('http://******/bild.jpg', s); stl.text:=s; stl.savetofile('C:\*****\test.jpg'); stl.Free; |
AW: download ohne cache..
Nimm doch mal statt des Strings einen Stream, z.B. TMemoryStream.
|
AW: download ohne cache..
da ich eigentlich noch am anfang bin in sachen delphi.. habe ich mich mal bisschen über streams schlau gemacht..
leider habe ich es nicht geschafft es umzusetzen.. hier scheiterts.. :(
Code:
s.write(s + lpBuffer);
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:57 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz