Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi temporäre dateien-Funktion deaktivieren? (https://www.delphipraxis.net/144933-temporaere-dateien-funktion-deaktivieren.html)

cRayZo 20. Dez 2009 01:24


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

Meflin 20. Dez 2009 01:26

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.

cRayZo 20. Dez 2009 01:39

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

ringli 20. Dez 2009 08:05

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.

cRayZo 20. Dez 2009 11:11

Re: temporäre dateien-Funktion deaktivieren?
 
Zitat:

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?

Meflin 20. Dez 2009 11:13

Re: temporäre dateien-Funktion deaktivieren?
 
WinInet

cRayZo 20. Dez 2009 12:45

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:
IpszUrlName:PChar
einsetzen? Momentan hab ich die Serverhauptseite eingestellt(also die ohne slashs

ringli 20. Dez 2009 13:11

Re: temporäre dateien-Funktion deaktivieren?
 
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

cRayZo 21. Dez 2009 15:01

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?

himitsu 21. Dez 2009 15:33

Re: temporäre dateien-Funktion deaktivieren?
 
Zitat:

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:

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.


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:37 Uhr.
Seite 1 von 2  1 2      

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