Changeset 10 for trunk/SpotPrice.pas


Ignore:
Timestamp:
Apr 15, 2026, 9:35:17 AM (2 weeks ago)
Author:
chronos
Message:
  • Added: Show spot total price above zero for EANs.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/SpotPrice.pas

    r9 r10  
    2626    procedure LoadSpotReport(FileName: string);
    2727  public
     28    procedure ClearInterval(IntervalFrom, IntervalTo: TDateTime);
    2829    function GetBlock(var Text: string; StartText, EndText: string): string;
    29     procedure LoadSpotPricesFromWeb(Date: TDate);
     30    procedure LoadFromWebDate(Date: TDate);
     31    procedure LoadFromWeb;
    3032    procedure Import(Directory: string);
    3133    procedure LoadFromXmlNode(Node: TDOMNode);
    3234    procedure SaveToXmlNode(Node: TDOMNode);
    33     function SearchByTime(Time: TDateTime): TSpotPrice;
     35    function SearchByTime(Time: TDateTime): Integer;
    3436  end;
    3537
     
    6264end;
    6365
    64 procedure TSpotPrices.LoadSpotPricesFromWeb(Date: TDate);
     66procedure TSpotPrices.LoadFromWebDate(Date: TDate);
    6567var
    6668  URL: string;
     
    7375  Value: Double;
    7476begin
    75   Clear;
     77  ClearInterval(Date, Date + 1);
     78
    7679  URL := 'https://spotovaelektrina.cz/denni-ceny/' + DateToStr(Date, XmlFormatSettings);
    7780  with TFPHttpClient.Create(nil) do
     
    102105end;
    103106
     107procedure TSpotPrices.LoadFromWeb;
     108var
     109  I: Integer;
     110begin
     111  for I := 1 to 15 do
     112    LoadFromWebDate(StrToDate(IntToStr(I) + '.4.2026'));
     113
     114  Sort(TComparer<TSpotPrice>.Construct(Comparer));
     115end;
     116
    104117function TSpotPrices.FileNameFilter(FileName: string): Boolean;
    105118begin
     
    134147end;
    135148
     149procedure TSpotPrices.ClearInterval(IntervalFrom, IntervalTo: TDateTime);
     150var
     151  I: Integer;
     152begin
     153  for I := Count - 1 downto 0 do
     154    if (Items[I].Time >= IntervalFrom) and (Items[I].Time < IntervalTo) then
     155      Delete(I);
     156end;
     157
    136158procedure TSpotPrices.Import(Directory: string);
    137159var
     
    178200end;
    179201
    180 function TSpotPrices.SearchByTime(Time: TDateTime): TSpotPrice;
     202function TSpotPrices.SearchByTime(Time: TDateTime): Integer;
    181203var
    182204  I: Integer;
     
    184206  I := 0;
    185207  while (I < Count) and (Items[I].Time <> Time) do Inc(I);
    186   if I < Count then Result := Items[I]
    187     else Result := TSpotPrice.Create(0, 0);
     208  if I < Count then Result := I
     209    else Result := -1;
    188210end;
    189211
Note: See TracChangeset for help on using the changeset viewer.