Changeset 5 for trunk


Ignore:
Timestamp:
Apr 13, 2026, 9:08:21 AM (2 weeks ago)
Author:
chronos
Message:
  • Modified: Load Owners from XML file with additional information about prices.
Location:
trunk
Files:
13 added
11 edited

Legend:

Unmodified
Added
Removed
  • trunk/Ean.pas

    r3 r5  
    3131    Number: string;
    3232    Owner: string;
     33    DistributionTariff: string;
     34    PriceLow: Double;
     35    PriceHigh: Double;
     36    PriceSpot: Double;
    3337    Values: TEanValues;
    3438    Kind: TEanKind;
  • trunk/EdcStats.lpi

    r1 r5  
    5959        </CompilerOptions>
    6060      </Item>
     61      <SharedMatrixOptions Count="2">
     62        <Item1 ID="360354175411" Targets="CoolStreaming,csvdocument,Common" Modes="Debug" Value="-g -gl -gh -CirotR -O1"/>
     63        <Item2 ID="906254739821" Targets="CoolStreaming,csvdocument,Common" Modes="Release" Value="-CX -XX -O3"/>
     64      </SharedMatrixOptions>
    6165    </BuildModes>
    6266    <PublishOptions>
     
    6872    </RunParams>
    6973    <RequiredPackages>
     74      <Item>
     75        <PackageName Value="CoolStreaming"/>
     76        <DefaultFilename Value="Packages/CoolStreaming/CoolStreaming.lpk" Prefer="True"/>
     77      </Item>
    7078      <Item>
    7179        <PackageName Value="Common"/>
  • trunk/EdcStats.lpr

    r1 r5  
    99  {$ENDIF}
    1010  Interfaces, // this includes the LCL widgetset
    11   Forms, tachartlazaruspkg, FormMain, csvdocument_package, Ean, CommonPackage
     11  Forms, tachartlazaruspkg, FormMain, csvdocument_package, Ean, CommonPackage,
     12  CoolStreaming
    1213  { you can add units after this };
    1314
  • trunk/FormMain.lfm

    r4 r5  
    11object FormMain: TFormMain
    2   Left = 377
     2  Left = 372
    33  Height = 884
    4   Top = 371
     4  Top = 366
    55  Width = 1203
    66  Caption = 'EDC Stats'
     
    2727    Top = 64
    2828    Width = 1176
    29     ActivePage = TabSheetChart
     29    ActivePage = TabSheetOverview
    3030    Anchors = [akTop, akLeft, akRight, akBottom]
    31     TabIndex = 2
     31    TabIndex = 0
    3232    TabOrder = 1
    3333    object TabSheetOverview: TTabSheet
     
    6262          item
    6363            Caption = 'Shared [%]'
    64             Width = 635
     64            Width = 100
    6565          end       
    6666          item
    6767            Caption = 'Kind'
     68            Width = 100
     69          end       
     70          item
     71            Caption = 'Low price'
     72            Width = 100
     73          end       
     74          item
     75            Caption = 'High price'
     76            Width = 100
     77          end       
     78          item
     79            Caption = 'Spot price'
     80            Width = 135
    6881          end>
    6982        ReadOnly = True
  • trunk/FormMain.lrj

    r4 r5  
    99{"hash":145998637,"name":"tformmain.listview1.columns[4].caption","sourcebytes":[83,104,97,114,101,100,32,91,37,93],"value":"Shared [%]"},
    1010{"hash":335940,"name":"tformmain.listview1.columns[5].caption","sourcebytes":[75,105,110,100],"value":"Kind"},
     11{"hash":158850293,"name":"tformmain.listview1.columns[6].caption","sourcebytes":[76,111,119,32,112,114,105,99,101],"value":"Low price"},
     12{"hash":175333445,"name":"tformmain.listview1.columns[7].caption","sourcebytes":[72,105,103,104,32,112,114,105,99,101],"value":"High price"},
     13{"hash":108144885,"name":"tformmain.listview1.columns[8].caption","sourcebytes":[83,112,111,116,32,112,114,105,99,101],"value":"Spot price"},
    1114{"hash":21335,"name":"tformmain.tabsheetlog.caption","sourcebytes":[76,111,103],"value":"Log"},
    1215{"hash":4843668,"name":"tformmain.tabsheetchart.caption","sourcebytes":[67,104,97,114,116],"value":"Chart"},
  • trunk/FormMain.pas

    r4 r5  
    77  EditBtn, TAGraph, TASeries, Generics.Collections, Generics.Defaults,
    88  DateUtils, Ean, Translator, ApplicationInfo, RegistryEx, PersistentForm,
    9   Theme, Common;
     9  Theme, Common, XML, DOM, XMLRead, XMLWrite;
    1010
    1111type
     
    110110
    111111uses
    112   csvdocument;
     112  csvdocument, BufferedFileStream;
    113113
    114114resourcestring
     
    124124  SMonth = 'Month';
    125125  SYear = 'Year';
     126  SWrongFileFormat = 'Wrong file format';
    126127
    127128{ TFormMain }
     
    140141
    141142  Reports := TStringList.Create;
    142   SearchFiles(Reports, ReportsDir, FileNameFilter);
    143   for I := 0 to Reports.Count - 1 do
    144     LoadEdcReport(Reports[I]);
    145   Reports.Free;
     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;
    146150
    147151  for I := 0 to Eans.Count - 1 do
     
    151155  CreateEan('', STotalConsumtion, ekConsumption);
    152156
    153   IntervalTo := Eans[0].Values.Last.Time + 15 * OneMinute;
     157  if (Eans.Count > 0) and (Eans[0].Values.Count > 0) then
     158    IntervalTo := Eans[0].Values.Last.Time + 15 * OneMinute;
    154159  UpdateInterval;
    155160  UpdateInterface;
     
    356361  try
    357362    ListView1.Items.Clear;
    358     for I := 0 to Eans.Count - 1 do begin
     363    for I := 0 to Eans.Count - 1 do
     364    with Eans[I] do begin
    359365      ListItem := ListView1.Items.Add;
    360       ListItem.Caption := Eans[I].Number;
    361       ListItem.SubItems.Add(Eans[I].Owner);
    362       ListItem.SubItems.Add(MeasureToStr(Eans[I].GetTotalIn(IntervalFrom, IntervalTo)));
    363       ListItem.SubItems.Add(MeasureToStr(Eans[I].GetTotalOut(IntervalFrom, IntervalTo)));
    364       ListItem.SubItems.Add(IntToStr(Trunc(Eans[I].GetShared(IntervalFrom, IntervalTo))));
    365       ListItem.SubItems.Add(EanKindText[Eans[I].Kind]);
     366      ListItem.Caption := Number;
     367      ListItem.SubItems.Add(Owner);
     368      ListItem.SubItems.Add(MeasureToStr(GetTotalIn(IntervalFrom, IntervalTo)));
     369      ListItem.SubItems.Add(MeasureToStr(GetTotalOut(IntervalFrom, IntervalTo)));
     370      ListItem.SubItems.Add(IntToStr(Trunc(GetShared(IntervalFrom, IntervalTo))));
     371      ListItem.SubItems.Add(EanKindText[Kind]);
     372      ListItem.SubItems.Add(FloatToStr(PriceLow));
     373      ListItem.SubItems.Add(FloatToStr(PriceHigh));
     374      ListItem.SubItems.Add(FloatToStr(PriceSpot));
    366375    end;
    367376  finally
     
    397406procedure TFormMain.LoadOwners(FileName: string);
    398407var
    399   Owners: TStringList;
    400408  Ean: TEan;
    401   I: Integer;
    402 begin
    403   Owners := TStringList.Create;
    404   Owners.LoadFromFile(FileName);
     409  Doc: TXMLDocument;
     410  RootNode: TDOMNode;
     411  NewNode: TDOMNode;
     412  Node2: TDOMNode;
     413const
     414  EdcProjectName = 'EdcProject';
     415  EansName = 'Eans';
     416  EanName = 'Ean';
     417begin
     418  ReadXMLFile(Doc, FileName);
    405419  Eans.Clear;
    406   for I := 0 to Owners.Count - 1 do begin
    407     Ean := TEan.Create;
    408     Ean.Number := Owners.Names[I];
    409     Ean.Owner := Owners.ValueFromIndex[I];
    410     Eans.Add(Ean);
    411   end;
    412   Owners.Free;
     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;
    413444end;
    414445
     
    425456  EanKind: TEanKind;
    426457  Number: string;
     458  BufferedFileStream: TBufferedFileStream;
    427459begin
    428460  CSVDoc := TCSVDocument.Create;
    429461  try
    430462    CSVDoc.Delimiter := ';';
     463    //BufferedFileStream := TBufferedFileStream.Create(FileName, fmOpenRead);
     464    //CSVDoc.LoadFromStream(BufferedFileStream);
    431465    CSVDoc.LoadFromFile(FileName);
     466    //BufferedFileStream.Free;
    432467
    433468    for C := 0 to ((CSVDoc.ColCount[0] - 3) div 2) - 1 do begin
  • trunk/Languages/EdcStats.cs.po

    r4 r5  
    6464msgid "Week"
    6565msgstr "Týden"
     66
     67#: formmain.swrongfileformat
     68msgid "Wrong file format"
     69msgstr ""
    6670
    6771#: formmain.syear
     
    150154msgstr "Druh"
    151155
     156#: tformmain.listview1.columns[6].caption
     157msgid "Low price"
     158msgstr ""
     159
     160#: tformmain.listview1.columns[7].caption
     161msgid "High price"
     162msgstr ""
     163
     164#: tformmain.listview1.columns[8].caption
     165msgid "Spot price"
     166msgstr ""
     167
    152168#: tformmain.listview2.columns[0].caption
    153169msgctxt "tformmain.listview2.columns[0].caption"
     
    181197msgid "Overview"
    182198msgstr "Přehled"
     199
  • trunk/Languages/EdcStats.pot

    r4 r5  
    5353#: formmain.sweek
    5454msgid "Week"
     55msgstr ""
     56
     57#: formmain.swrongfileformat
     58msgid "Wrong file format"
    5559msgstr ""
    5660
     
    140144msgstr ""
    141145
     146#: tformmain.listview1.columns[6].caption
     147msgid "Low price"
     148msgstr ""
     149
     150#: tformmain.listview1.columns[7].caption
     151msgid "High price"
     152msgstr ""
     153
     154#: tformmain.listview1.columns[8].caption
     155msgid "Spot price"
     156msgstr ""
     157
    142158#: tformmain.listview2.columns[0].caption
    143159msgctxt "tformmain.listview2.columns[0].caption"
  • trunk/Packages/Common/XML.pas

    r1 r5  
    2626implementation
    2727
     28var
     29  XmlFormatSettings: TFormatSettings = (
     30    CurrencyFormat: 1;
     31    NegCurrFormat: 5;
     32    ThousandSeparator: ',';
     33    DecimalSeparator: '.';
     34    CurrencyDecimals: 2;
     35    DateSeparator: '-';
     36    TimeSeparator: ':';
     37    ListSeparator: ',';
     38    CurrencyString: '$';
     39    ShortDateFormat: 'd/m/y';
     40    LongDateFormat: 'dd" "mmmm" "yyyy';
     41    TimeAMString: 'AM';
     42    TimePMString: 'PM';
     43    ShortTimeFormat: 'hh:nn';
     44    LongTimeFormat: 'hh:nn:ss';
     45    ShortMonthNames: ('Jan','Feb','Mar','Apr','May','Jun',
     46                      'Jul','Aug','Sep','Oct','Nov','Dec');
     47    LongMonthNames: ('January','February','March','April','May','June',
     48                     'July','August','September','October','November','December');
     49    ShortDayNames: ('Sun','Mon','Tue','Wed','Thu','Fri','Sat');
     50    LongDayNames:  ('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday');
     51    TwoDigitYearCenturyWindow: 50;
     52  );
     53
    2854function ReadDouble(Node: TDOMNode; Name: string; DefaultValue: Double): Double;
    2955var
     
    3359  NewNode := Node.FindNode(DOMString(Name));
    3460  if Assigned(NewNode) then
    35     Result := StrToFloat(string(NewNode.TextContent));
     61    Result := StrToFloat(string(NewNode.TextContent), XmlFormatSettings);
    3662end;
    3763
  • trunk/Packages/csvdocument/csvdocument.pas

    r1 r5  
    9393
    9494  // Sequential input from CSV stream
     95
     96  { TCSVParser }
     97
    9598  TCSVParser = class(TCSVHandler)
    9699  private
  • trunk/Packages/csvdocument/csvdocument_package.lpk

    r1 r5  
    1 <?xml version="1.0"?>
     1<?xml version="1.0" encoding="UTF-8"?>
    22<CONFIG>
    3   <Package Version="3">
     3  <Package Version="5">
    44    <PathDelim Value="\"/>
    55    <Name Value="csvdocument_package"/>
     6    <AddToProjectUsesSection Value="True"/>
    67    <Author Value="Vladimir Zhirov"/>
    78    <CompilerOptions>
    8       <Version Value="10"/>
     9      <Version Value="11"/>
    910      <PathDelim Value="\"/>
    1011      <SearchPaths>
    11         <UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/>
     12        <UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)-$(BuildMode)"/>
    1213      </SearchPaths>
    1314      <Parsing>
    1415        <SyntaxOptions>
     16          <SyntaxMode Value="Delphi"/>
    1517          <CStyleOperator Value="False"/>
     18          <AllowLabel Value="False"/>
     19          <CPPInline Value="False"/>
    1620        </SyntaxOptions>
    1721      </Parsing>
    1822      <CodeGeneration>
    1923        <SmartLinkUnit Value="True"/>
    20         <Checks>
    21           <IOChecks Value="True"/>
    22           <RangeChecks Value="True"/>
    23           <OverflowChecks Value="True"/>
    24           <StackChecks Value="True"/>
    25         </Checks>
    2624        <Optimizations>
    27           <OptimizationLevel Value="2"/>
     25          <OptimizationLevel Value="0"/>
    2826        </Optimizations>
    2927      </CodeGeneration>
    3028      <Linking>
    3129        <Debugging>
     30          <GenerateDebugInfo Value="False"/>
    3231          <UseLineInfoUnit Value="False"/>
    3332        </Debugging>
    3433      </Linking>
    35       <Other>
    36         <CustomOptions Value="-al"/>
    37         <CompilerPath Value="$(CompPath)"/>
    38       </Other>
    3934    </CompilerOptions>
    4035    <Description Value="CsvDocument library is a unit contaning set of classes for CSV files handling."/>
     
    4742      </Item1>
    4843    </Files>
     44    <CompatibilityMode Value="True"/>
    4945    <RequiredPkgs Count="1">
    5046      <Item1>
Note: See TracChangeset for help on using the changeset viewer.