Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Altın Fiyat Arşivi
#4
Size aşağıdaki şekilde bir örnek hazırladım.

Deneyip içerik kontrolünden sonra (altın fiyatları mayıs 2006'da garip seyretmiş ya da veride sorun var) kodlarınızda revizyona gitmek de isteyebilirsiniz memnunum kalsın de diyebilirsiniz, tercih sizin.



uses  System.Net.HttpClientComponent,
      System.Net.HttpClient,
      System.JSON,
      System.Generics.Collections;

type
  tGoldInfo = record
    kur   : currency;
    date  : string;
  end;
  tGoldArray = array of tGoldInfo;

function FetchGoldExchange( aDay:Integer = 1 ): tGoldArray;
const
  LUrlFmt = 'https://altin.in/grafikur.asp?did=flash_grafik'
            + '&ca=1&islem=gunluk&sa=sat&kur=GA&banka=altin&k=&gun=%d';
var
  LResponse   : IHTTPResponse;
  LText       : String;
  LJSONObject : TJSONObject;
  LKurObject  : TJSONObject;
  LSatisArray : TJSONArray;
  LTarihArray : TJSONArray;
  i           : Integer;
begin
  finalize(result);
  with TNetHTTPClient.Create(nil) do
  try
    LResponse := Get( format(LUrlFmt, [aDay]) );
    if LResponse.StatusCode = 200 then
    begin
      LText := LResponse.ContentAsString;

      if ( pos('{kur:', LText) > 0 ) then
      begin
        System.Delete(LText, 1, pos('{kur:', LText)-1 );
        if pos( ';graf.yarat', LText ) > 0 then
        begin
          LText := Copy(LText, 1, pos(';graf.yarat', LText)-1 );

          // JSON Format düzeltme... (başlıklar çift tırnak içine alınmalı...)
          LText := StringReplace( LText, 'kur', '"kur"', [] );
          LText := StringReplace( LText, 'satis', '"satis"', [] );
          LText := StringReplace( LText, 'tarih', '"tarih"', [] );

          // JSON parse et

          LJSONObject := TJSONObject.ParseJSONValue(trim(LText)) as TJSONObject;
          if LJSONObject <> nil then
          try
            LKurObject   := LJSONObject.FindValue('kur') as TJSONObject;

            if LKurObject <> nil then
            begin

              LSatisArray  := LKurObject.FindValue('satis') as TJSONArray;
              LTarihArray  := LKurObject.FindValue('tarih') as TJSONArray;

              for i := 0 to LTarihArray.Count-1 do
              begin
                SetLength(result, length(result)+1);
                With Result[ high(result) ] do
                begin
                  kur   := TJSONNumber( LSatisArray.items[i] ).AsDouble;
                  date  := LTarihArray.items[i].Value;
                end;
              end;
            end;

          finally
            LJSONObject.Free;
          end;
        end
        else
          ShowMessage('Geçerli bir JSON bölümü bulunamadı.');
      end;
    end else
    begin
      MessageDlg('Failed...' + sLineBreak + LResponse.ContentAsString,
        TMsgDlgType.mtError, [mbAbort], 0 );
    end;

  finally
    free;
  end;
end;


// Örnek kullanım
procedure TForm1.BitBtn1Click(Sender: TObject);
var
  LResult : tGoldArray;
  i : Integer;
begin
  LResult := FetchGoldExchange( 7040 );

  // Memo'yu dolduralım...
  if Length(LResult) > 0 then
  begin
    Memo1.Lines.Clear;
    Memo1.Lines.BeginUpdate;
    for i := Low(LResult) to High(LResult)
      do
        Memo1.Lines.Add(
          format( '%20s  : %10s', [ LResult[i].date,
            format('%0.4f', [LResult[i].kur]) ]) );
    Memo1.Lines.EndUpdate;
  end;

  Finalize( LResult ); // Array boşalt..
end;



Denemek için forma bir memo ve bir button koymanız kafi..

q7z3uxstgybx0e7hkwcp.gif
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla


Bu Konudaki Yorumlar
Altın Fiyat Arşivi - Yazar: mesut61 - 07-08-2025, Saat: 20:26
Altın Fiyat Arşivi - Yazar: mrmarman - 08-08-2025, Saat: 09:01
Cvp: Altın Fiyat Arşivi - Yazar: mesut61 - 08-08-2025, Saat: 11:42
Altın Fiyat Arşivi - Yazar: mrmarman - 08-08-2025, Saat: 15:17
Altın Fiyat Arşivi - Yazar: tavsanlili - 08-08-2025, Saat: 23:45
Altın Fiyat Arşivi - Yazar: Hayati - 10-08-2025, Saat: 13:33
Cvp: Altın Fiyat Arşivi - Yazar: mrmarman - 10-08-2025, Saat: 15:05
Altın Fiyat Arşivi - Yazar: Hayati - 10-08-2025, Saat: 20:36



Konuyu Okuyanlar: 1 Ziyaretçi