AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi temporäre dateien-Funktion deaktivieren?
Thema durchsuchen
Ansicht
Themen-Optionen

temporäre dateien-Funktion deaktivieren?

Ein Thema von cRayZo · begonnen am 20. Dez 2009 · letzter Beitrag vom 22. Dez 2009
Antwort Antwort
Seite 1 von 2  1 2      
cRayZo

Registriert seit: 30. Jul 2007
156 Beiträge
 
Delphi 6 Personal
 
#1

temporäre dateien-Funktion deaktivieren?

  Alt 20. Dez 2009, 02:24
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
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#2

Re: temporäre dateien-Funktion deaktivieren?

  Alt 20. Dez 2009, 02:26
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.
  Mit Zitat antworten Zitat
cRayZo

Registriert seit: 30. Jul 2007
156 Beiträge
 
Delphi 6 Personal
 
#3

Re: temporäre dateien-Funktion deaktivieren?

  Alt 20. Dez 2009, 02:39
Hier der wichtige Auszug des Codes, ist nicht so viel zu lesen, wies aussieht
....


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
  Mit Zitat antworten Zitat
ringli

Registriert seit: 7. Okt 2004
509 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: temporäre dateien-Funktion deaktivieren?

  Alt 20. Dez 2009, 09:05
Du solltest DeleteURLCacheEntry verwenden bevor du einen neuen Download mit URLDownloadToFile machst. Sonst wird die Datei aus dem Cache (temporäre Internetdateien) geladen.
  Mit Zitat antworten Zitat
cRayZo

Registriert seit: 30. Jul 2007
156 Beiträge
 
Delphi 6 Personal
 
#5

Re: temporäre dateien-Funktion deaktivieren?

  Alt 20. Dez 2009, 12:11
Zitat von ringli:
Du solltest DeleteURLCacheEntry verwenden bevor du einen neuen Download mit URLDownloadToFile machst. Sonst wird die Datei aus dem Cache (temporäre Internetdateien) geladen.
Welches Uses hat DeleteURLCacheEntry?
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#6

Re: temporäre dateien-Funktion deaktivieren?

  Alt 20. Dez 2009, 12:13
WinInet
  Mit Zitat antworten Zitat
cRayZo

Registriert seit: 30. Jul 2007
156 Beiträge
 
Delphi 6 Personal
 
#7

Re: temporäre dateien-Funktion deaktivieren?

  Alt 20. Dez 2009, 13:45
funktioniert irgendwie nicht, bzw nicht immer.
scheint jetzt Zufall zu sein, wann er es neu downloadet oder nicht
was muss ich denn fürIpszUrlName:PChar einsetzen? Momentan hab ich die Serverhauptseite eingestellt(also die ohne slashs
  Mit Zitat antworten Zitat
ringli

Registriert seit: 7. Okt 2004
509 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: temporäre dateien-Funktion deaktivieren?

  Alt 20. Dez 2009, 14:11
Hier mal ein Ausschnitt aus einer Unit wie ich es gelöst habe:
Delphi-Quellcode:
// 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));
Bei URLtoCheck wird die entsprechende Adresse der herunterzuladenden Datei angegeben. Also z.B.: http://www.homepage.de/ordner/test.cfg
  Mit Zitat antworten Zitat
cRayZo

Registriert seit: 30. Jul 2007
156 Beiträge
 
Delphi 6 Personal
 
#9

Re: temporäre dateien-Funktion deaktivieren?

  Alt 21. Dez 2009, 16:01
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?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.081 Beiträge
 
Delphi 12 Athens
 
#10

Re: temporäre dateien-Funktion deaktivieren?

  Alt 21. Dez 2009, 16:33
Zitat von cRayZo:
ich bezweifele aber auch irgendwie dass das im cache ist.
... und er hat trotzdem sofort alles geladen!
Wenn es sofort da ist, dann liegt es irgendwo in einer Cache vor.
Beidem Tempo (so wie beschrieben) muß diese Cache auf deinem PC liegen und dort ist die einzige mögliche Cache die des Browsers.

Zitat von cRayZo:
Ich hab sogar über meinen browser nochmal manuell den kompletten cache gelöscht
Von welchem Browser?
(diese Funktionen laufen über den Internet Explorer)

andere Möglichkeit: du nimmst die Indys und versuchst es damit.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:48 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz