![]() |
temporäre dateien-Funktion deaktivieren?
Hi, ich arbeite momentan an einem Projekt, bei dem ich Dateien von einem Server herunterlade.
Das Probem ist, dass nach kurzer Zeit das Programm nicht mehr neu herunterläd, sondern die "bereits vorhandenen" Dateien vom letzten Mal download nimmt...Die haben sich aber geändert! Temporären Ordner löschen bringt nichts, nur neustart, und das nach jedem 2ten mal Probe fürs prog, das nervt ziemlich! Könnt ihr mir da helfen? lG |
Re: temporäre dateien-Funktion deaktivieren?
Wie lädst du die Datei herunter? Bei URLDownloadToFile oder wie das Ding heißt wird der IE verwendet, also auch dessen Einstellungen und Cache. Steig einfach auf ne Alternative wie Synapse oder Indys um, fertig. Es sei denn dein Server cacht, aber eher unwahrscheinlich.
|
Re: temporäre dateien-Funktion deaktivieren?
Hier der wichtige Auszug des Codes, ist nicht so viel zu lesen, wies aussieht;)
:coder2: ....
Delphi-Quellcode:
{function cDownloadStatusCallback._AddRef: Integer;
begin Result := 0; end; function cDownloadStatusCallback._Release: Integer; begin Result := 0; end; function cDownloadStatusCallback.QueryInterface(const IID: TGUID; out Obj): HResult; begin if(GetInterface(IID,Obj)) then begin Result := 0 end else begin Result := E_NOINTERFACE; end; end; function cDownloadStatusCallback.OnStartBinding(dwReserved: DWORD; pib: IBinding): HResult; begin Result := S_OK; end; function cDownloadStatusCallback.GetPriority(out nPriority): HResult; begin Result := S_OK; end; function cDownloadStatusCallback.OnLowResource(reserved: DWORD): HResult; begin Result := S_OK; end; function cDownloadStatusCallback.OnStopBinding(hresult: HResult; szError: LPCWSTR): HResult; stdcall; begin Result := S_OK; end; function cDownloadStatusCallback.GetBindInfo(out grfBINDF: DWORD; var bindinfo: TBindInfo): HResult; stdcall; begin Result := S_OK; end; function cDownloadStatusCallback.OnDataAvailable(grfBSCF: DWORD; dwSize: DWORD; formatetc: PFormatEtc; stgmed: PStgMedium): HResult; begin Result := S_OK; end; function cDownloadStatusCallback.OnObjectAvailable(const iid: TGUID; punk: IUnknown): HResult; stdcall; begin Result := S_OK; end; } function cDownloadStatusCallback.OnProgress(ulProgress, ulProgressMax, ulStatusCode: ULONG; szStatusText: LPCWSTR): HResult; begin case ulStatusCode of BINDSTATUS_FINDINGRESOURCE: begin Form1.Label1.Caption := 'Bild'+ floattostr(bildvar) + ': '+'Datei wurde gefunden...'; if (usercancel) then begin Result := E_ABORT; exit; end; end; BINDSTATUS_CONNECTING: begin Form1.Label1.Caption := 'Bild'+ floattostr(bildvar) + ': '+'Es wird verbunden...'; if (usercancel) then begin Result := E_ABORT; exit; end; end; BINDSTATUS_BEGINDOWNLOADDATA: begin Form1.Gauge1.Progress := 0; Form1.Label1.Caption := 'Bild'+ floattostr(bildvar) + ': '+'Der Download wurde gestartet...'; if (UserCancel) then begin Result := E_ABORT; exit; end; end; BINDSTATUS_DOWNLOADINGDATA: begin Form1.Gauge1.Progress := MulDiv(ulProgress,100,ulProgressMax); Form1.Label1.Caption := 'Bild'+ floattostr(bildvar) + ': '+'Datei wird heruntergeladen...'; if (UserCancel) then begin Result := E_ABORT; exit; end; end; BINDSTATUS_ENDDOWNLOADDATA: begin Form1.Label1.Caption := 'Bild'+ floattostr(bildvar) + ': '+'Download wurd beendet...'; Bildvar:=Bildvar+1; end; end; Application.ProcessMessages; Result := S_OK; end; procedure TForm1.Button1Click(Sender: TObject); var cDownStatus : cDownloadStatusCallback; v1, v2 :string; faktorx,faktory:real; zoom:string; link:string; i,x,y:integer; begin //.....unrelevantes Zeug hier^^....... ////1 v1:='http://********.com/Content/*****/'+*****+'/'+x1+'/'+y1+'/'+'?path='+link; v2:='C:\'+Zahl+'.1.jpg'; cDownStatus := cDownloadStatusCallBack.Create; try URLDownloadToFIle(nil,PChar(v1), PChar(v2),0,CDownStatus); finally cDownStatus.Free; end; ////2 ..... ////3 ..... usw |
Re: temporäre dateien-Funktion deaktivieren?
Du solltest DeleteURLCacheEntry verwenden bevor du einen neuen Download mit URLDownloadToFile machst. Sonst wird die Datei aus dem Cache (temporäre Internetdateien) geladen.
|
Re: temporäre dateien-Funktion deaktivieren?
Zitat:
|
Re: temporäre dateien-Funktion deaktivieren?
WinInet
|
Re: temporäre dateien-Funktion deaktivieren?
funktioniert irgendwie nicht, bzw nicht immer.
scheint jetzt Zufall zu sein, wann er es neu downloadet oder nicht was muss ich denn für
Delphi-Quellcode:
einsetzen? Momentan hab ich die Serverhauptseite eingestellt(also die ohne slashs
IpszUrlName:PChar
Zitat:
|
Re: temporäre dateien-Funktion deaktivieren?
Hier mal ein Ausschnitt aus einer Unit wie ich es gelöst habe:
Delphi-Quellcode:
Bei URLtoCheck wird die entsprechende Adresse der herunterzuladenden Datei angegeben. Also z.B.:
// Zuerst die Datei aus dem Cache löschen falls diese dort vorhanden ist
DeleteURLCacheEntry(PChar(URLtoCheck)); // Jetzt die Datei neu aus dem Internet laden if URLDownloadToFile(nil,PChar(URLtoCheck),PChar(LocalFileName),0,nil) = S_OK then begin // Datei gleich wieder aus dem Cache löschen DeleteURLCacheEntry(PChar(URLtoCheck)); ![]() |
Re: temporäre dateien-Funktion deaktivieren?
es klappt immer noch nicht!..
ich bezweifele aber auch irgendwie dass das im cache ist. Ich hab sogar über meinen browser nochmal manuell den kompletten cache gelöscht und er hat trotzdem sofort alles geladen! Woran könnte das denn noch liegen? |
Re: temporäre dateien-Funktion deaktivieren?
Zitat:
Beidem Tempo (so wie beschrieben) muß diese Cache auf deinem PC liegen und dort ist die einzige mögliche Cache die des Browsers. Zitat:
(diese Funktionen laufen über den Internet Explorer) andere Möglichkeit: du nimmst die Indys und versuchst es damit. |
Re: temporäre dateien-Funktion deaktivieren?
Zitat:
Zitat:
wie kann ich mit delphi denn die komplette cache löschen? sonst mach ichs halt radikal... Was mir grade auffällt... Ich downloade so ja hauptsächlich bilder.. Wenn ich ein Bild geladen habhe und dann ein anderes lade, kommt trotzdem das erste im Bilderfeld im Prog...Aber auch nicht immer.Wie kann das sein!? Wenn ich 5 Minuten warte geht es wieder... |
Re: temporäre dateien-Funktion deaktivieren?
Erstelle doch mal ein kleines Testprojekt bei dem das Problem auftritt und stelle es hier rein. Vielleicht lässt sich der Fehler so leichter finden.
|
Re: temporäre dateien-Funktion deaktivieren?
Hi,
häng mal an die URL einfach einen Timestamp dran
Delphi-Quellcode:
Damit kannst du den Cache überlisten.
newURL := URL + '?' + FormatDateTime('yyyymmddhhnnsszzz');
Gruss |
Re: temporäre dateien-Funktion deaktivieren?
Zitat:
Delphi-Quellcode:
ich hab noch nie mit sowas gearbeitet...aber die Idee ist gut :D kannst du mir noch einen Tipp geben?
FormatDateTime('yyyymmddhhnnsszzz',20001204114444444)
@ ringli: ich hab ![]() |
Re: temporäre dateien-Funktion deaktivieren?
Ja, ich meinte ein komplettes Projekt um zu sehen ob sich vielleicht im Rest des Codes ein Käferchen befindet.
|
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