IdHttp

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
kbrakacmaz1
Üye
Mesajlar: 7
Kayıt: 10 Tem 2019 02:18

IdHttp

Mesaj gönderen kbrakacmaz1 »

Merhaba,

Xml üzerinden kur değerlerini çekmeye çalışıyorum ancak yapamıyorum. Bunun yanında bir de project1.exe raised exception class EReaderror with message property contentrangeınstancelength does not exits hatası veriyor bilgisi olan yardımcı olabilir mi :roll:
3ddark
Üye
Mesajlar: 89
Kayıt: 14 Eyl 2010 10:55
Konum: İstanbul

Re: IdHttp

Mesaj gönderen 3ddark »

Eğer Merkez bankasındaki günlük kurları okumaya çalışıyorsanız. Size kendi kullandığım XML den döviz kuru okuyan kod.

Uses eklemeleri

Kod: Tümünü seç

xmldom, XMLIntf, msxmldom, XMLDoc 

Kod: Tümünü seç

procedure TFormDeneme.ButtonGunlukKurBilgisiniTCMBOkuClick(Sender: TObject);
var
  XMLNode : IXMLNode;
  XMLDocumentKur: TXMLDocument;
begin
  XMLDocumentKur := TXMLDocument.Create(Self);
  try
    try
      XMLDocumentKur.Active:=false;
      XMLDocumentKur.FileName:='http://www.tcmb.gov.tr/kurlar/today.xml';
      XMLDocumentKur.Active:=true;
    except
      raise Exception.Create('İnternet bağlantınızı kontrol edin. TCMB günlük kur bilgisine ulaşılamadı!');
    end;
    
    //Bülten numarası buradan alabilirsiniz.
    //XMLDocumentKur.DocumentElement.Attributes['Bulten_No'];

    //Kur tarihi
    //XMLDocumentKur.DocumentElement.Attributes['Tarih'];

    XMLNode := XMLDocumentKur.DocumentElement.ChildNodes.FindNode('Currency');
    repeat
      if XMLNode.HasAttribute('CurrencyCode') then
      begin
        if (XMLNode.Attributes['CurrencyCode'] = 'USD') then //Dolar için kur oku
        begin
          if XMLNode.ChildNodes.Nodes['ForexSelling'].Text = '' then
            raise Exception.Create('Merkez bankası Satış kur bilgisi hatalı. Gelen bilgi içeriği "' + XMLNode.ChildNodes.Nodes['ForexSelling'].Text + '"');

          //Kur bilgisi buradan alınacak
          //XMLNode.ChildNodes.Nodes['ForexSelling'].Text;
        end
        else if (XMLNode.Attributes['CurrencyCode'] = 'EUR') then //Euro için kur oku
        begin
          if XMLNode.ChildNodes.Nodes['ForexSelling'].Text = '' then
            raise Exception.Create('Merkez bankası Satış kur bilgisi hatalı. Gelen bilgi içeriği "' + XMLNode.ChildNodes.Nodes['ForexSelling'].Text + '"');
          
          //Kur bilgisi buradan alınacak
          //XMLNode.ChildNodes.Nodes['ForexSelling'].Text;
        end;
      end;
      XMLNode := XMLNode.NextSibling;
    until XMLNode = nil;
    
  finally
    XMLDocumentKur.Free;
  end;
end;
İstediğiniz gibi düzenlersiniz. Ben kendi ihtiyacımı karşılamak adına böyle kullanmıştım.
PostgreSQL - Delphi - Linux :!:
kbrakacmaz1
Üye
Mesajlar: 7
Kayıt: 10 Tem 2019 02:18

Re: IdHttp

Mesaj gönderen kbrakacmaz1 »

3ddark yazdı: 01 Ağu 2019 03:07 Eğer Merkez bankasındaki günlük kurları okumaya çalışıyorsanız. Size kendi kullandığım XML den döviz kuru okuyan kod.

Uses eklemeleri

Kod: Tümünü seç

xmldom, XMLIntf, msxmldom, XMLDoc 

Kod: Tümünü seç

procedure TFormDeneme.ButtonGunlukKurBilgisiniTCMBOkuClick(Sender: TObject);
var
  XMLNode : IXMLNode;
  XMLDocumentKur: TXMLDocument;
begin
  XMLDocumentKur := TXMLDocument.Create(Self);
  try
    try
      XMLDocumentKur.Active:=false;
      XMLDocumentKur.FileName:='http://www.tcmb.gov.tr/kurlar/today.xml';
      XMLDocumentKur.Active:=true;
    except
      raise Exception.Create('İnternet bağlantınızı kontrol edin. TCMB günlük kur bilgisine ulaşılamadı!');
    end;
    
    //Bülten numarası buradan alabilirsiniz.
    //XMLDocumentKur.DocumentElement.Attributes['Bulten_No'];

    //Kur tarihi
    //XMLDocumentKur.DocumentElement.Attributes['Tarih'];

    XMLNode := XMLDocumentKur.DocumentElement.ChildNodes.FindNode('Currency');
    repeat
      if XMLNode.HasAttribute('CurrencyCode') then
      begin
        if (XMLNode.Attributes['CurrencyCode'] = 'USD') then //Dolar için kur oku
        begin
          if XMLNode.ChildNodes.Nodes['ForexSelling'].Text = '' then
            raise Exception.Create('Merkez bankası Satış kur bilgisi hatalı. Gelen bilgi içeriği "' + XMLNode.ChildNodes.Nodes['ForexSelling'].Text + '"');

          //Kur bilgisi buradan alınacak
          //XMLNode.ChildNodes.Nodes['ForexSelling'].Text;
        end
        else if (XMLNode.Attributes['CurrencyCode'] = 'EUR') then //Euro için kur oku
        begin
          if XMLNode.ChildNodes.Nodes['ForexSelling'].Text = '' then
            raise Exception.Create('Merkez bankası Satış kur bilgisi hatalı. Gelen bilgi içeriği "' + XMLNode.ChildNodes.Nodes['ForexSelling'].Text + '"');
          
          //Kur bilgisi buradan alınacak
          //XMLNode.ChildNodes.Nodes['ForexSelling'].Text;
        end;
      end;
      XMLNode := XMLNode.NextSibling;
    until XMLNode = nil;
    
  finally
    XMLDocumentKur.Free;
  end;
end;
İstediğiniz gibi düzenlersiniz. Ben kendi ihtiyacımı karşılamak adına böyle kullanmıştım.


Çok teşekkür ediyorum, sağ olun :)
Cevapla