Ana içeriğe atla

Delphi ile rss reader yapalım

Olayı güzel güzel yazıyordum fakat birden ne olduğunu anlamadan sayfa refresh olunca tüm yazılar gitti. şimdi o kadar yazıyı yazmaya üşeniyorum doğrusu. bu sefer kısa kısa geçecem. Nasıl olsa kaynak kodu yanında :) 1-internetten xml dosyasını download edecez 2-xml dosyasını parse edip içinden gerekli verileri alacaz 3-listview kullanarak bu bilgileri gösterecez hadi başlayalım. forma gerekli bileşenleri koyarak işe başlayalım. birer adet TButton, TEdit, TlistView, TMemo ve 2 tane TLabel ve de en önemlisi TXMLDocument. (internet paletinde ikamet ediyor kendileri) ilk önce download işini halleden fonksiyon. Uses satırına ExtActns eklemeyi unutmayın.
function DownloadURLFile(const strUrl, strLocalFile : TFileName) : boolean; begin Result:=True; with TDownLoadURL.Create(nil) do try URL:=strUrl; Filename:=strLocalFile; try ExecuteTarget(nil); except Result:=False; end; finally Free; end; end;
gayet açık sanırım :) şimdi sırada download edilen xmli parçalamaya geldi.
procedure TForm1.btnRefreshClick(Sender: TObject); var strLocalFile : TFileName; StartItemNode : IXMLNode; ANode : IXMLNode; STitle, sDesc, sLink : widestring; begin //internetteki dosyanın bilgisayarda kaydedileceği yol strLocalFile := IncludeTrailingPathDelimiter(ExtractFilePath(Application.ExeName)) + 'temp.xml'; //internetten dosya download ediliyor. Screen.Cursor:=crHourglass; try if not DownloadURLFile(edtBlogAdres.Text, strLocalFile) then begin Screen.Cursor:=crDefault; Raise Exception.CreateFmt('Sayfa alınamadı. Lütfen internet bağlantınızı kontrol edin.',[]); Exit; end; if not FileExists(strLocalFile) then begin Screen.Cursor:=crDefault; raise exception.Create('Dosya bulunamadı'); Exit; end; lv.Clear; XMLDoc.FileName := strLocalFile; XMLDoc.Active:=True; //hangi sıradaki elemanlara ulaşmak istediğimizi ayarlıyoruz StartItemNode := XMLDoc.DocumentElement.ChildNodes.First.ChildNodes.FindNode('item'); ANode := StartItemNode; //bütün elemanlara erişebilmek için döngüye alıyoruz repeat STitle := ANode.ChildNodes['title'].Text; sLink := ANode.ChildNodes['link'].Text; sDesc := ANode.ChildNodes['description'].Text; //değerleri listviewe ekliyoruz... with LV.Items.Add do begin Caption := STitle; SubItems.Add(sLink); SubItems.Add(sDesc); end; //düğümü bir sonraki düğüme eşitleyip devam ediyoruz. //pointerlarla linked list uygulaması yapanlara bu mantık çok //tanıdık gelecektir :) ANode := ANode.NextSibling; until ANode = nil; finally DeleteFile(strLocalFile); Screen.Cursor:=crDefault; end; end;
buda kullanıcının seçtiği haberi label ve memoda göstermek için gerekli olan kod
procedure TForm1.lvSelectItem(Sender: TObject; Item: TListItem; Selected: Boolean); begin if lv.ItemIndex = -1 then exit; lblBaslik.Caption := lv.Items[lv.ItemIndex].Caption; lblUrl.Caption := lv.Selected.SubItems[0]; memoAciklama.Text := lv.Selected.SubItems[1]; end;
yeterli test etme imkanı bulamadım ama rss 2.0 da sorunsuz çalışıyor. zaten örnekte alinin bloğunun adresi var :) sonra "ben neden bu kadar hit alıyorum?" diye soruyo kendi kendine :) programın kaynak kodunu indirmek için buraya tıklayın...

Yorumlar

Adsız dedi ki…
Üstat kaynak kodların olduğu linki tıkladım ama dosyayı download edemiyorum. acaba linkte problemmi var
Sadettin POLAT dedi ki…
sağ tuş --> hedefi farklı kaydet dediğimde sorunsuz bir şekilde dosyaları download ettim. tekrar deneyin....
Sadettin POLAT dedi ki…
dosyayi bu linkten indirebilirsiniz.

http://www.hemenpaylas.com/download/53069/BlogXMLTest.rar.html
Adsız dedi ki…
saadetin abi soyle sorum olacak eger rss'den yenı bır bılgı gelırse bunu nasıl anlayacagız?
Adsız dedi ki…
tüm linkler kırık ve benden önceki arkadaşın sorusuna da katılıyorum

Bu blogdaki popüler yayınlar

Yazılımı Oluşturan Bileşenler Nelerdir?

Yazılımı oluşturan bileşenlerden daha önce söz etmiştik. Şimdi bu bileşenlerin neler oldukları üzerinde biraz duralım. Yazılımı oluşturan bileşenler = Mantık + Veri + Belge + İnsan + Program. Bu bileşenlerin az çok neler olduğunu, neleri kapsadığını biliyoruz ama biz yine de kıyısından köşesinden açıklayalım. Zaten bu yazıdaki asıl amaç yazılım bileşenlerinden belgelemenin yerini ve önemi (dökümantasyon) vurgulamak. Mantık = Yazılım herşeyden önce bir işin bilgisayar aracılığı ile yapılması amacına yöneliktir. Bu nedenle bilgisayarlaştırılmak istenen işin mevcut mantığı bir şekilde yazılıma da yansılıtılmak zorundadır. Veri = Her tür yazılım mutlaka bir veri üzerinde çalışmak durumundadır. Veri işlemeyen yazılımın geliştirilmesi söz konusu değildir. Söz konusu olan veri dış ortamdan alınabileceği gibi yazılımın içerisinde de üretilebilir. Zaten yazılımın temel amacı veriyi bilgiye dönüştürmektir. İnsan = Doğal olarak yazılımın insan bileşeni iki boyutludur. Yazıl

Leyse li'l-insâni illâ mâ seâ

"Leyse li'l-insâni illâ mâ seâ" derken Hudâ; Anlamam hiç meskenetten sen ne beklersin daha? Mehmet Akif Ersoy / Durmayalim Leyse li'l-insâni illâ mâ seâ : Necm Süresi 39. Ayet. [İnsan için ancak çalıştığı vardır.] Meskenet: 1 . Miskinlik, beceriksizlik. 2 . Yoksulluk, fakirlik. (Türk Dil Kurumu) Olay zaten yeterince acik. Yan gelip yatma kardesim. Calis. Bu misralar yazildigi donemde bu anlami tasiyordu fakat zaman ilerledikce baska bir gercegi de gozler onune seriyor.Gerci bu gercek cok kapsamli bir kac satirla anlatilabilecek bir sey degil kaldiki benim bilgim de buna yeterli degil zaten. Ben giris cumlelerini verebilirim gerisini arastirmak yaziyi okuyanlara kalmis. (Matrix gibi bisey oldu bu yaw. Neo'nun kahinle bulusup yanindan ayrildiktan sonra Morpheus ile konusma sahnesi.) Yani kisaca sunu demek istiyorum. Ben bu misrayi ilk okudugumda hic birsey anlamadim. Bu misralari anlayabilmek icin kuran mealine ve turkce sozluklere bakmak zorunda k

Yunus sen bu dünyaya niye geldin?

Göçtü Kervan Ah nice bir uyursun uyanmaz mısın Göçtü kervan kaldık dağlar başında Çağrışı tellallar inanmaz mısın Göçtü kervan kaldık dağlar başında Emr-i hac göçeli hayli zamandır Muhammed cümleye dindir imandır Delilsiz gidilmez yollar yamandır Göçtü kervan kaldık dağlar başında Yunus sen bu dünyaya niye geldin Gece gündüz Hakkı zikretsin dilin Enbiyaya uğramaz ise yolun Göçtü kervan kaldık dağlar başında Yunus Emre