Changeset 6 for trunk/Ean.pas


Ignore:
Timestamp:
Apr 13, 2026, 2:01:36 PM (2 weeks ago)
Author:
chronos
Message:
  • Modified: EDC related code split into EdcProject unit.
  • Added: Partial loading of spot prices.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Ean.pas

    r5 r6  
    44
    55uses
    6   Classes, SysUtils, Generics.Collections, Generics.Defaults, DateUtils;
     6  Classes, SysUtils, Generics.Collections, Generics.Defaults, DateUtils, DOM,
     7  XML;
    78
    89type
     
    4041    function GetTotalOut(TimeFrom, TimeTo: TDateTime): Double;
    4142    function GetShared(TimeFrom, TimeTo: TDateTime): Double;
     43    procedure LoadFromXmlNode(Node: TDOMNode);
     44    procedure SaveToXmlNode(Node: TDOMNode);
    4245    constructor Create;
    4346    destructor Destroy; override;
     
    4952    function SearchByNumber(Number: string): TEan;
    5053    procedure LoadToStrings(Strings: TStrings; AllowNone: Boolean = False);
     54    procedure LoadFromXmlNode(Node: TDOMNode);
     55    procedure SaveToXmlNode(Node: TDOMNode);
    5156  end;
    5257
     
    5560
    5661procedure Translate;
     62
     63const
     64  EansName = 'Eans';
     65  EanName = 'Ean';
    5766
    5867
     
    121130  if TotalIn <> 0 then Result := (1 - GetTotalOut(TimeFrom, TimeTo) / TotalIn) * 100
    122131    else Result := 0;
     132end;
     133
     134procedure TEan.LoadFromXmlNode(Node: TDOMNode);
     135begin
     136  Number := ReadString(Node, 'Number', Number);
     137  Owner := ReadString(Node, 'Owner', Owner);
     138  DistributionTariff := ReadString(Node, 'DistributionTariff', DistributionTariff);
     139  PriceLow := ReadDouble(Node, 'PriceLow', PriceLow);
     140  PriceHigh := ReadDouble(Node, 'PriceHigh', PriceHigh);
     141  PriceSpot := ReadDouble(Node, 'PriceSpot', PriceSpot);
     142end;
     143
     144procedure TEan.SaveToXmlNode(Node: TDOMNode);
     145begin
     146  WriteString(Node, 'Number', Number);
     147  WriteString(Node, 'Owner', Owner);
     148  WriteString(Node, 'DistributionTariff', DistributionTariff);
     149  WriteDouble(Node, 'PriceLow', PriceLow);
     150  WriteDouble(Node, 'PriceHigh', PriceHigh);
     151  WriteDouble(Node, 'PriceSpot', PriceSpot);
    123152end;
    124153
     
    165194end;
    166195
     196procedure TEans.LoadFromXmlNode(Node: TDOMNode);
     197var
     198  Node2: TDOMNode;
     199  Ean: TEan;
     200begin
     201  Node2 := Node.FirstChild;
     202  while Assigned(Node2) and (Node2.NodeName = EanName) do begin
     203    Ean := TEan.Create;
     204    Ean.LoadFromXmlNode(Node2);
     205    Add(Ean);
     206    Node2 := Node2.NextSibling;
     207  end;
     208end;
     209
     210procedure TEans.SaveToXmlNode(Node: TDOMNode);
     211var
     212  Node2: TDOMNode;
     213  I: Integer;
     214begin
     215  for I := 0 to Count - 1 do begin
     216    Node2 := Node.OwnerDocument.CreateElement(EanName);
     217    Items[I].SaveToXmlNode(Node2);
     218    Node.AppendChild(Node2);
     219  end;
     220end;
     221
    167222end.
    168223
Note: See TracChangeset for help on using the changeset viewer.