M.Bankası Döviz Kurlarını Delphi'ye almak

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Kullanıcı avatarı
ademiz
Üye
Mesajlar: 151
Kayıt: 30 Tem 2003 02:41
Konum: İstanbul
İletişim:

M.Bankası Döviz Kurlarını Delphi'ye almak

Mesaj gönderen ademiz »

Arkadaşlar

Hazırladığım programda hesaplama işleri için günlük döviz kurlarını bir DBGrid içerisine çekmem gerekiyor.Bunu yaparken http://www.tcmb.gov.tr/kurlar/today.xml adresindeki xml dosyasını DBGride çekmek istiyorum.

Bunu Delphi ile nasıl yapabilirim

Yardımlarınız için şimdiden teşekkür ediyorum
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7601
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

Ben html için yapmıştım. XML zaten daha test aşamasındaymış, bunu kullanman daha iyi olur.

viewtopic.php?t=328

Kolay gelsin.
Kullanıcı avatarı
ademiz
Üye
Mesajlar: 151
Kayıt: 30 Tem 2003 02:41
Konum: İstanbul
İletişim:

Mesaj gönderen ademiz »

Mustafa Hocam

Delphi ipuçlarından fonksiyonu aldım kodunuda formuma ekledim.Fakat for i:= 0 to Tree_Doviz.Count -1 do satırında [Error] doviz.pas(115): Undeclared identifier: 'Tree_Doviz' hatası veriyor.Bu Tree_Doviz yukarıda bir değiken olarakmı tanımlanması gerekiyor yoksa......
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7601
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

Merhaba,

o benim kullandığım bileşenin adı. Sen stringlist gibi bir bileşene veya değişkenlere alabilirsin değerleri.

Bir de ben orda sadece alış değerini ve belli dövizleri almıştım. Sen ihtiyacına göre biraz düzenlersin.

Kolay gelsin.
Kullanıcı avatarı
ademiz
Üye
Mesajlar: 151
Kayıt: 30 Tem 2003 02:41
Konum: İstanbul
İletişim:

Mesaj gönderen ademiz »

Mustafa hocam

Ben bu merkez bankası kodunun içinde kayboldum.

Yapmak istediğim 5 kolonlu bir DBGrid içerisine ilk 2 kolon datada sabit olmak şartıyla sadece Doviz Alış - Doviz Satış - Efektif Aliş - Efektif Satış hücrelerine 18 adet doviz kurlarını çekmek.

Sabit olan kolonlarda Doviz kodu 'USD' ve Doviz Adı 'Amerikan Doları' şeklinde kayıt mevcut.

Delphide daha yeni sayılırız!

Yardımcı olursan sevinirim

Saygılar
kuranokurum
Üye
Mesajlar: 23
Kayıt: 26 Eki 2003 04:19

Mesaj gönderen kuranokurum »

Niye o kadar kasıyosunki.....


XML dosyasını Parse eden dünya kadar bileşen var. http://www.torry.net ordan bir tane (Stefanın parserı iyidir) XML parser indir. Ve bahsettiğin XML dosyasından tüm değerleri oku....

Ya da Adminini dediği gibi tek tek oku ama html bilgisi gerek....

Abdullah
Kullanıcı avatarı
ademiz
Üye
Mesajlar: 151
Kayıt: 30 Tem 2003 02:41
Konum: İstanbul
İletişim:

Mesaj gönderen ademiz »

Ne kadar ilginç insanlarsınız..

Bir şey biliyorsanız ve paylaşmak istiyorsanız adam gibi paylaşın.

Yok eğer paylaşmayacaksanız cevap yazmayın.

Bu Delphi yi insanlar anasının karnında öğrenmedi.

Şu anda tek başıma bir distribütör firmanın Araç Bakım projesini bitirmek üzereyim.Yanii bir yerde takıldık diye hemde yeni olduğumuzu yazıyoruz ve siz agresim bir şekilde

Kasıyorsun diye cevap veriyorsun!

Bravo diyorum ve Saygılar sunuyorum
NightFlight
Üye
Mesajlar: 43
Kayıt: 19 Haz 2003 12:26

Mesaj gönderen NightFlight »

BEN BUNU c# TA YAPMISTIM MANTIK OLARAK BURDA KULLANDIGIM BILAESENIN BENZERI D7 OLMASI LAZIM BEN BURDA DATA TABLE KULLANDIM SEN ONA KARSILIK DELPHIDE DATASET KULLANABILIRSIN
ISALLAH SANA BAZI KONULARDA YARDIMCI OLUR BBU ARADA O XML LINKI TEST A BELLI BI SATIRA KADAR YANI 19 SATIR OKUMAN YETERLI HATTA BEN BURDA SADECE GIDIP DOLAR KURUNU ALAN PROGRAM YAZDIM KOLAY GELSIN BU KODUDA BEN BIR ARKADASTAN OGRENMISTIM

{

DataTable dt = new DataTable();
// DataTable nesnemizi yaratıyoruz
DataRow dr;
// DataTable ın satırlarını tanımlıyoruz.
dt.Columns.Add(new DataColumn("Adı", typeof(string)));
dt.Columns.Add(new DataColumn("Kod", typeof(string)));
dt.Columns.Add(new DataColumn("Döviz alış", typeof(string)));
dt.Columns.Add(new DataColumn("Döviz satış", typeof(string)));
dt.Columns.Add(new DataColumn("Efektif alış", typeof(string)));
dt.Columns.Add(new DataColumn("Efektif Satış", typeof(string)));
// DataTableımıza 6 sütün ekliyoruz ve değişken tiplerini tanımlıyoruz.


XmlTextReader rdr = new XmlTextReader("http://www.tcmb.gov.tr/kurlar/today.xml");
// XmlTextReader nesnesini yaratıyoruz ve parametre olarak xml dokümanın urlsini veriyoruz
// XmlTextReader urlsi belirtilen xml dokümanlarına hızlı ve forward-only giriş imkanı sağlar.

XmlDocument myxml = new XmlDocument();
// XmlDocument nesnesini yaratıyoruz.
myxml.Load(rdr);
// Load metodu ile xml yüklüyoruz


XmlNode tarih = myxml.SelectSingleNode("/Tarih_Date/@Tarih");
XmlNodeList mylist = myxml.SelectNodes("/Tarih_Date/Currency");
XmlNodeList adi = myxml.SelectNodes("/Tarih_Date/Currency/Isim");
XmlNodeList kod = myxml.SelectNodes("/Tarih_Date/Currency/@Kod");
XmlNodeList doviz_alis = myxml.SelectNodes("/Tarih_Date/Currency/ForexBuying");
XmlNodeList doviz_satis = myxml.SelectNodes("/Tarih_Date/Currency/ForexSelling");
XmlNodeList efektif_alis = myxml.SelectNodes("/Tarih_Date/Currency/BanknoteBuying");
XmlNodeList efektif_satis = myxml.SelectNodes("/Tarih_Date/Currency/BanknoteSelling");

// XmlNodeList cinsinden her bir nodu, SelectSingleNode metoduna nodların xpathini parametre olarak
// göndererek tanımlıyoruz.


dataGrid1.CaptionText=tarih.InnerText.ToString()+" tarihli merkez bankası kur bilgileri";
// datagridimin captionu ayarlıyoruz.

int x = 19;

/* Burada xmlde bahsettiğim - bence- mantık hatasından dolayı x gibi bir değişken tanımladım.
bu x =19 DataTable a sadece 19 satır eklenmesini sağlıyor. çünkü xml dökümanında 19. node dan sonra
güncel kur bilgileri değil Euro dönüşüm kurları var ve bu node dan sonra yapı ilk 18 node ile tutmuyor
Bence ayrı bir xml dökümanda tutulması gerekirdi.
*/


for (int i = 0 ; i < x; i++)

{
string a,b;
b="USD";


a=kod.Item(i).InnerText.ToString();
//MessageBox.Show(a);

if (b==a)
{
dr = dt.NewRow();
dr[0] = adi.Item(i).InnerText.ToString(); // i. adi nodunun içeriği
// Adı isimli DataColumn un satırlarını /Tarih_Date/Currency/Isim node ları ile dolduruyoruz.
dr[1] = kod.Item(i).InnerText.ToString();
// Kod satırları
dr[2] = doviz_alis.Item(i).InnerText.ToString();
// Döviz Alış
dr[3] = doviz_satis.Item(i).InnerText.ToString();
// Döviz Satış
dr[4] = efektif_alis.Item(i).InnerText.ToString();
// Efektif Alış
dr[5] = efektif_satis.Item(i).InnerText.ToString();
// Efektif Satış.
dt.Rows.Add(dr);
}
return dt;
kuranokurum
Üye
Mesajlar: 23
Kayıt: 26 Eki 2003 04:19

Mesaj gönderen kuranokurum »

ademiz yazdı:Ne kadar ilginç insanlarsınız..

Bir şey biliyorsanız ve paylaşmak istiyorsanız adam gibi paylaşın.

Yok eğer paylaşmayacaksanız cevap yazmayın.

Bu Delphi yi insanlar anasının karnında öğrenmedi.

Şu anda tek başıma bir distribütör firmanın Araç Bakım projesini bitirmek üzereyim.Yanii bir yerde takıldık diye hemde yeni olduğumuzu yazıyoruz ve siz agresim bir şekilde

Kasıyorsun diye cevap veriyorsun!

Bravo diyorum ve Saygılar sunuyorum
Arkadaşım beni yanlış anladın. Ben yukarıda XML i boşver zaten testmiş http sayfasından oku denildiği için canım sıkıldı. XML bilen biri XML i kullanmanın http sayfasını okumaktan daha iyi olacağını bilirdi değil mi? ben orda getirilen öneriye biraz bozuldum. + sana kaynak gösterdim. Steafen'ın XML parserını torry den bul. O zaten parse ediyo diye. Tutup sana program yazacak değilim....
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7601
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

Merhaba,

biraz daha sakin, rahat olalım arkadaşlar. Hemen alınmaya, bozulmaya gerek yok, burda amaç birbirimize yardımcı olmak.

Birkaç noktaya değinmek istiyorum :

1. Burda verilen cevapların hiçbirisi doğru diye bir garanti yok. Bunu forum kurallarında da belirttim. Test edip kullanmanız ve yedekli çalışmanız her zaman için en doğrusu.

2. Ben arkadaşa XML'i boşver diye birşey söylemedim. En sevmediğim olaylardan biri de, söylemediğim birşeyin bana isnat edilmesi :twisted: . Ben olsam http'yi kullanırdım dedim ve yaptığım bir örneğin kodlarını ve yapma yolumu gösterdim. Zaten başka bir arkadaşta sağolsun XML'den alma yolunu göndermiş.

Ben halen test aşamaşında bir sayfadan bilgi almanın doğru olmadığını düşünüyorum ama karar sizin tabii ki de :)

ademiz, kullandığın yöntemle ilgili halen soruların varsa sorabilirsin.

Kolay gelsin.
Yasemin Congar
Üye
Mesajlar: 3
Kayıt: 08 Kas 2003 10:52
Konum: İstanbul & Washington

Mesaj gönderen Yasemin Congar »

Sağol Admin

Aşağıdaki kodla işimi gördüm

Saygılar

**********************************************

procedure TdvzForm.BitBtn1Click(Sender: TObject);
var
s,alis,satis,aranan: String;
aranand:ARRAY [1..100] OF String;
yer,i,j : Integer;
begin
ProgressBar1.Visible := true;
s:=IdHTTP1.Get('http://tcmb.gov.tr/kurlar/today.html');
DATAForm.dovizADOTable1.Last;
DATAForm.dovizADOTable1.first;
for j:=0 to DATAForm.dovizADOTable1.RecordCount-1 do
begin
aranand[j]:=DATAForm.dovizADOTable1.FieldByname('Ad').AsString;
aranan:=aranand[j];
ProgressBar1.Position :=j;
yer:=pos(aranan,s);
if yer=0 then
begin
showmessage('Kur bilgisi bulunamadı.');
exit;
end
else
begin
yer:=yer+length(aranan);
s:=copy(s,yer,length(s)-yer);
s:=trim(s);
alis:=copy(s,1,9);
DATAForm.dovizADOTable1.Edit;
DATAForm.dovizADOTable1.FieldByName('DovizAlis').AsString := alis;
s:=copy(s,10,length(s)-9);
s:=trim(s);
satis:=copy(s,1,9);
DATAForm.dovizADOTable1.FieldByName('DovizSatis').AsString := satis;
DATAForm.dovizADOTable1.Next;
end;
end;
ProgressBar1.Visible := false;
Kullanıcı avatarı
şimal
Kıdemli Üye
Mesajlar: 516
Kayıt: 10 Kas 2003 09:36
Konum: ANKARA

Mesaj gönderen şimal »

Aslında forum Delphi ile ilgili biliyorum ama NightFlight
beyin yazdiigi kod dikkatimi cekti.... Bu fonksiyondan donen dt (datatable) grid ile nasil ilişkilendirilebilir?

Kolay gelsin....
Kullanıcı avatarı
AliGüzelbey
Üye
Mesajlar: 17
Kayıt: 12 Eyl 2003 09:06

Mesaj gönderen AliGüzelbey »

Merhaba Arkadaşlar
Yasemin Congar'ın gönderdiği kodla bende döviz kurlarını almak istedim ama kodu bir türlü çalıştıramadım.

Forma IdHTTP bileşenini ekledim fakat

s:=IdHTTP1.Get('http://tcmb.gov.tr/kurlar/today.html'); satırında

(The ISA Server denies the specified Uniform Resource Locator (URL) hatasını veriyor.

internete server üzerinden ADLS 512 K ile bağlanıyorum.
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7601
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

Merhaba,

adres açılıyor bir problem yok. ISA Server'la ilgili bir problem var sanırım. Internet Explorer ile sayfayı açabiliyor musun?

Kolay gelsin.
Kullanıcı avatarı
AliGüzelbey
Üye
Mesajlar: 17
Kayıt: 12 Eyl 2003 09:06

Mesaj gönderen AliGüzelbey »

Internet Explorer ile sayfa açılıyor. ISA Serverla nasıl bir problem olabilir nasıl giderebilirim.
Cevapla