internetten döviz kurlarını indirmek

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
mertcenk3
Üye
Mesajlar: 41
Kayıt: 21 Eki 2003 02:15
Konum: istanbul
İletişim:

internetten döviz kurlarını indirmek

Mesaj gönderen mertcenk3 »

internetten döviz kurlarını indirmek istiyorum. Dolar ve Euro nun satış değerlerini indirmem, benim için kafi olacak .. ama bir türlü halledemedim..
forumdan musşimşek'in kodlarını kullandım. ama takıldığım yerler var. form1 de bir buton ve bir de Listbox var .. C de kur.html dosyası oluşuyor..
ama bu html deki bilgileri database aktaramıyorum.. yardımcı olursanız sevinirim..

Kod: Tümünü seç

function DownLoadInternetFile(Source, Dest : String): Boolean;
begin
  try
    Result := URLDownloadToFile(nil,PChar(Source),PChar(Dest),0,nil) = 0
  except
    Result := False;
  end;
end;


procedure TForm1.Button1Click(Sender: TObject);
var
  SourceString, DestinationString : string;
  DovizText : TextFile;
  satir : string;
  Doviz_Cinsi : string;
  i : Integer;
begin
  SourceString := 'http://www.tcmb.gov.tr/kurlar/today.html';
  DestinationString := 'c:\kur.html';
  try
    Screen.Cursor := crHourGlass;
    if DownLoadInternetFile(SourceString, DestinationString) then
      begin
        AssignFile(DovizText, DestinationString);
        Reset(DovizText);
        while not EOF(DovizText) do
          begin
            ReadLn(DovizText, satir);
              Doviz_Cinsi := Trim(Copy(satir, 1, 3));
                for i:= 0 to Tree_Doviz.Count -1 do
              ///if (Doviz_Cinsi = Tree_Doviz.Items[i].Values[0]) and (Copy(satir, 4, 1) <> '/') then
              begin
                satir := Trim(Copy (satir, Pos (' ', satir), Length(satir)));
                satir := Trim(Copy (satir, Pos (' ', satir), Length(satir)));
                satir := Trim(Copy (satir, Pos (' ', satir), Length(satir)));
                if (Copy(satir, 1, 1) <> '1') and
                   (Copy(satir, 1, 1) <> '2') and
                   (Copy(satir, 1, 1) <> '3') and
                   (Copy(satir, 1, 1) <> '4') and
                   (Copy(satir, 1, 1) <> '5') and
                   (Copy(satir, 1, 1) <> '6') and
                   (Copy(satir, 1, 1) <> '7') and
                   (Copy(satir, 1, 1) <> '8') and
                   (Copy(satir, 1, 1) <> '9') then
                satir := Trim(Copy (satir, Pos (' ', satir), Length(satir)));
                satir := Trim(Copy (satir, Pos (' ', satir), Length(satir)));
                satir := Trim(Copy (satir, Pos (' ', satir), Length(satir)));
                ///Tree_Doviz.Items[i].Values[2] := Trim (VirgulSil(Copy (satir, 1, Pos(' ', satir))));
                ShowMessage(satir);
              end;
          end; {while}
        CloseFile(DovizText);
        //IBTable1.Append;    //>>>  database kayıt olayını halledemedim.
        //IBTable1.FieldByName('KUR').AsString:= ?? ;
        //IBTable1.Append;
      end
    else
      MessageDlg('Dosya indirilemedi!', mtError, [mbOK], 0);
  finally
    Screen.Cursor := crDefault;
  end; {try}
end;
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
kur.html nin yapısını bilemiyorum ama normalde html dosyasını bi memo(yada aynı işi yapan başka bi obje) ye yükleyip stringleri karşılaştıracaksın (diğer bir deyimle html parse) kur bilgilerini değişkenlere atıp ordan tablona insert edeceksin.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
t-hex
Kıdemli Üye
Mesajlar: 531
Kayıt: 18 Mar 2005 02:45
Konum: İstanbul/Antalya
İletişim:

Mesaj gönderen t-hex »

html dosyasını parse etmekle uğraşacağınıza http://www.tcmb.gov.tr/kurlar/today.xml adresindeki XML dosyasından kurları almayı deneyin
Kullanıcı avatarı
mertcenk3
Üye
Mesajlar: 41
Kayıt: 21 Eki 2003 02:15
Konum: istanbul
İletişim:

Mesaj gönderen mertcenk3 »

kurları almayı xml ile yapan arkadaşlar varsa, yardımcı olurlarsa sevinirim..
hiç xml kullanmadığım için bu konuya yabancıyım..
t-hex
Kıdemli Üye
Mesajlar: 531
Kayıt: 18 Mar 2005 02:45
Konum: İstanbul/Antalya
İletişim:

Mesaj gönderen t-hex »

XML databinding ile today.xml dosyası için bir unit oluşturduktan sonrası için örnek kod:

Kod: Tümünü seç

var
  data :  IXMLTarih_DateType;
  i : integer;
begin
  data := LoadTarih_Date('http://www.tcmb.gov.tr/kurlar/today.xml');
  memo1.Lines.Add(data.Tarih);
  for i := 0 to  data.Count-1 do begin
     memo1.Lines.Add(data.Currency[i].CurrencyCode+':'+data.Currency[i].ForexBuying);
  end;
end;
Kullanıcı avatarı
lovecraft
Üye
Mesajlar: 32
Kayıt: 03 Haz 2005 11:31
Konum: Kocaeli
İletişim:

Mesaj gönderen lovecraft »

IXMLTarih_DateType

bu component delphi 7 de bulunurmu ?
Samet Poyraz
http://www.turkiyeburda.net
Poyraz Yazılım
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

- IXMLTarih_DateType bir coponent değildir.
@t-hex yazdı:XML databinding ile today.xml dosyası için bir unit oluşturduktan sonrası için ...
- Bunu nasıl yapacağını bilemiyorsan şöyle tarif edebilirim.

- Projeni açtıktan sonra Delphi IDE'de tekrar File / New / Other seçerek XML başlığındaki XML Data Binding'i seç.

- Source olarak Schema or XML Data File : alanına http://www.tcmb.gov.tr/kurlar/today.xml yaz. Next bas.

- Sonraki sayfada değişiklik yapmana gerek yok, tekrar Next bas.

- Soldaki "Do Not Store Settings" olanı onayla ve Finish butonuna bas. Artık bu XML dosyaya ilişkin hazırlanmış PAS dosyası hazırdır. Bunu USES satırına ekleyerek kullanabilirsin.
Resim
Resim ....Resim
Cevapla