Arkadaşlar merhaba. Merkez bankasının değişikliği üzerine artık .xml şeklinde yayınlanıyor döviz bilgileri. Benim projemde döviz bilgilerini getirtebiliyorum fakat bu çektiğim xml dosyasını kendim düzenlediğim şekilde txt dosyasına atmam gerekli. Örneğin sadece usd,euro döviz bilgilerini şu şekilde yazdırmak istiyorum
Örneğin;
INSERT INTO dovizkur SET DOVIZ_ID=2, KISA="USD",TRH="2014-10-02" ,ALIS="2.2829",SATIS="2.2871",EFEKTIF_ALIS="2.2813",EFEKTIF_SATIS="2.2905";
INSERT INTO dovizkur SET DOVIZ_ID=3, KISA="EUR",TRH="2014-10-02" ,ALIS="2.8771",SATIS="2.8823",EFEKTIF_ALIS="2.8751",EFEKTIF_SATIS="2.8866";
Kodsal açıdan bir türlü işin içinden çıkamadım.Çok teşekkürler şimdiden
delphi döviz çekme
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
- ozlemsaltan
- Üye
- Mesajlar: 38
- Kayıt: 01 Nis 2014 05:57
delphi döviz çekme
Çaylak yazılımcı:)
- barisatalay
- Üye
- Mesajlar: 398
- Kayıt: 02 Nis 2013 05:43
- İletişim:
Re: delphi döviz çekme
Gerekli Kodları ekleyin Forma 1 tane XMLDocument Nesnesi ekleyin.
Aşağıda dönen verileri almanız için gerekli notları bıraktım onları istediğiniz gibi txt dosyası içerisine kaydedebilirsiniz artık.
Aşağıda dönen verileri almanız için gerekli notları bıraktım onları istediğiniz gibi txt dosyası içerisine kaydedebilirsiniz artık.
Kod: Tümünü seç
//Kullanımı:
DovizIslemleri(XMLDocument1);
Uses Vcl.ExtActns;
procedure DovizIslemleri(XMLComp: TXMLDocument);
var
I: Integer;
S,
LocalFile,
tmpUrl: String;
HeaderNode,
CurrNode: IXMLNode;
{$REGION 'Gerekli Fonksiyonlar'}
function DownloadURLFile(const UrlFile, LocalFile : TFileName) : boolean;
begin
Result:=True;
with TDownLoadURL.Create(nil) do
try
URL:=UrlFile;
Filename:=LocalFile;
try
ExecuteTarget(nil);
except
Result:=False;
end;
finally
Free;
end;
end;
function Kontrol(xDate:String;Url: String): String;
var
D1,
D2,
Tmp: String;
begin
Tmp := FormatDateTime('t',Now);
if (Trim(xDate) = '') or (StrToTime(Tmp) < StrToTime('15:30')) then //2. koşulun sebebi saat 15:30 dan önce her zaman bir önceki günün değeri gelir
Url := Format(Url,['today'])
else
begin
D1 := FormatDateTime('yyyymm', StrToDate(xDate));
D2 := FormatDateTime('ddmmyyyy', StrToDate(xDate));
Tmp := D1 + '/' + D2 ;
Url := Format(Url,[Tmp]);
end;
Result := Url;
end;
{$ENDREGION}
begin
try
LocalFile := IncludeTrailingPathDelimiter(ExtractFilePath(Application.ExeName)) + 'temp.TMB.xml';
tmpUrl := Kontrol(DateToStr(Date),'http://www.tcmb.gov.tr/kurlar/%s.xml');
Screen.Cursor:=crHourglass;
try
if not DownloadURLFile(tmpUrl, LocalFile) then
begin
Screen.Cursor:=crDefault;
Raise Exception.CreateFmt('İnternet ile ilgili bir problem ile karşılaşıldı lütfen tekrar deneyiniz..',[]);
Exit;
end;
if not FileExists(LocalFile) then
begin
Screen.Cursor:=crDefault;
raise exception.Create('Xml İndirilemedi!');
Exit;
end;
XMLComp.Active := False;
XMLComp.FileName := LocalFile;
XMLComp.Active:=True;
HeaderNode := XMLComp.DocumentElement;
S := HeaderNode.Attributes['Tarih'];// Tarih
for i := 0 to HeaderNode.ChildNodes.Count - 1 do
begin
CurrNode := HeaderNode.ChildNodes.Get(I);
{$REGION 'Dönenler'}
(* //PARA KODU
CurrNode.Attributes['Kod']
//<Unit>
CurrNode.ChildNodes.Get(0).NodeValue;
//<Isim>
CurrNode.ChildNodes.Get(1).NodeValue;
//<CurrencyName>
CurrNode.ChildNodes.Get(2).NodeValue;
//<ForexBuying>
CurrNode.ChildNodes.Get(3).NodeValue;
//<ForexSelling>
CurrNode.ChildNodes.Get(4).NodeValue;
//<BanknoteBuying>
CurrNode.ChildNodes.Get(5).NodeValue;
//<BanknoteSelling>
CurrNode.ChildNodes.Get(6).NodeValue;
//<CrossRateUSD>
CurrNode.ChildNodes.Get(7).NodeValue;
//<CrossRateUSD>
CurrNode.ChildNodes.Get(8).NodeValue;
*)
{$ENDREGION}
end;
finally
DeleteFile(LocalFile);
Screen.Cursor:=crDefault;
end;
except
on E: Exception do ShowMessage(E.Message);
end;//try
end;
Yeni bloğum: http://brsatalay.blogspot.com.tr/
Re: delphi döviz çekme
Merhaba;
Sadece USD ve EURO için banka alış bilgilerini aşağıdaki kodlada yapabilirsiniz, farklı bir yöntem tabi.
Sadece USD ve EURO için banka alış bilgilerini aşağıdaki kodlada yapabilirsiniz, farklı bir yöntem tabi.
Kod: Tümünü seç
type
TForm1 = class(TForm)
IdHTTP1: TIdHTTP;
Edit1: TEdit;
Edit2: TEdit;
Button1: TButton;
.
.
private
Procedure kurbilgileri;
.
.
.
Procedure TForm1.kurbilgileri;
var
ADRES,DEGER,ARA,SATIS:string;
YER:integer;
begin
ADRES:=IdHTTP1.Get('http://www.tcmb.gov.tr/kurlar/today.xml');
DEGER:=ADRES;
ARA:='US DOLLAR';
YER:=POS(ARA,DEGER);
YER:=YER+length(ARA);
DEGER:=COPY(DEGER,YER,LENGTH(DEGER)-YER);
DEGER:=TRIM(DEGER);
SATIS:=COPY(DEGER,1,LENGTH(DEGER)-YER);
ARA:='<BanknoteBuying>'; // Banka Alış Fiyatıdır.
YER:=pos(ARA,DEGER);
YER:=YER+LENGTH(ARA);
DEGER:=COPY(DEGER,YER,LENGTH(DEGER)-YER);
DEGER:=TRIM(DEGER);
SATIS:=COPY(DEGER,1,LENGTH(DEGER)-YER);
Edit1.Text :=COPY(SATIS,1,6); // sonuc
ARA:='EURO';
YER:=POS(ARA,DEGER);
YER:=YER+LENGTH(ARA);
DEGER:=COPY(DEGER,YER,LENGTH(DEGER)-YER);
DEGER:=TRIM(DEGER);
SATIS:=COPY(DEGER,1,LENGTH(DEGER)-YER);
ARA:='<BanknoteBuying>'; // Banka Alış Fiyatıdır.
YER:=POS(ARA,DEGER);
YER:=YER+LENGTH(ARA);
DEGER:=COPY(DEGER,YER,LENGTH(DEGER)-YER);
DEGER:=TRIM(DEGER);
SATIS:=COPY(DEGER,1,LENGTH(DEGER)-YER);
Edit2.Text := COPY(SATIS,1,6); // sonuc
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
kurbilgileri;
end;
Nasibinde varsa, alırsın karıncadan bile ders, Nasibinde yoksa, bütün cihan önüne serilse, sana ters..