RSS okuyucu

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
sako
Üye
Mesajlar: 477
Kayıt: 11 Haz 2003 02:40
Konum: ERZURUM

RSS okuyucu

Mesaj gönderen sako »

İnternette bulduğum aşağıdaki kodla RSS okutuyorum. Ama bir türlü güncelleme yapamadım arkadaşlar. Sadece ilk seferinde güncelleme yapıyor sonra hiçbir güncelleme yapmıyor...

Kod: Tümünü seç

procedure TForm1.btnRefreshClick(Sender: TObject);
const
 ADPXMLBLOG = 'http://www.haberturk.com/haberturk.xml';
var
  ADPLocalFile : TFileName;

  StartItemNode : IXMLNode;
  ANode : IXMLNode;
  STitle, sDesc, sLink : widestring;
begin
  ADPLocalFile := IncludeTrailingPathDelimiter(ExtractFilePath(Application.ExeName)) + 'temp.adpheadlines.xml';
  //Screen.Cursor:=crHourglass;
  try
    if not DownloadURLFile(ADPXMLBLOG, ADPLocalFile)  then
    begin
      Screen.Cursor:=crDefault;
      Raise Exception.CreateFmt('internet bağlantısı yok!',[]);
      Exit;
    end;

    if not FileExists(ADPLocalFile) then
    begin
      Screen.Cursor:=crDefault;
      raise exception.Create('Dosyaya erişilemiyor!');
      Exit;
    end;

    lv.Clear;
    XMLDoc.FileName := ADPLocalFile;
    XMLDoc.Active:=True;


    StartItemNode:=XMLDoc.DocumentElement.ChildNodes.First.ChildNodes.FindNode('item');
    ANode := StartItemNode;
    repeat
      STitle := ANode.ChildNodes['title'].Text;
      sLink := ANode.ChildNodes['link'].Text;
      with LV.Items.Add do
      begin
        Caption := STitle;
        SubItems.Add(sLink);
        SubItems.Add(sdesc);
        end;

      ANode := ANode.NextSibling;
    until ANode = nil;
  finally
    DeleteFile(ADPLocalFile);
    Screen.Cursor:=crDefault;
  end;
DOĞUNUN SINIR TAŞI ERZURUM'UN DADAŞ'I
EFE'Sİ VAR İZMİR'İN EĞİLMEZ TÜRK' ÜN BAŞI
emin_as
Üye
Mesajlar: 559
Kayıt: 01 Eki 2008 10:05
Konum: izmir
İletişim:

Re: RSS okuyucu

Mesaj gönderen emin_as »

Sorun downloadurl fonksiyonun ilk yüklemeden sonra sürekli cache belleği kullanmasından kaynaklanıyor. Eğer internet geçmişini sildirirsen, bu kez sıfırdan yeni dosya yüklüyor, yoksa değişip değişmedigine bakmadan sürekli cache deki dosyayı geri döndürüyor. Program güncellemesi için fonksiyon yazarken benzer sorunlar yaşamıştım, oradan biliyorum.

Aşagıdaki kodu kullanabilirsin, ben de sorunsuz çalışıyor.

Kod: Tümünü seç

const
  BINDF_ASYNCHRONOUS            = $00000001;
  BINDF_ASYNCSTORAGE            = $00000002;
  BINDF_NOPROGRESSIVERENDERING  = $00000004;
  BINDF_OFFLINEOPERATION        = $00000008;
  BINDF_GETNEWESTVERSION        = $00000010;
  BINDF_NOWRITECACHE            = $00000020;
  BINDF_NEEDFILE                = $00000040;
  BINDF_PULLDATA                = $00000080;
  BINDF_IGNORESECURITYPROBLEM   = $00000100;
  BINDF_RESYNCHRONIZE           = $00000200;
  BINDF_HYPERLINK               = $00000400;
  BINDF_NO_UI                   = $00000800;
  BINDF_SILENTOPERATION         = $00001000;
  BINDF_PRAGMA_NO_CACHE         = $00002000;
  BINDF_GETCLASSOBJECT          = $00004000;
  BINDF_RESERVED_1              = $00008000;
  BINDF_FREE_THREADED           = $00010000;
  BINDF_DIRECT_READ             = $00020000;
  BINDF_FORMS_SUBMIT            = $00040000;
  BINDF_GETFROMCACHE_IF_NET_FAIL= $00080000;
  BINDF_FROMURLMON              = $00100000;
  BINDF_FWD_BACK                = $00200000;
  BINDF_PREFERDEFAULTHANDLER    = $00400000;
  BINDF_RESERVED_3              = $00800000;

function DownloadToFile(URL, FileName: String): Boolean;
var
  lpszFile : array [0..MAX_PATH] of Char;
begin
  if (URLDownloadToCacheFile(nil, PChar(URL), @lpszFile, MAX_PATH, BINDF_GETNEWESTVERSION, nil) = S_OK) then
     result:=CopyFile(@lpszFile, PChar(FileName), False)
  else
     result:=False;
end;
sako
Üye
Mesajlar: 477
Kayıt: 11 Haz 2003 02:40
Konum: ERZURUM

Re: RSS okuyucu

Mesaj gönderen sako »

Şöyle bir hata veriyor.

[Error] Unit1.pas(77): Undeclared identifier: 'URLDownloadToCacheFile'
DOĞUNUN SINIR TAŞI ERZURUM'UN DADAŞ'I
EFE'Sİ VAR İZMİR'İN EĞİLMEZ TÜRK' ÜN BAŞI
emin_as
Üye
Mesajlar: 559
Kayıt: 01 Eki 2008 10:05
Konum: izmir
İletişim:

Re: RSS okuyucu

Mesaj gönderen emin_as »

uses bölümünde urlmon var mı?
sako
Üye
Mesajlar: 477
Kayıt: 11 Haz 2003 02:40
Konum: ERZURUM

Re: RSS okuyucu

Mesaj gönderen sako »

Şimdi var :D
DOĞUNUN SINIR TAŞI ERZURUM'UN DADAŞ'I
EFE'Sİ VAR İZMİR'İN EĞİLMEZ TÜRK' ÜN BAŞI
Kullanıcı avatarı
Battosai
Üye
Mesajlar: 1316
Kayıt: 01 Eki 2007 12:02
Konum: Ankara

Re: RSS okuyucu

Mesaj gönderen Battosai »

Bu işler için indy http de kullanabilirsin...cache sorunu falan olmaz.
sako
Üye
Mesajlar: 477
Kayıt: 11 Haz 2003 02:40
Konum: ERZURUM

Re: RSS okuyucu

Mesaj gönderen sako »

Sorun çözüldü hocam çok teşekkürler...
DOĞUNUN SINIR TAŞI ERZURUM'UN DADAŞ'I
EFE'Sİ VAR İZMİR'İN EĞİLMEZ TÜRK' ÜN BAŞI
Cevapla