Changeset 6 for trunk


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.
Location:
trunk
Files:
2 added
10 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
  • trunk/EdcStats.lpi

    r5 r6  
    107107        <IsPartOfProject Value="True"/>
    108108      </Unit>
     109      <Unit>
     110        <Filename Value="EdcProject.pas"/>
     111        <IsPartOfProject Value="True"/>
     112      </Unit>
     113      <Unit>
     114        <Filename Value="SpotPrice.pas"/>
     115        <IsPartOfProject Value="True"/>
     116      </Unit>
    109117    </Units>
    110118  </ProjectOptions>
  • trunk/EdcStats.lpr

    r5 r6  
    1010  Interfaces, // this includes the LCL widgetset
    1111  Forms, tachartlazaruspkg, FormMain, csvdocument_package, Ean, CommonPackage,
    12   CoolStreaming
     12  CoolStreaming, EdcProject, SpotPrice
    1313  { you can add units after this };
    1414
  • trunk/FormMain.lfm

    r5 r6  
    88  ClientWidth = 1203
    99  DesignTimePPI = 144
     10  Menu = MainMenu1
    1011  LCLVersion = '4.6.0.0'
    1112  WindowState = wsMaximized
     
    1314  OnDestroy = FormDestroy
    1415  OnShow = FormShow
    15   object ButtonLoad: TButton
    16     Left = 8
    17     Height = 38
    18     Top = 16
    19     Width = 113
    20     Caption = 'Load'
    21     TabOrder = 0
    22     OnClick = ButtonLoadClick
    23   end
    2416  object PageControl1: TPageControl
    2517    Left = 16
    26     Height = 811
    27     Top = 64
     18    Height = 819
     19    Top = 56
    2820    Width = 1176
    2921    ActivePage = TabSheetOverview
    3022    Anchors = [akTop, akLeft, akRight, akBottom]
    3123    TabIndex = 0
    32     TabOrder = 1
     24    TabOrder = 0
    3325    object TabSheetOverview: TTabSheet
    3426      Caption = 'Overview'
    35       ClientHeight = 771
     27      ClientHeight = 779
    3628      ClientWidth = 1166
    3729      OnShow = TabSheetOverviewShow
    3830      object ListView1: TListView
    3931        Left = 8
    40         Height = 755
     32        Height = 763
    4133        Top = 8
    4234        Width = 1150
     
    8880    object TabSheetLog: TTabSheet
    8981      Caption = 'Log'
    90       ClientHeight = 771
     82      ClientHeight = 779
    9183      ClientWidth = 1166
    9284      OnShow = TabSheetLogShow
    9385      object Memo1: TMemo
    9486        Left = 8
    95         Height = 755
     87        Height = 763
    9688        Top = 8
    9789        Width = 1150
     
    10496    object TabSheetChart: TTabSheet
    10597      Caption = 'Chart'
    106       ClientHeight = 771
     98      ClientHeight = 779
    10799      ClientWidth = 1166
    108100      OnShow = TabSheetChartShow
     
    126118      object Chart1: TChart
    127119        Left = 16
    128         Height = 651
     120        Height = 659
    129121        Top = 104
    130122        Width = 1138
     
    220212    object TabSheetData: TTabSheet
    221213      Caption = 'Data'
    222       ClientHeight = 771
     214      ClientHeight = 779
    223215      ClientWidth = 1166
    224216      OnShow = TabSheetDataShow
    225217      object ListView2: TListView
    226218        Left = 16
    227         Height = 688
     219        Height = 696
    228220        Top = 72
    229221        Width = 1144
     
    269261  end
    270262  object ComboBoxPeriod: TComboBox
    271     Left = 272
     263    Left = 104
    272264    Height = 38
    273     Top = 16
     265    Top = 8
    274266    Width = 160
    275267    ItemHeight = 0
     
    282274    )
    283275    Style = csDropDownList
    284     TabOrder = 2
     276    TabOrder = 1
    285277    Text = 'Day'
    286278    OnSelect = ComboBoxPeriodSelect
    287279  end
    288280  object Label2: TLabel
    289     Left = 184
     281    Left = 16
    290282    Height = 26
    291     Top = 24
     283    Top = 16
    292284    Width = 60
    293285    Caption = 'Period:'
    294286  end
    295287  object TimeEdit1: TTimeEdit
    296     Left = 688
     288    Left = 520
    297289    Height = 43
    298     Top = 16
     290    Top = 8
    299291    Width = 155
    300292    ButtonWidth = 34
    301293    NumGlyphs = 1
    302294    MaxLength = 0
    303     TabOrder = 3
     295    TabOrder = 2
    304296    OnChange = TimeEdit1Change
    305297  end
    306298  object DateEdit1: TDateEdit
    307     Left = 520
     299    Left = 352
    308300    Height = 43
    309     Top = 16
     301    Top = 8
    310302    Width = 155
    311303    CalendarDisplaySettings = [dsShowHeadings, dsShowDayNames]
     
    314306    NumGlyphs = 1
    315307    MaxLength = 0
     308    TabOrder = 3
     309    OnChange = DateEdit1Change
     310  end
     311  object ButtonIntervalRight: TButton
     312    Left = 680
     313    Height = 38
     314    Top = 13
     315    Width = 40
     316    Caption = '>'
    316317    TabOrder = 4
    317     OnChange = DateEdit1Change
    318   end
    319   object ButtonIntervalRight: TButton
     318    OnClick = ButtonIntervalRightClick
     319  end
     320  object ButtonIntervalLeft: TButton
     321    Left = 304
     322    Height = 38
     323    Top = 13
     324    Width = 40
     325    Caption = '<'
     326    TabOrder = 5
     327    OnClick = ButtonIntervalLeftClick
     328  end
     329  object ComboBoxUnit: TComboBox
    320330    Left = 848
    321331    Height = 38
    322     Top = 21
    323     Width = 40
    324     Caption = '>'
    325     TabOrder = 5
    326     OnClick = ButtonIntervalRightClick
    327   end
    328   object ButtonIntervalLeft: TButton
    329     Left = 472
    330     Height = 38
    331     Top = 21
    332     Width = 40
    333     Caption = '<'
    334     TabOrder = 6
    335     OnClick = ButtonIntervalLeftClick
    336   end
    337   object ComboBoxUnit: TComboBox
    338     Left = 1016
    339     Height = 38
    340     Top = 16
     332    Top = 8
    341333    Width = 160
    342334    ItemHeight = 0
     
    348340    )
    349341    Style = csDropDownList
    350     TabOrder = 7
     342    TabOrder = 6
    351343    OnSelect = ComboBoxUnitSelect
    352344  end
    353345  object Label5: TLabel
    354     Left = 920
     346    Left = 752
    355347    Height = 26
    356     Top = 24
     348    Top = 16
    357349    Width = 40
    358350    Caption = 'Unit:'
     
    389381    Top = 416
    390382  end
     383  object MainMenu1: TMainMenu
     384    Left = 216
     385    Top = 376
     386    object MenuItem1: TMenuItem
     387      Caption = 'Tools'
     388      object MenuItem2: TMenuItem
     389        Caption = 'Load reports'
     390        OnClick = MenuItem2Click
     391      end
     392      object MenuItem3: TMenuItem
     393        Caption = 'Load spot prices'
     394        OnClick = MenuItem3Click
     395      end
     396    end
     397  end
    391398end
  • trunk/FormMain.lrj

    r5 r6  
    11{"version":1,"strings":[
    22{"hash":89841971,"name":"tformmain.caption","sourcebytes":[69,68,67,32,83,116,97,116,115],"value":"EDC Stats"},
    3 {"hash":341364,"name":"tformmain.buttonload.caption","sourcebytes":[76,111,97,100],"value":"Load"},
    43{"hash":214551207,"name":"tformmain.tabsheetoverview.caption","sourcebytes":[79,118,101,114,118,105,101,119],"value":"Overview"},
    54{"hash":18782,"name":"tformmain.listview1.columns[0].caption","sourcebytes":[69,65,78],"value":"EAN"},
     
    2726{"hash":62,"name":"tformmain.buttonintervalright.caption","sourcebytes":[62],"value":">"},
    2827{"hash":60,"name":"tformmain.buttonintervalleft.caption","sourcebytes":[60],"value":"<"},
    29 {"hash":6049914,"name":"tformmain.label5.caption","sourcebytes":[85,110,105,116,58],"value":"Unit:"}
     28{"hash":6049914,"name":"tformmain.label5.caption","sourcebytes":[85,110,105,116,58],"value":"Unit:"},
     29{"hash":5989939,"name":"tformmain.menuitem1.caption","sourcebytes":[84,111,111,108,115],"value":"Tools"},
     30{"hash":234102723,"name":"tformmain.menuitem2.caption","sourcebytes":[76,111,97,100,32,114,101,112,111,114,116,115],"value":"Load reports"},
     31{"hash":17275603,"name":"tformmain.menuitem3.caption","sourcebytes":[76,111,97,100,32,115,112,111,116,32,112,114,105,99,101,115],"value":"Load spot prices"}
    3032]}
  • trunk/FormMain.pas

    r5 r6  
    55uses
    66  Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, ComCtrls,
    7   EditBtn, TAGraph, TASeries, Generics.Collections, Generics.Defaults,
     7  EditBtn, Menus, TAGraph, TASeries, Generics.Collections, Generics.Defaults,
    88  DateUtils, Ean, Translator, ApplicationInfo, RegistryEx, PersistentForm,
    9   Theme, Common, XML, DOM, XMLRead, XMLWrite;
     9  Theme, Common, XML, DOM, XMLRead, EdcProject;
    1010
    1111type
     
    2020    ButtonIntervalRight: TButton;
    2121    ButtonIntervalLeft: TButton;
    22     ButtonLoad: TButton;
    2322    Chart1: TChart;
    2423    Chart1LineSeries1: TLineSeries;
     
    4443    ListView1: TListView;
    4544    ListView2: TListView;
     45    MainMenu1: TMainMenu;
    4646    Memo1: TMemo;
     47    MenuItem1: TMenuItem;
     48    MenuItem2: TMenuItem;
     49    MenuItem3: TMenuItem;
    4750    PageControl1: TPageControl;
    4851    PersistentForm1: TPersistentForm;
     
    5659    procedure ButtonIntervalLeftClick(Sender: TObject);
    5760    procedure ButtonIntervalRightClick(Sender: TObject);
    58     procedure ButtonLoadClick(Sender: TObject);
    5961    procedure CheckBoxShowResultChange(Sender: TObject);
    6062    procedure ComboBoxEanSelect(Sender: TObject);
     
    6567    procedure FormDestroy(Sender: TObject);
    6668    procedure FormShow(Sender: TObject);
     69    procedure MenuItem2Click(Sender: TObject);
     70    procedure MenuItem3Click(Sender: TObject);
    6771    procedure TabSheetOverviewShow(Sender: TObject);
    6872    procedure TabSheetChartShow(Sender: TObject);
     
    7276    procedure Translator1Translate(Sender: TObject);
    7377  private
    74     Eans: TEans;
    7578    IntervalFrom: TDateTime;
    7679    IntervalTo: TDateTime;
     
    8083    OwnersFileName: string;
    8184    ShowResult: Boolean;
    82     function FileNameFilter(FileName: string): Boolean;
     85    EdcProject: TEdcProject;
     86    procedure LoadReports;
    8387    function MeasureToFloat(Value: Double; Interval: Double): Double;
    8488    function MeasureToStr(Value: Double): string;
    85     procedure CreateEan(Number, Owner: string; Kind: TEanKind);
    8689    procedure LoadConfig;
    8790    procedure Report;
    8891    procedure ReloadListViewOverview;
    8992    procedure ReloadListViewData;
    90     procedure LoadOwners(FileName: string);
    91     procedure LoadEdcReport(FileName: string);
    9293    procedure ReloadChart;
    9394    function GetIntervalLength: TDateTime;
     
    113114
    114115resourcestring
    115   STotalSupply = 'Total supply';
    116   STotalConsumtion = 'Total consumption';
    117116  SEAN = 'EAN';
    118117  SOwner = 'Owner';
     
    124123  SMonth = 'Month';
    125124  SYear = 'Year';
    126   SWrongFileFormat = 'Wrong file format';
    127125
    128126{ TFormMain }
    129 
    130 function TFormMain.FileNameFilter(FileName: string): Boolean;
    131 begin
    132   Result := ExtractFileExt(FileName) = '.csv';
    133 end;
    134 
    135 procedure TFormMain.ButtonLoadClick(Sender: TObject);
    136 var
    137   Reports: TStringList;
    138   I: Integer;
    139 begin
    140   LoadOwners(OwnersFileName);
    141 
    142   Reports := TStringList.Create;
    143   try
    144     SearchFiles(Reports, ReportsDir, FileNameFilter);
    145     for I := 0 to Reports.Count - 1 do
    146       LoadEdcReport(Reports[I]);
    147   finally
    148     Reports.Free;
    149   end;
    150 
    151   for I := 0 to Eans.Count - 1 do
    152     Eans[I].Values.Sort(TComparer<TEanValue>.Construct(Eans[I].Values.Comparer));
    153 
    154   CreateEan('', STotalSupply, ekSupply);
    155   CreateEan('', STotalConsumtion, ekConsumption);
    156 
    157   if (Eans.Count > 0) and (Eans[0].Values.Count > 0) then
    158     IntervalTo := Eans[0].Values.Last.Time + 15 * OneMinute;
    159   UpdateInterval;
    160   UpdateInterface;
    161 end;
    162127
    163128procedure TFormMain.CheckBoxShowResultChange(Sender: TObject);
     
    212177begin
    213178  PageControl1.TabIndex := 0;
    214   Eans := TEans.Create;
     179  EdcProject := TEdcProject.Create;
    215180  LoadConfig;
    216181end;
     
    219184begin
    220185  SaveConfig;
    221   FreeAndNil(Eans);
     186  FreeAndNil(EdcProject);
    222187end;
    223188
    224189procedure TFormMain.FormShow(Sender: TObject);
    225190begin
    226   ButtonLoadClick(nil);
     191  LoadReports;
     192end;
     193
     194procedure TFormMain.MenuItem2Click(Sender: TObject);
     195begin
     196  LoadReports;
     197end;
     198
     199procedure TFormMain.MenuItem3Click(Sender: TObject);
     200begin
     201  EdcProject.SpotPrices.LoadSpotPrices(StrToDate('1.4.2026'));
    227202end;
    228203
     
    234209procedure TFormMain.TabSheetChartShow(Sender: TObject);
    235210begin
    236   Eans.LoadToStrings(ComboBoxEan.Items, True);
    237   if (ComboBoxEan.Items.Count > 1) and (ComboBoxEan.ItemIndex = -1) then ComboBoxEan.ItemIndex := 1;
    238   Eans.LoadToStrings(ComboBoxEan2.Items, True);
    239   Eans.LoadToStrings(ComboBoxEan3.Items, True);
     211  EdcProject.Eans.LoadToStrings(ComboBoxEan.Items, True);
     212  if (ComboBoxEan.Items.Count > 1) and (ComboBoxEan.ItemIndex = -1) then
     213    ComboBoxEan.ItemIndex := 1;
     214  EdcProject.Eans.LoadToStrings(ComboBoxEan2.Items, True);
     215  EdcProject.Eans.LoadToStrings(ComboBoxEan3.Items, True);
    240216  ReloadChart;
    241217end;
     
    243219procedure TFormMain.TabSheetDataShow(Sender: TObject);
    244220begin
    245   Eans.LoadToStrings(ComboBoxEanData.Items);
     221  EdcProject.Eans.LoadToStrings(ComboBoxEanData.Items);
    246222  if (ComboBoxEanData.Items.Count > 0) and (ComboBoxEanData.ItemIndex = -1) then
    247223    ComboBoxEanData.ItemIndex := 0;
     
    272248  ComboBoxPeriod.Items[Integer(prYear)] := SYear;
    273249  Ean.Translate;
     250end;
     251
     252procedure TFormMain.LoadReports;
     253begin
     254  EdcProject.LoadFromFile(OwnersFileName);
     255  EdcProject.Import(ReportsDir);
     256
     257  if (EdcProject.Eans.Count > 0) and (EdcProject.Eans[0].Values.Count > 0) then
     258    IntervalTo := EdcProject.Eans[0].Values.Last.Time + 15 * OneMinute;
     259  UpdateInterval;
     260  UpdateInterface;
    274261end;
    275262
     
    290277end;
    291278
    292 procedure TFormMain.CreateEan(Number, Owner: string; Kind: TEanKind);
    293 var
    294   Ean: TEan;
    295   Values: TDictionary<TDateTime, TEanValue>;
    296   ValuesArray: TArray<TPair<TDateTime, TEanValue>>;
    297   I: Integer;
    298   E: Integer;
    299   Value: TEanValue;
    300 begin
    301   Ean := TEan.Create;
    302   Ean.Number := Number;
    303   Ean.Owner := Owner;
    304   Ean.Kind := Kind;
    305 
    306   Values := TDictionary<TDateTime, TEanValue>.Create;
    307   for E := 0 to Eans.Count - 1 do
    308   if Eans[E].Kind = Kind then begin
    309     for I := 0 to Eans[E].Values.Count - 1 do begin
    310       if Values.TryGetValue(Eans[E].Values[I].Time, Value) then begin
    311         Value.ValueIn := Value.ValueIn + Eans[E].Values[I].ValueIn;
    312         Value.ValueOut := Value.ValueOut + Eans[E].Values[I].ValueOut;
    313         Values[Eans[E].Values[I].Time] := Value;
    314       end else begin
    315         Values.Add(Eans[E].Values[I].Time, TEanValue.Create(0, Eans[E].Values[I].ValueIn, Eans[E].Values[I].ValueOut));
    316       end;
    317     end;
    318   end;
    319 
    320   ValuesArray := Values.ToArray;
    321   for I := 0 to Values.Count - 1 do begin
    322     Ean.Values.Add(TEanValue.Create(ValuesArray[I].Key, ValuesArray[I].Value.ValueIn, ValuesArray[I].Value.ValueOut));
    323   end;
    324   Ean.Values.Sort(TComparer<TEanValue>.Construct(Ean.Values.Comparer));
    325 
    326   Values.Free;
    327 
    328   Eans.Add(Ean);
    329 end;
    330 
    331279procedure TFormMain.Report;
    332280var
     
    337285  try
    338286    Memo1.Lines.Clear;
    339     for I := 0 to Eans.Count - 1 do begin
    340       Memo1.Lines.Add(SEAN + ': ' + Eans[I].Number);
    341       Memo1.Lines.Add(SOwner + ': ' + Eans[I].Owner);
    342       TotalIn := Eans[I].GetTotalIn(IntervalFrom, IntervalTo);
    343       TotalOut := Eans[I].GetTotalOut(IntervalFrom, IntervalTo);
     287    for I := 0 to EdcProject.Eans.Count - 1 do
     288    with EdcProject.Eans[I] do begin
     289      Memo1.Lines.Add(SEAN + ': ' + Number);
     290      Memo1.Lines.Add(SOwner + ': ' + Owner);
     291      TotalIn := GetTotalIn(IntervalFrom, IntervalTo);
     292      TotalOut := GetTotalOut(IntervalFrom, IntervalTo);
    344293      Memo1.Lines.Add(SMeasured + ': ' + IntToStr(Trunc(TotalIn)));
    345294      Memo1.Lines.Add(SResult + ': ' + IntToStr(Trunc(TotalOut)));
    346295      if TotalIn <> 0 then
    347       Memo1.Lines.Add(SShared + ': ' + IntToStr(Trunc(Eans[I].GetShared(IntervalFrom, IntervalTo))) + ' %');
     296      Memo1.Lines.Add(SShared + ': ' + IntToStr(Trunc(GetShared(IntervalFrom, IntervalTo))) + ' %');
    348297      Memo1.Lines.Add('');
    349298    end;
     
    361310  try
    362311    ListView1.Items.Clear;
    363     for I := 0 to Eans.Count - 1 do
    364     with Eans[I] do begin
     312    for I := 0 to EdcProject.Eans.Count - 1 do
     313    with EdcProject.Eans[I] do begin
    365314      ListItem := ListView1.Items.Add;
    366315      ListItem.Caption := Number;
     
    401350      ListView2.EndUpdate;
    402351    end;
    403   end;
    404 end;
    405 
    406 procedure TFormMain.LoadOwners(FileName: string);
    407 var
    408   Ean: TEan;
    409   Doc: TXMLDocument;
    410   RootNode: TDOMNode;
    411   NewNode: TDOMNode;
    412   Node2: TDOMNode;
    413 const
    414   EdcProjectName = 'EdcProject';
    415   EansName = 'Eans';
    416   EanName = 'Ean';
    417 begin
    418   ReadXMLFile(Doc, FileName);
    419   Eans.Clear;
    420   with Doc do
    421   try
    422     if Doc.DocumentElement.NodeName <> EdcProjectName then
    423       raise Exception.Create(SWrongFileFormat);
    424     RootNode := Doc.DocumentElement;
    425 
    426     NewNode := RootNode.FindNode(EansName);
    427     if Assigned(NewNode) then begin
    428       Node2 := NewNode.FirstChild;
    429       while Assigned(Node2) and (Node2.NodeName = EanName) do begin
    430         Ean := TEan.Create;
    431         Ean.Number := ReadString(Node2, 'Number', '');
    432         Ean.Owner := ReadString(Node2, 'Owner', '');
    433         Ean.DistributionTariff := ReadString(Node2, 'DistributionTariff', '');
    434         Ean.PriceLow := ReadDouble(Node2, 'PriceLow', 0);
    435         Ean.PriceHigh := ReadDouble(Node2, 'PriceHigh', 0);
    436         Ean.PriceSpot := ReadDouble(Node2, 'PriceSpot', 0);
    437         Eans.Add(Ean);
    438         Node2 := Node2.NextSibling;
    439       end;
    440     end;
    441   finally
    442     FreeAndNil(Doc);
    443   end;
    444 end;
    445 
    446 procedure TFormMain.LoadEdcReport(FileName: string);
    447 var
    448   R: Integer;
    449   C: Integer;
    450   CSVDoc: TCSVDocument;
    451   TimeFrom: TDateTime;
    452   TimeTo: TDateTime;
    453   CellValueIn: Double;
    454   CellValueOut: Double;
    455   Ean: TEan;
    456   EanKind: TEanKind;
    457   Number: string;
    458   BufferedFileStream: TBufferedFileStream;
    459 begin
    460   CSVDoc := TCSVDocument.Create;
    461   try
    462     CSVDoc.Delimiter := ';';
    463     //BufferedFileStream := TBufferedFileStream.Create(FileName, fmOpenRead);
    464     //CSVDoc.LoadFromStream(BufferedFileStream);
    465     CSVDoc.LoadFromFile(FileName);
    466     //BufferedFileStream.Free;
    467 
    468     for C := 0 to ((CSVDoc.ColCount[0] - 3) div 2) - 1 do begin
    469       Number := CSVDoc.Cells[3 + C * 2, 0];
    470       if Copy(Number, 1, 3) = 'IN-' then Number := Copy(Number, 4, MaxInt);
    471       if Copy(Number, 1, 4) = 'OUT-' then Number := Copy(Number, 5, MaxInt);
    472       if Copy(Number, Length(Number) - 1, 2) = '-D' then begin
    473         EanKind := ekSupply;
    474         Number := Copy(Number, 1, Length(Number) - 2);
    475       end;
    476       if Copy(Number, Length(Number) - 1, 2) = '-O' then begin
    477         EanKind := ekConsumption;
    478         Number := Copy(Number, 1, Length(Number) - 2);
    479       end;
    480       Ean := Eans.SearchByNumber(Number);
    481       if not Assigned(Ean) then begin
    482         Ean := TEan.Create;
    483         Ean.Number := Number;
    484         Eans.Add(Ean);
    485       end;
    486       Ean.Kind := EanKind;
    487 
    488       for R := 1 to CSVDoc.RowCount - 1 do begin
    489         TimeFrom := StrToDate(CSVDoc.Cells[0, R]) + StrToTime(CSVDoc.Cells[1, R]);
    490         TimeTo := StrToDate(CSVDoc.Cells[0, R]) + StrToTime(CSVDoc.Cells[2, R]);
    491 
    492         CellValueIn := 0;
    493         if TryStrToFloat(CSVDoc.Cells[3 + C * 2, R], CellValueIn) then begin
    494           if EanKind = ekConsumption then CellValueIn := -CellValueIn;
    495         end;
    496 
    497         CellValueOut := 0;
    498         if TryStrToFloat(CSVDoc.Cells[3 + C * 2 + 1, R], CellValueOut) then begin
    499           if EanKind = ekConsumption then CellValueOut := -CellValueOut;
    500         end;
    501 
    502         Ean.Values.Add(TEanValue.Create(TimeFrom, CellValueIn, CellValueOut));
    503       end;
    504     end;
    505   finally
    506     CSVDoc.Free;
    507352  end;
    508353end;
  • trunk/Languages/EdcStats.cs.po

    r5 r6  
    2020msgstr "Výrobní"
    2121
     22#: edcproject.stotalconsumtion
     23msgctxt "edcproject.stotalconsumtion"
     24msgid "Total consumption"
     25msgstr "Celková spotřeba"
     26
     27#: edcproject.stotalsupply
     28msgctxt "edcproject.stotalsupply"
     29msgid "Total supply"
     30msgstr "Celková výroba"
     31
     32#: edcproject.swrongfileformat
     33msgctxt "edcproject.swrongfileformat"
     34msgid "Wrong file format"
     35msgstr "Špatný formát souboru"
     36
    2237#: formmain.sday
    2338msgctxt "formmain.sday"
     
    5368msgstr "Sdíleno"
    5469
    55 #: formmain.stotalconsumtion
    56 msgid "Total consumption"
    57 msgstr "Celková spotřeba"
    58 
    59 #: formmain.stotalsupply
    60 msgid "Total supply"
    61 msgstr "Celková výroba"
    62 
    6370#: formmain.sweek
    6471msgid "Week"
    6572msgstr "Týden"
    6673
    67 #: formmain.swrongfileformat
    68 msgid "Wrong file format"
    69 msgstr ""
    70 
    7174#: formmain.syear
    7275msgid "Year"
     
    8083msgid ">"
    8184msgstr ">"
    82 
    83 #: tformmain.buttonload.caption
    84 msgid "Load"
    85 msgstr "Načíst"
    8685
    8786#: tformmain.caption
     
    156155#: tformmain.listview1.columns[6].caption
    157156msgid "Low price"
    158 msgstr ""
     157msgstr "Nízka cena"
    159158
    160159#: tformmain.listview1.columns[7].caption
    161160msgid "High price"
    162 msgstr ""
     161msgstr "Vysoká cena"
    163162
    164163#: tformmain.listview1.columns[8].caption
    165164msgid "Spot price"
    166 msgstr ""
     165msgstr "Spotová cena"
    167166
    168167#: tformmain.listview2.columns[0].caption
     
    181180msgstr "Sdíleno [%]"
    182181
     182#: tformmain.menuitem1.caption
     183msgid "Tools"
     184msgstr "Nástroje"
     185
     186#: tformmain.menuitem2.caption
     187msgid "Load reports"
     188msgstr "Načíst reporty"
     189
     190#: tformmain.menuitem3.caption
     191msgid "Load spot prices"
     192msgstr "Načíst spotové ceny"
     193
    183194#: tformmain.tabsheetchart.caption
    184195msgid "Chart"
     
    197208msgid "Overview"
    198209msgstr "Přehled"
    199 
  • trunk/Languages/EdcStats.pot

    r5 r6  
    88#: ean.ssupply
    99msgid "Supply"
     10msgstr ""
     11
     12#: edcproject.stotalconsumtion
     13msgctxt "edcproject.stotalconsumtion"
     14msgid "Total consumption"
     15msgstr ""
     16
     17#: edcproject.stotalsupply
     18msgctxt "edcproject.stotalsupply"
     19msgid "Total supply"
     20msgstr ""
     21
     22#: edcproject.swrongfileformat
     23msgctxt "edcproject.swrongfileformat"
     24msgid "Wrong file format"
    1025msgstr ""
    1126
     
    4358msgstr ""
    4459
    45 #: formmain.stotalconsumtion
    46 msgid "Total consumption"
    47 msgstr ""
    48 
    49 #: formmain.stotalsupply
    50 msgid "Total supply"
    51 msgstr ""
    52 
    5360#: formmain.sweek
    5461msgid "Week"
    5562msgstr ""
    5663
    57 #: formmain.swrongfileformat
    58 msgid "Wrong file format"
    59 msgstr ""
    60 
    6164#: formmain.syear
    6265msgid "Year"
     
    6972#: tformmain.buttonintervalright.caption
    7073msgid ">"
    71 msgstr ""
    72 
    73 #: tformmain.buttonload.caption
    74 msgid "Load"
    7574msgstr ""
    7675
     
    171170msgstr ""
    172171
     172#: tformmain.menuitem1.caption
     173msgid "Tools"
     174msgstr ""
     175
     176#: tformmain.menuitem2.caption
     177msgid "Load reports"
     178msgstr ""
     179
     180#: tformmain.menuitem3.caption
     181msgid "Load spot prices"
     182msgstr ""
     183
    173184#: tformmain.tabsheetchart.caption
    174185msgid "Chart"
  • trunk/Packages/Common/XML.pas

    r5 r6  
    2323procedure ReadXMLFileParser(out Doc: TXMLDocument; FileName: string);
    2424
    25 
    26 implementation
    27 
    2825var
    2926  XmlFormatSettings: TFormatSettings = (
     
    3734    ListSeparator: ',';
    3835    CurrencyString: '$';
    39     ShortDateFormat: 'd/m/y';
     36    ShortDateFormat: 'yyyy-mm-dd';
    4037    LongDateFormat: 'dd" "mmmm" "yyyy';
    4138    TimeAMString: 'AM';
     
    5148    TwoDigitYearCenturyWindow: 50;
    5249  );
     50
     51
     52implementation
    5353
    5454function ReadDouble(Node: TDOMNode; Name: string; DefaultValue: Double): Double;
  • trunk/Packages/CoolStreaming

    • Property svn:ignore set to
      lib
Note: See TracChangeset for help on using the changeset viewer.