Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
sako
Üye
Mesajlar: 477 Kayıt: 11 Haz 2003 02:40
Konum: ERZURUM
Mesaj
gönderen sako » 29 May 2009 01:29
İ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:
Mesaj
gönderen emin_as » 29 May 2009 02:05
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
Mesaj
gönderen sako » 29 May 2009 02:22
Şö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:
Mesaj
gönderen emin_as » 29 May 2009 02:33
uses bölümünde urlmon var mı?
sako
Üye
Mesajlar: 477 Kayıt: 11 Haz 2003 02:40
Konum: ERZURUM
Mesaj
gönderen sako » 29 May 2009 02:41
Şimdi var
DOĞUNUN SINIR TAŞI ERZURUM'UN DADAŞ'I
EFE'Sİ VAR İZMİR'İN EĞİLMEZ TÜRK' ÜN BAŞI
Battosai
Üye
Mesajlar: 1316 Kayıt: 01 Eki 2007 12:02
Konum: Ankara
Mesaj
gönderen Battosai » 29 May 2009 02:56
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
Mesaj
gönderen sako » 29 May 2009 03:06
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