Sanal Dosya oluşturma-XML olarak kurların alınması (çözüldü)

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
aycen
Üye
Mesajlar: 20
Kayıt: 17 Mar 2008 03:08

Sanal Dosya oluşturma-XML olarak kurların alınması (çözüldü)

Mesaj gönderen aycen »

Kod: Tümünü seç

var
  HTTP_KUR : TIdHTTP;
  KUR_MemoryStream : TMemoryStream;

procedure TKUR_Form.FormShow(Sender: TObject);
begin
  HTTP_KUR := TIdHTTP.Create(nil);
  KUR_MemoryStream := TMemoryStream.Create;

  try
    HTTP_KUR.Get('http://www.tcmb.gov.tr/kurlar/today.xml', KUR_MemoryStream);
  finally
    HTTP_KUR.Free;
  end;

  KUR_MemoryStream.Position := 0;
//  KUR_MemoryStream.SaveToFile('today.xml');

  ClientDataSet1.Close;
  ClientDataSet1.ProviderName := 'XMLTransformProvider1';
  XMLTransformProvider1.CacheData := False;
  XMLTransformProvider1.TransformRead.TransformationFile  := ExtractFilePath(Application.ExeName) + 'toDp.xtr';
  XMLTransformProvider1.TransformWrite.TransformationFile := ExtractFilePath(Application.ExeName) + 'toXML.xtr';
  XMLTransformProvider1.XMLDataFile := KUR_MemoryStream;    //  Hata....
//  XMLTransformProvider1.XMLDataFile := ExtractFilePath(Application.ExeName) + 'today.xml';   
  ClientDataSet1.Open;

  KUR_MemoryStream.Free;
end;
S.A.

Dosyayı kaydettikten sonra istediğim sonucu alıyorum ama ben kaydetmeden yapmak istiyorum.

Yukardaki kod da hata yazan yere nasıl bir işlem yapmalıyım. Sanal bir dosyayı "XMLTransformProvider1.XMLDataFile" aktarmam lazım.
bu konudaki araştırmalarımdan bir sonuç alamadım. Yardımlarınızı bekliyorum.

kolay gelsin...
En son aycen tarafından 07 Kas 2008 11:38 tarihinde düzenlendi, toplamda 2 kere düzenlendi.
aycen
Üye
Mesajlar: 20
Kayıt: 17 Mar 2008 03:08

Re: Sanal Dosya oluşturma-XML olarak kurların alınması

Mesaj gönderen aycen »

Kod: Tümünü seç

var
  KUR_IdHTTP : TIdHTTP;
  KUR_MemoryStream : TMemoryStream;
  SourceXML_XMLDocument : TXMLDocument;

procedure TKUR_Form.FormShow(Sender: TObject);
begin
  KUR_IdHTTP := TIdHTTP.Create(nil);
  KUR_MemoryStream := TMemoryStream.Create;
  SourceXML_XMLDocument := TXMLDocument.Create(Self);
  try
    try
      KUR_IdHTTP.Get('http://www.tcmb.gov.tr/kurlar/today.xml', KUR_MemoryStream);
      KUR_MemoryStream.Position := 0;
      SourceXML_XMLDocument.LoadFromStream(KUR_MemoryStream);
      XMLTransform1.SourceXmlDocument := SourceXML_XMLDocument.DOMDocument;
      XMLTransform1.TransformationFile := ExtractFilePath(Application.ExeName) + 'toDp.xtr';
      ClientDataSet1.Close;
      ClientDataSet1.XMLData := XMLTransform1.Data;
      ClientDataSet1.Open;
    finally
      KUR_IdHTTP.Free;
      KUR_MemoryStream.Free;
      SourceXML_XMLDocument.Free;
    end;
  except
    ShowMessage('T.C.M.B. '' den kurlar alınamıyor...!');
  end;
end;
Herkese teşekkür ederim. Sorunu çözdüm...
Kullanıcı avatarı
CiTiZEN
Üye
Mesajlar: 1163
Kayıt: 06 Oca 2008 04:15

Re: Sanal Dosya oluşturma-XML olarak kurların alınması (çözüldü)

Mesaj gönderen CiTiZEN »

Kodum sorunsuz halini yayınladığınız için teşekkürler
UWESIS CORPORATION
F.Atagun
Üye
Mesajlar: 158
Kayıt: 01 Oca 2008 01:56

Re: Sanal Dosya oluşturma-XML olarak kurların alınması (çözüldü)

Mesaj gönderen F.Atagun »

Forumda bulmuştum Bu da Kolay,

4 edit, 1 tane memo koyun , kurlar hemen gelsin :D

Kod: Tümünü seç



procedure TForm114.Button8Click(Sender: TObject);
var
z,s,alis,satis,aranan:string;
yer,i:Integer;
begin
      Memo1.Clear;
      Edit1.Text:='';
      Edit2.Text:='';
      Edit3.Text:='';
      Edit4.Text:='';
      s:=IDHttp1.Get('http://www.tcmb.gov.tr/kurlar/today.html');
      z:=IDHttp1.Get('http://www.tcmb.gov.tr/kurlar/today.html');
      aranan:='1 ABD DOLARI';
      for i:=1 to 2 do
      begin
      yer:=pos(aranan,s);
      yer:=pos(aranan,z);
        if yer=0 then
        begin
        ShowMessage('Kur bilgisi yok');
        exit;
      end
      else
      begin
          yer:=yer+length(aranan);
          s:=copy(s,yer,length(s)-yer);
          z:=copy(z,yer,length(s)-yer);
          s:=trim(s);
          z:=trim(z);
          alis:=copy(s,1,9);
          satis:=copy(z,14,9);
          Memo1.Lines.Add(aranan +' Alış = ' + alis);
          Memo1.Lines.Add(aranan +' Satış = ' + satis);
          aranan:='1 EURO';
          Edit1.Text:=copy(Memo1.Lines.Text,20,7);
          Edit2.Text:=copy(Memo1.Lines.Text,52,7);
          Edit3.Text:=copy(Memo1.Lines.Text,77,7);
          Edit4.Text:=copy(Memo1.Lines.Text,103,7);
          end;
      end;

end;
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: Sanal Dosya oluşturma-XML olarak kurların alınması (çözüldü)

Mesaj gönderen sabanakman »

html bilgilerini çözümlemeye çalışmak biraz esneklikten uzaktır. Bağlanılan internet sayfasının yapısında yapılan en küçük değişiklikten etkilenir ve hatalı çalışabilir. Yeni değişikliğe uyum sağlamak biraz sıkıntı çıkarabilir ama sorudaki gibi, .xml verisi üzerinden çalışmak daha pratiktir. Eğer onda da bir değişiklik yapılırsa .xml üzerindeki değişikliğe uyum sağlamak çok daha kolay olacaktır.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Cevapla