Temproray İnternet Files

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
mepc
Üye
Mesajlar: 191
Kayıt: 26 Eyl 2003 11:39
Konum: Ankara

Temproray İnternet Files

Mesaj gönderen mepc »

Merhaba arkadaşlar

Programımda verileri internet üzerinde güncelliyorum. Her seferinde yeni dosyalar eklendiği için program siteden ilgili zip dosyasını indiriyor. exenin bulunduğu path a temp klasörü oluşturup bunun içerisine açıyor ve buradan güncelleme yapıyor.

Ancak dosyayı bir defa indirdikten sonra ikinci kez aynı dosyayı indirmek istediğimde Temproray İnternet Files klasörüne attığı dosyayı getiriyor. Yani sitedeki yeni dosyayı indirmek yerine aynı adlı daha önceden indirdiğim dosyayı temp klasörüne alıyor.

Benin istediğim her seferinde sitede bulunan dosyayı alması
Bilgi paylaşıldıkça güzeldir.
Kullanıcı avatarı
fahrettin
Admin
Mesajlar: 2619
Kayıt: 11 Haz 2003 10:38
Konum: İstanbul
İletişim:

Mesaj gönderen fahrettin »

proxy server kullanıyorsanız benzer durum proxy arkasinda başıma gelmişti. Proxy'ye cache tutma diyerek işi çözmüştüm....

Bunun dışında eger dogrudan internet baglantisi varsa acaba internet ayarlarindaki dosyanın her zaman yeni halini kontrol et seşeneğinin seçilmesi bu durumu etkiler mi bilmiyorum.

Bir de dosyayi hangi component ile indiriyorsunuz? Indy componentleri ile deneyin eger onlari kullanmadıysanız....

Kolay gelsin....
* http://www.fahrettin.org Manzara Fotoğraflarım... :)
* http://delphiturkiye.gunduz.info Seminerler... ;)
* http://www.hakmar.com.tr Kalite bir haktır... 8)
Kullanıcı avatarı
mepc
Üye
Mesajlar: 191
Kayıt: 26 Eyl 2003 11:39
Konum: Ankara

Mesaj gönderen mepc »

dosyayı aşağıdaki kodla indiriyorum

//////////////////////
uses kısmına ShellApi ve UrlMon unitlerini eklenecek

function DownLoadInternetFile(Source, Dest : String): Boolean;
begin
try
Result := URLDownloadToFile(nil,PChar(Source),PChar(Dest),0,nil) = 0
except
Result := False;
end;
end;

procedure TForm1i.Button1Click(Sender: TObject);
var
SourceString, DestinationString: string;
begin
SourceString := 'http://www.tcmb.gov.tr/kurlar/today.html';
DestinationString := 'c:\bugun.html';

DownLoadInternetFile(SourceString, DestinationString);
end;
//////////////////////////

aklıma şu çözüm geldi . temrorary internet files klasörünün yerini kod ile tespit edebilirsem download işlemine başlamadan önce aynı isimli dosyayı bu klasörden silmek.

Ancak halen daha temproray internet files klasörünü kod ile nasıl tespit edeceğimi bulamadım
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

bir de bu fonksiyon ile almayı denesene

Kod: Tümünü seç

function GetNetDocument(url, fname: string): boolean;
type
  mtype = array[0..1023] of byte;

var
  fulltxt: string;
  nread: cardinal;
  etxt: mtype;
  mhhtreq: HINTERNET;
  mhtturl: HINTERNET;
  mfile: file of mtype;

begin
  result := false;
  DeleteUrlCacheEntry(pchar(url));
  try
    mhhtreq := InternetOpen('mdown', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
    try
      mhtturl := InternetOpenUrl(mhhtreq, pchar(url), nil, 0, 0, 0);
      fulltxt := url;
      ReplaceStr(fulltxt, '/', '\');

      if fname = '' then
        fulltxt := extractfilename(fulltxt)
      else
        fulltxt := fname;
      AssignFile(mfile, fulltxt);
      Rewrite(mfile);
      repeat
        FillChar(etxt, 1024, #0);
        InternetReadFile(mhtturl, @etxt, sizeof(etxt), nread);
        Write(mfile, etxt);
        Application.ProcessMessages;
      until nread = 0;
    finally
      InternetCloseHandle(mhtturl);
      closefile(mfile);
    end;
  finally
    InternetCloseHandle(mhhtreq);
    result := true;
  end;
end;
ÜŞENME,ERTELEME,VAZGEÇME
Kullanıcı avatarı
mepc
Üye
Mesajlar: 191
Kayıt: 26 Eyl 2003 11:39
Konum: Ankara

Mesaj gönderen mepc »

var
fulltxt: string;
nread: cardinal;
etxt: mtype;
mhhtreq: HINTERNET;//hata oluşan yer

satırında hata oluşuyor çalıştıramadım

acaba uses kısmına eklemem gereken bir şeyler mi var
Bilgi paylaşıldıkça güzeldir.
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

ewt eklemeyi unutmusum WinInet uses kısmına eklenecek.
ReplaceStr func yoksa

Kod: Tümünü seç

procedure ReplaceStr(var Str: string; oldChar, newChar: Char);
var
  i: Integer;
begin
  for i := 1 to length(Str) do
    if Str[i] = oldChar then
      Str[i] := newChar;
end;
ÜŞENME,ERTELEME,VAZGEÇME
Kullanıcı avatarı
mepc
Üye
Mesajlar: 191
Kayıt: 26 Eyl 2003 11:39
Konum: Ankara

Mesaj gönderen mepc »

NMFTP ile download yaparak problemi çözdüm. Bu iş yaklaşık 3 günümü aldı ama azmin elinden kim kurtulabilirki

Cevap yazan arkadaşlara teşekkür ederim.
Kullanıcı avatarı
fahrettin
Admin
Mesajlar: 2619
Kayıt: 11 Haz 2003 10:38
Konum: İstanbul
İletişim:

Mesaj gönderen fahrettin »

gozunuz aydın....
sonucu bizimle paylaştığınız için teşekkürler....
* http://www.fahrettin.org Manzara Fotoğraflarım... :)
* http://delphiturkiye.gunduz.info Seminerler... ;)
* http://www.hakmar.com.tr Kalite bir haktır... 8)
Cevapla