web xml den ListView'e veri çekme

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
brs
Üye
Mesajlar: 626
Kayıt: 04 Eki 2012 03:52

web xml den ListView'e veri çekme

Mesaj gönderen brs »

Selam,

Web sitemde bulunan "bagla.xml" deki metinleri ListView'e listelemede aşağıdaki kodlamada, resimdeki hata oluşuyor nedeni nereden kaynaklanıyor olabilir?

Kod: Tümünü seç

procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
  try
    if IdIPWatch1.ForceCheck = True then
    begin
      with XMLDocument1 do
      begin
        ListView1.Items.Clear;
        LoadFromFile('http://www.xxxx.xxx/xyz/bagla.xml');
        Active := True;
        while Not Eof do
        begin
          with ListView1.Items.Add do
          begin
            Caption := IntToStr(ListView1.Items.Count);
            SubItems.Add(DocumentElement.ChildNodes['pass'].Text);
          end;
          Next;
        end;
      end;
    end;
  except
  end;
  XMLDocument1.Active := False;
end;

Resim
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: web xml den ListView'e veri çekme

Mesaj gönderen mrmarman »

Gözüme takılan şurası oldu.

Kod: Tümünü seç

LoadFromFile('http://www.xxxx.xxx/xyz/bagla.xml');
Bu XML dosyasını önce bilgisayar kopyalayıp yerelden aynı işlemi bir dener misin ?

Kod: Tümünü seç

LoadFromFile('d:\bagla.xml');
gibisinden...

Önce dosyanın adının ve yolunun doğruluğunu ve/veya sağ-sağlim ulaştığını bir anlayalım. Ondan dolayı olmadığını bir test edelim.
Resim
Resim ....Resim
Kullanıcı avatarı
brs
Üye
Mesajlar: 626
Kayıt: 04 Eki 2012 03:52

Re: web xml den ListView'e veri çekme

Mesaj gönderen brs »

mrmarman yazdı:Gözüme takılan şurası oldu.

Kod: Tümünü seç

LoadFromFile('http://www.xxxx.xxx/xyz/bagla.xml');
Bu XML dosyasını önce bilgisayar kopyalayıp yerelden aynı işlemi bir dener misin ?

Kod: Tümünü seç

LoadFromFile('d:\bagla.xml');
gibisinden...

Önce dosyanın adının ve yolunun doğruluğunu ve/veya sağ-sağlim ulaştığını bir anlayalım. Ondan dolayı olmadığını bir test edelim.

Hocam normal şartlarda edit içine almak istediğimde sorun yok ama ListView almaya çalıştığımda hata veriyor...
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: web xml den ListView'e veri çekme

Mesaj gönderen mrmarman »

Şimdi gördüm ve düzeltelim.

XMLDocument için bir veritabanı gibi NOT EOF yerine benzer bir döngü kurup NIL olup olmama durumunu sorgulamasınız.

Kod örneği şöyle.

Kod: Tümünü seç

Var
  XMLNode     : IXMLNode;
begin
  try
    if IdIPWatch1.ForceCheck = True then
    begin
      with XMLDocument1 do
      begin
        ListView1.Items.Clear;
        LoadFromFile('http://www.xxxx.xxx/xyz/bagla.xml');
        Active  := True;
        XMLNode := XMLDocument1.DocumentElement.ChildNodes.FindNode('icerik');
        while XMLNode <> Nil do
        begin
          with ListView1.Items.Add do
          begin
            Caption := IntToStr(ListView1.Items.Count);
            SubItems.Add( XMLNode.ChildNodes['pass'].Text );
          end;
          XMLNode := XMLNode.NextSibling;
        end;
      end;
    end;
  except
  end;
  XMLDocument1.Active := False;
end;
Merak edenler için bu örneğe yönelik XML bloğu da şöyle..

Kod: Tümünü seç

<?xml version="1.0"?>
<PAROLALAR>
	<baslik>ARMAN_XML</baslik>
	<icerik>
		<bilgisayar>Bilg-01</bilgisayar>
		<pass>parola01</pass>
	</icerik>
	<icerik>
		<bilgisayar>Bilg-02</bilgisayar>
		<pass>parola02</pass>
	</icerik>
</PAROLALAR>
Resim
Resim ....Resim
Kullanıcı avatarı
brs
Üye
Mesajlar: 626
Kayıt: 04 Eki 2012 03:52

Re: web xml den ListView'e veri çekme

Mesaj gönderen brs »

Teşekkür ederim üstad...
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...
Kullanıcı avatarı
hido
Üye
Mesajlar: 268
Kayıt: 29 Mar 2014 04:32

Re: web xml den ListView'e veri çekme

Mesaj gönderen hido »

mrmarman yazdı:Şimdi gördüm ve düzeltelim.

Kod: Tümünü seç

<?xml version="1.0"?>
<PAROLALAR>
	<baslik>ARMAN_XML</baslik>
	<icerik>
	       <image>http://www.deneme.org/dosyalar/banner1.jpg</image>
		<bilgisayar>Bilg-01</bilgisayar>
		<pass>parola01</pass>
	</icerik>
	<icerik>
	       <image>http://www.deneme.org/dosyalar/banner2.jpg</image>
		<bilgisayar>Bilg-02</bilgisayar>
		<pass>parola02</pass>
	</icerik>
</PAROLALAR>

Hocam benimde küçük bir sorum olacakt müsadenizle :D xml resim adresini göstererek bu resmi ListView de CheckBoxsın yanında nasıl göstere bilirim...
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: web xml den ListView'e veri çekme

Mesaj gönderen mrmarman »

Bir örnek ile açarmısın? xml resim derken misin?
1. Nasıl tutuluyor base64 olarak mı?
2. Yoksa sadece link okuyup bunu download mı edilecek?
3. Resimler sende hazır da xml'deki veriye göre mi değişecek?
Resim
Resim ....Resim
Kullanıcı avatarı
hido
Üye
Mesajlar: 268
Kayıt: 29 Mar 2014 04:32

Re: web xml den ListView'e veri çekme

Mesaj gönderen hido »

mrmarman yazdı:Bir örnek ile açarmısın? xml resim derken misin?
1. Nasıl tutuluyor base64 olarak mı?
2. Yoksa sadece link okuyup bunu download mı edilecek?
3. Resimler sende hazır da xml'deki veriye göre mi değişecek?


Hocam,

Örnek: "http://www.deneme.org/dosyalar/banner1.jpg" içindeki resim adresini xml de göstererek ListView de CheckBoxsın yanında gelmesini istiyorum...

Kod: Tümünü seç

<?xml version="1.0"?>
<PAROLALAR>
   <baslik>ARMAN_XML</baslik>
   <icerik>
          <image>http://www.deneme.org/dosyalar/banner1.jpg</image>
      <bilgisayar>Bilg-01</bilgisayar>
      <pass>parola01</pass>
   </icerik>
   <icerik>
          <image>http://www.deneme.org/dosyalar/banner2.jpg</image>
      <bilgisayar>Bilg-02</bilgisayar>
      <pass>parola02</pass>
   </icerik>
</PAROLALAR>

Kod: Tümünü seç

Var
  XMLNode     : IXMLNode;
begin
  try
    if IdIPWatch1.ForceCheck = True then
    begin
      with XMLDocument1 do
      begin
        ListView1.Items.Clear;
        LoadFromFile('http://www.xxxx.xxx/xyz/bagla.xml');
        Active  := True;
        XMLNode := XMLDocument1.DocumentElement.ChildNodes.FindNode('icerik');
        while XMLNode <> Nil do
        begin
          with ListView1.Items.Add do
          begin
            Caption := IntToStr(ListView1.Items.Count);
            SubItems.Add( XMLNode.ChildNodes['pass'].Text );
          end;
          XMLNode := XMLNode.NextSibling;
        end;
      end;
    end;
  except
  end;
  XMLDocument1.Active := False;
end;

Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: web xml den ListView'e veri çekme

Mesaj gönderen mrmarman »

Tamam işte, tag'ın adı image olduğuna göre

Kod: Tümünü seç

 strImageURL := XMLNode.ChildNodes['image'].Text;
gibisinden bu veriyi çekebilir, örnekleri forumda var, IdHttp ile de olur başka şekilde de download ettirip, TImage nesnesi hangisi ise ona LoadFromFile ile alabilirsiniz.
Resim
Resim ....Resim
Kullanıcı avatarı
hido
Üye
Mesajlar: 268
Kayıt: 29 Mar 2014 04:32

Re: web xml den ListView'e veri çekme

Mesaj gönderen hido »

mrmarman yazdı:Tamam işte, tag'ın adı image olduğuna göre

Kod: Tümünü seç

 strImageURL := XMLNode.ChildNodes['image'].Text;
gibisinden bu veriyi çekebilir, örnekleri forumda var, IdHttp ile de olur başka şekilde de download ettirip, TImage nesnesi hangisi ise ona LoadFromFile ile alabilirsiniz.
Hocam delphitürkiye formu ve nette bir çok forma baktım, sadece mageListden resim alabiliyorum urlden nasıl alabilir :N(

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
var
  LI: TListItem;
  i, j: Integer;
begin
  ListView1.ViewStyle := vsReport;
  for i := 0 to 5 do
  begin
    LI := ListView1.Items.Add;
    ListView1.SmallImages := ImageList1;
  end;
end;
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: web xml den ListView'e veri çekme

Mesaj gönderen mrmarman »

yeterince bakmamışız. Yakın zamanda bu sorduğunun benzerini proje ile örneklemiştim.

bkz. bu link

Kodun şu kısmı sana uygun olan kısmı

Kod: Tümünü seç

    strCacheDosya := strCacheDizin + '\' + StringReplace( strLogo, 'resimler/kucuk/', '', [] );

    JPG := TJPEGImage.Create;
    if NOT FileExists(strCacheDosya) then
    begin
      MS  := TMemoryStream.Create;
      With TIdHttp.Create(nil) do
      begin
        Get( strUrl + strLogo, MS );
        Free;
      end;
      MS.SaveToFile( strCacheDizin + '\' + StringReplace( strLogo, 'resimler/kucuk/', '', [] ) );
      MS.Seek(0,soFromBeginning);
        JPG.LoadFromStream(MS);
      MS.Free;
    end else
    begin
      JPG.LoadFromFile( strCacheDosya );
    end;

    Bitmap := TBitmap.Create;
      Bitmap.Assign( JPG );
      ImageList1.Width  := Bitmap.Width;
      ImageList1.Height := Bitmap.Height;
      cTrans := clNone;
      Imagelist1.Addmasked(Bitmap, cTrans);
    Bitmap.Free;
    JPG.Free;
Resim
Resim ....Resim
Kullanıcı avatarı
brs
Üye
Mesajlar: 626
Kayıt: 04 Eki 2012 03:52

Re: web xml den ListView'e veri çekme

Mesaj gönderen brs »

mrmarman yazdı:
bkz. bu link

Üstad bu vermiş olduğunuz linki bende xml deki resim yolunu alarak ve bu resimleri listviewde gösterebilmek için kendime göre düzenlemek
istediğimde anlayamadığım sorunlarla karşılaştım...

kendi server attığımda veya calıtvde de çalıştırmak istediğimde aynı durum yaşanıyor...


1. program çalışıyor tam verileri xmlden verileri çekerken bu noktada hata veriyor...

strKanal := XMLNode.ChildNodes['title'].Text;
strKanalURL := XMLNode.ChildNodes['link' ].Text;
strLogo := XMLNode.ChildNodes['logo' ].Text;
trKanalYayinURL := XMLNode.ChildNodes['yayin' ].Text;

Resim


2. uses e jpg eklediğimde avas virus uyarısı veriyor...

Not: xe7 kullanıyorum...
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: web xml den ListView'e veri çekme

Mesaj gönderen mrmarman »

xml dosyası ceya resim dosyası yollarını kontroletmelisin hocam, açık şekilde linklerden birisi yok diyor.
Resim
Resim ....Resim
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: web xml den ListView'e veri çekme

Mesaj gönderen mrmarman »

ha bu verdiğim linki debug mode da çalıştırıyorsan devam et de. zaten try except içindeydi. Bazı linkler xml'de belirtilen yerde yok. EXE çalıştırırsan bu hatayı almazsın.

Ayrıca virüs konusunda da Avastın sezgisel tarama özelliğini kapat.
Resim
Resim ....Resim
Cevapla