İnternetten Veri Alma

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Kilitli
perfectlover
Üye
Mesajlar: 6
Kayıt: 03 Haz 2004 05:54
Konum: Kayseri
İletişim:

İnternetten Veri Alma

Mesaj gönderen perfectlover »

Slm arkadaşlar. İnternetten veri alma ile ilgili problem. Merkez bankası döviz kurlarından veri alma yı bilen varsa yardımcı olursa sevinirim.....
Kullanıcı avatarı
mege
Admin
Mesajlar: 2360
Kayıt: 05 Şub 2004 04:32
Konum: Beşiktaş
İletişim:

Mesaj gönderen mege »

arama : döviz merkez bankası (seç:Bütün terimler için ara)

Programlama M.Bankası Döviz Kurlarını Delphi'ye almak
viewtopic.php?p=4119#4119

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

Mesaj gönderen mrmarman »

Selamlar...

- Internetten HTML olarak indirmek için adresi biliyorsunuz... Ben hatırlatayım...

Kod: Tümünü seç

http://www.tcmb.gov.tr/kurlar/today.html
- Bu adresten günlük döviz kurlarını bilgisayarınıza TEXT olarak indirmeyi Indy bileşen paletinden IdHttp veya Fastnet bilşene paletinden NMHttp ile yapabilirsiniz...

- Gelen TEXT içerisinde 1. satırdan başlayarak USD başlığını görene kadar Repeat/Until döngüsü ile satırları atlayıp, kurların olduğu başlığa konumlanın...

- Artık her satırda bir kur bilgisi bulacaksınız... Bu satırların bittiğini ÇAPRAZ KURLAR başlığını gördüğümüzde anlıyoruz...

- Şimdi Uygulamayı Görelim...

Kod: Tümünü seç

procedure TForm1.Button4Click(Sender: TObject);
Var
  Dosya,
  Url       : String;
begin
  Dosya := ExtractFilePath(Application.ExeName)+'Gelen.TXT';
  Url   := 'http://www.tcmb.gov.tr/kurlar/today.html';
  DosyaIndir(Url, Dosya); // Delphi 5.0 Kullanıyorum
  // NmHttp ile indirme işini yapan fonksiyonumdur... 
  // Siz kendinize uygun bir bileşen kullanabilirsiniz...
  Ayristir(Dosya, ListBox1.Items); // Aşağıdaki Procedure...
  // Sonuçları; formunuza koyacağınız ListBox'a döndürür
  DeleteFile(Dosya);
end;

Kod: Tümünü seç

Procedure TForm1.Ayristir(Dosya:String; Liste:TStrings);
Var
  Sayac      : Integer;
  Gelenler,
  Ayrisanlar : TStringList;
  Gelen      : String;
begin
  Gelenler   := TStringList.Create;
  Ayrisanlar := TStringList.Create;

  Gelenler.LoadFromFile(Dosya);
  Sayac := -1;
  Repeat
    Inc(Sayac);
    Gelen := Gelenler[Sayac];
  Until Pos('USD', Gelen) > 0; // USB Başlığı start noktamız

  Repeat
    While Pos('  ', Gelen) > 0 do
    begin // Çift boşlukları silip yerine | karakteri koyucaz...
          // Bu karakter ayraç olarak işimize yarayacak!
      Insert('|', Gelen, Pos('  ', Gelen));
      Delete(Gelen, Pos('  ', Gelen), 1);
    end;
    // Bitişik ayraçları teke indiriyoruz...
    While Pos('||', Gelen) > 0 do Delete(Gelen, Pos('||', Gelen), 1);

    // KelimeBol fonksiyonu yardımı ile her değeri StringList'e ayrıştırıyoruz...
    KelimeBol(Gelen, '|', Ayrisanlar);
    Case Ayrisanlar.Count of // Döviz satışı olanlar 6 elemanlı
                             // Döviz satışı olmayanlar 4 elemanlı olduğundan
                             // iki şartlı uygulama yapıcaz...
    // Listeye ekleniyor... Bu liste ana formumuzdaki bir ListBox olabilir...
    // Bu örnekte de öyle...
    4: Liste.Add(Format('%3s|%10s|%10s|%10s|%10s', [Ayrisanlar[0], '', '', Ayrisanlar[2], Ayrisanlar[3]]) );
    6: Liste.Add(Format('%3s|%10s|%10s|%10s|%10s', [Ayrisanlar[0], Ayrisanlar[2], Ayrisanlar[3], Ayrisanlar[4], Ayrisanlar[5]]) );
    end; // Case
    Inc(Sayac);
    Gelen := Gelenler[Sayac];
  Until (Pos('ÇAPRAZ KURLAR', Gelen) > 0) or (Sayac >= Gelenler.Count); 
// ÇAPRAZ KURLAR!ı görünce durucaz
// Aksilik olursa da liste sonunda duracak
  Gelenler.Free;
  Ayrisanlar.Free;
end;

Kod: Tümünü seç

Procedure TForm1.KelimeBol(Satir:String; oAyrac:Char; Sonuc:TStringList);
Var
  Dummy : String;
begin
  Sonuc.Clear;
  Dummy := Satir;
  If Pos(oAyrac, Satir) > 0 then
  begin
    While Pos(oAyrac, Satir) > 0 do
    begin
      Sonuc.Add( Trim( Copy( Satir, 1, Pos(oAyrac, Satir)-1) ) );
      Delete(Satir, 1, Pos(oAyrac, Satir));
    end;
  end;
  Sonuc.Add( Trim(Satir) );
end;
// ve Sonucumuz şöyle.... Böler böler kullanırsınız... :wink:
// Döviz Cinsi, Döviz Alış, Döviz Satış, Efektif Alış, Efektif Satış

Kod: Tümünü seç

USD| 1,485,155| 1,492,318| 1,484,115| 1,494,556
AUD| 1,026,269| 1,032,983| 1,021,548| 1,039,181
DKK|   239,695|   240,875|   239,527|   241,429
GBP| 2,705,607| 2,719,750| 2,703,713| 2,723,830
CHF| 1,179,702| 1,187,301| 1,177,932| 1,189,082
SEK|   193,429|   195,442|   193,294|   195,892
JPY|    13,458|    13,547|    13,408|    13,598
CAD| 1,088,114| 1,093,033| 1,084,088| 1,097,187
KWD| 4,995,143| 5,060,935| 4,920,216| 5,136,849
NOK|   214,540|   215,987|   214,390|   216,484
SAR|   397,204|   397,920|   394,225|   400,904
EUR| 1,782,335| 1,790,931| 1,781,087| 1,793,617
BGL|          |          |   855,975|   965,248
IRR|          |          |       138|       207
ROL|          |          |        41|        46
SYP|          |          |    23,041|    34,561
JOD|          |          | 1,967,656| 2,218,846
ILS|          |          |   319,676|   336,069
- Burada TCMB Döviz kuru indirmekten çok, dilim/klavyem yettiğince HTML sayfanın nasıl parse edileceği hakkında kısa bilgi vermek istedim...

- Çalışmalarınızda başarılar...
Resim
Resim ....Resim
Kullanıcı avatarı
pentiumkivanc
Üye
Mesajlar: 350
Kayıt: 19 Şub 2004 10:24
İletişim:

Mesaj gönderen pentiumkivanc »

Peki sayfanın yapısı değişip te çapraz kurları önce efektifleri sonra verirlerse ne olacak? Olmaz demeyin yarının nasıl olacağını bilemeyiz.
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

Sizde kodlarınızı değiştireceksiniz :P

Kolay Gelsin...

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

@pentiumkivanc Merhabalar...

- Kod geliştirme yeteneğiniz gelişince, hangi satırda ne bulunacağını bildiren bir script tasarlar, bunu bir web sitesinde yayınlarsınız. :o

- Parse işleminden önce programınızın o siteye gidip script'i okutur, bu script içeriğini yine programınızın değerlendirmesini sağlar, daha dinamik bir yapı oluşturabilirsiniz. :wink:

- Dilerseniz bunu kullanıcılarınıza yapma ve isim yayınlama şansı da vererek, bu sayede insanları onore edici bir paye sahibi yapar, takip işini onlara bırakısınız.. Daha çok şey sayılabilir, tamamen yaratıcılığınıza kalmış... :lol: :lol:
Resim
Resim ....Resim
Kullanıcı avatarı
pentiumkivanc
Üye
Mesajlar: 350
Kayıt: 19 Şub 2004 10:24
İletişim:

Mesaj gönderen pentiumkivanc »

Ama html parse olayı tamamiyle kaynak siteye bağlı kalıyor. Yani sizce bu html parse ne kadar profesyönel bir çözüm? Ben kodlarımı sürekli değiştirmek istemiyorum da.
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7603
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

bu sayfanın xml sürümü de vardı. Ondan almak daha iyi olabilir.

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

Mesaj gönderen mrmarman »

@pentiumkivanc

- Burada bir sayfanın parse ediliş işlemine ne kadar güvenilebileceğini tartışmıyoruz... :idea: Profesyonellik veya amatörlükle ilgisi yok... Neden yorumlarınızı bu yöne kaydırıyorsunuz... :?: Varsa alternatif bir çözümünüz onu bildirin ki herkes faydalansın...

- T.C. Merkez bankasının internet sayfa procedurlerini hangi sıklıkla değiştirdiğine dair kaygınız varsa ve profesyonel bir çözüm sunmak istiyorsanız, telefon açıp veya mail atıp kendilerine de sorabilirsiniz...

- Kaygınızı sona erdiremedilerse ve kullanıcılarınıza mahçup olmak istemiyorsanız bu tip bir hizmeti vermeyin olsun bitsin... :lol: Daha profesyonelce geliyorsa bu da sizin tercihinizdir...
@mrmcop yazdı:- Burada TCMB Döviz kuru indirmekten çok, dilim/klavyem yettiğince HTML sayfanın nasıl parse edileceği hakkında kısa bilgi vermek istedim..
- Ben burada "gidin verilerinizi TC Merkez bankasının sitesinden alın" demiyorum... Soruları ve verilen cevapları tekrar incelerseniz; sorulan bir soru var ona çözüm üretiyorum...

- Ayrıca lütfen yorum yaparken atıfta bulunduğunuz kim ise onun adını veya nick'ini önceden bildirin ki, soru/cevap ilişkisi @mrmcop ve @pentiumkivanc arasında loop'a girden bu başlık altında en azından ben üzerime alınmayayım...

- Profesyonel çalışma hayatında başarılar...
Resim
Resim ....Resim
Kullanıcı avatarı
pentiumkivanc
Üye
Mesajlar: 350
Kayıt: 19 Şub 2004 10:24
İletişim:

Mesaj gönderen pentiumkivanc »

mrmcop eğer bişey söyleyeceksem lafı bir taraflara kaydırmam olduğu gibi söylerim. "sen profesyönel değilsin" diye. Bence böyle anlamadan çıkışmak yerine sorduğum şeyi anlamaya çalışmalıydın. Ben bu metodun sadece iş görür olmasını değil aynı zamanda ileriye dönük olmasını istiyorum ve eğer bilen varsa onu açılasın istiyorum. Uzatmanın alemi yok.
Kullanıcı avatarı
webaytek
Üye
Mesajlar: 377
Kayıt: 23 Haz 2004 10:58

Mesaj gönderen webaytek »

dostum ben böyle bi kod olduğunu zannetmiyorum - bence de uzatmanın anlamı yok!!! :wink:
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

@pentiumkivanc
@pentiumkivanc yazdı:... Yani sizce bu html parse ne kadar profesyönel bir çözüm?
- Yazdığın mesajı hatırla, burada herhangi bir şeyi uzatmış değilim... Bunu önemle hatırlatırım... :!:

- Ben de uzun vadeli düşünmek için şartların nasıl sağlanacağını açıkladım zaten... Internetten veri almanın (veri alacağın kurum veya kuruluşla karşılıklı anlaşma yapılmadığı taktirde) garanti yolu yok. Veri sunan merci/site programcı olan senin kontrolün dışında ise bunu kendi kontrolüne almak gerekliliğini, forumda daha önce defalarca şahsen sundum zaten. Belki sen görmemiş olabilirsin ama görenler hatırlar... (bunlardan birisi bkz.)

- Senin de biliyor olabileceğini değerlendirdiğim bu konuyu neden bu kadar detaylandırdığını asıl ben anlamış değilim... :!: :?:
Resim
Resim ....Resim
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7603
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

uzatmayalım arkadaşlar.

Muharrem bey çok güzel bir çözüm önermiş, isteyen kullansın, isteyen geliştirsin, isteyen de kullanmasın.

Teşekkürler Muharrem bey.

Kolay gelsin.
Kilitli