Changeset 7 for trunk/Ean.pas
- Timestamp:
- Apr 13, 2026, 7:11:03 PM (2 weeks ago)
- File:
-
- 1 edited
-
trunk/Ean.pas (modified) (9 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Ean.pas
r6 r7 17 17 class function Create(Time: TDateTime; ValueIn, ValueOut: Single): TEanValue; static; 18 18 function GetShared: Double; 19 procedure LoadFromXmlNode(Node: TDOMNode); 20 procedure SaveToXmlNode(Node: TDOMNode); 19 21 end; 20 22 … … 23 25 TEanValues = class(TList<TEanValue>) 24 26 function Comparer(constref Left, Right: TEanValue): Integer; 27 procedure LoadFromXmlNode(Node: TDOMNode); 28 procedure SaveToXmlNode(Node: TDOMNode); 25 29 end; 26 30 … … 51 55 TEans = class(TObjectList<TEan>) 52 56 function SearchByNumber(Number: string): TEan; 57 function SearchByOwner(Owner: string): TEan; 53 58 procedure LoadToStrings(Strings: TStrings; AllowNone: Boolean = False); 54 59 procedure LoadFromXmlNode(Node: TDOMNode); … … 64 69 EansName = 'Eans'; 65 70 EanName = 'Ean'; 71 EanValueName = 'EanValue'; 72 EanValuesName = 'EanValues'; 66 73 67 74 … … 94 101 end; 95 102 103 procedure TEanValue.LoadFromXmlNode(Node: TDOMNode); 104 begin 105 Time := ReadDateTime(Node, 'Time', Time); 106 ValueIn := ReadDouble(Node, 'ValueIn', ValueIn); 107 ValueOut := ReadDouble(Node, 'ValueOut', ValueOut); 108 end; 109 110 procedure TEanValue.SaveToXmlNode(Node: TDOMNode); 111 begin 112 if Time <> 0 then WriteDateTime(Node, 'Time', Time); 113 if ValueIn <> 0 then WriteDouble(Node, 'ValueIn', ValueIn); 114 if ValueOut <> 0 then WriteDouble(Node, 'ValueOut', ValueOut); 115 end; 116 96 117 { TEanValues } 97 118 … … 99 120 begin 100 121 Result := CompareDateTime(Left.Time, Right.Time); 122 end; 123 124 procedure TEanValues.LoadFromXmlNode(Node: TDOMNode); 125 var 126 Node2: TDOMNode; 127 EanValue: TEanValue; 128 begin 129 Node2 := Node.FirstChild; 130 while Assigned(Node2) and (Node2.NodeName = EanValueName) do begin 131 EanValue.LoadFromXmlNode(Node2); 132 Add(EanValue); 133 Node2 := Node2.NextSibling; 134 end; 135 end; 136 137 procedure TEanValues.SaveToXmlNode(Node: TDOMNode); 138 var 139 Node2: TDOMNode; 140 I: Integer; 141 begin 142 for I := 0 to Count - 1 do begin 143 Node2 := Node.OwnerDocument.CreateElement(EanValueName); 144 Items[I].SaveToXmlNode(Node2); 145 Node.AppendChild(Node2); 146 end; 101 147 end; 102 148 … … 133 179 134 180 procedure TEan.LoadFromXmlNode(Node: TDOMNode); 181 var 182 NewNode: TDOMNode; 135 183 begin 136 184 Number := ReadString(Node, 'Number', Number); … … 140 188 PriceHigh := ReadDouble(Node, 'PriceHigh', PriceHigh); 141 189 PriceSpot := ReadDouble(Node, 'PriceSpot', PriceSpot); 190 Kind := TEanKind(ReadInteger(Node, 'Kind', Integer(Kind))); 191 192 NewNode := Node.FindNode(EanValuesName); 193 if Assigned(NewNode) then 194 Values.LoadFromXmlNode(NewNode); 142 195 end; 143 196 144 197 procedure TEan.SaveToXmlNode(Node: TDOMNode); 145 begin 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); 198 var 199 NewNode: TDOMNode; 200 begin 201 if Number <> '' then WriteString(Node, 'Number', Number); 202 if Owner <> '' then WriteString(Node, 'Owner', Owner); 203 if DistributionTariff <> '' then WriteString(Node, 'DistributionTariff', DistributionTariff); 204 if PriceLow <> 0 then WriteDouble(Node, 'PriceLow', PriceLow); 205 if PriceHigh <> 0 then WriteDouble(Node, 'PriceHigh', PriceHigh); 206 if PriceSpot <> 0 then WriteDouble(Node, 'PriceSpot', PriceSpot); 207 WriteInteger(Node, 'Kind', Integer(Kind)); 208 209 if Values.Count > 0 then begin 210 NewNode := Node.OwnerDocument.CreateElement(EanValuesName); 211 Node.AppendChild(NewNode); 212 Values.SaveToXmlNode(NewNode); 213 end; 152 214 end; 153 215 … … 171 233 I := 0; 172 234 while (I < Count) and (Items[I].Number <> Number) do Inc(I); 235 if I < Count then Result := Items[I] 236 else Result := nil; 237 end; 238 239 function TEans.SearchByOwner(Owner: string): TEan; 240 var 241 I: Integer; 242 begin 243 I := 0; 244 while (I < Count) and (Items[I].Owner <> Owner) do Inc(I); 173 245 if I < Count then Result := Items[I] 174 246 else Result := nil;
Note:
See TracChangeset
for help on using the changeset viewer.
![(please configure the [header_logo] section in trac.ini)](/edc-stats/chrome/site/your_project_logo.png)