İnternetten Veri Alma
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
-
- Üye
- Mesajlar: 6
- Kayıt: 03 Haz 2004 05:54
- Konum: Kayseri
- İletişim:
İnternetten Veri Alma
Slm arkadaşlar. İnternetten veri alma ile ilgili problem. Merkez bankası döviz kurlarından veri alma yı bilen varsa yardımcı olursa sevinirim.....
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
Programlama M.Bankası Döviz Kurlarını Delphi'ye almak
viewtopic.php?p=4119#4119
aramak lazım

Selamlar...
- Internetten HTML olarak indirmek için adresi biliyorsunuz... Ben hatırlatayım...
- 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...
// ve Sonucumuz şöyle.... Böler böler kullanırsınız...
// Döviz Cinsi, Döviz Alış, Döviz Satış, Efektif Alış, Efektif Satış
- 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...
- 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
- 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;

// 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
- Çalışmalarınızda başarılar...
- pentiumkivanc
- Üye
- Mesajlar: 350
- Kayıt: 19 Şub 2004 10:24
- İletişim:
Sizde kodlarınızı değiştireceksiniz 
Kolay Gelsin...

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.
@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.
- 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.
- 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ış...

- 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.

- 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.

- 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ış...


- pentiumkivanc
- Üye
- Mesajlar: 350
- Kayıt: 19 Şub 2004 10:24
- İletişim:
@pentiumkivanc
- Burada bir sayfanın parse ediliş işlemine ne kadar güvenilebileceğini tartışmıyoruz...
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...
Daha profesyonelce geliyorsa bu da sizin tercihinizdir...
- 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...
- Burada bir sayfanın parse ediliş işlemine ne kadar güvenilebileceğini tartışmıyoruz...


- 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...

- 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...@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..
- 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...
- pentiumkivanc
- Üye
- Mesajlar: 350
- Kayıt: 19 Şub 2004 10:24
- İletişim:
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.
@pentiumkivanc
- 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...

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

