- Timestamp:
- Apr 13, 2026, 2:01:36 PM (2 weeks ago)
- Location:
- trunk
- Files:
-
- 2 added
- 10 edited
-
Ean.pas (modified) (6 diffs)
-
EdcProject.pas (added)
-
EdcStats.lpi (modified) (1 diff)
-
EdcStats.lpr (modified) (1 diff)
-
FormMain.lfm (modified) (11 diffs)
-
FormMain.lrj (modified) (2 diffs)
-
FormMain.pas (modified) (18 diffs)
-
Languages/EdcStats.cs.po (modified) (6 diffs)
-
Languages/EdcStats.pot (modified) (4 diffs)
-
Packages/Common/XML.pas (modified) (3 diffs)
-
Packages/CoolStreaming (modified) (1 prop)
-
SpotPrice.pas (added)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Ean.pas
r5 r6 4 4 5 5 uses 6 Classes, SysUtils, Generics.Collections, Generics.Defaults, DateUtils; 6 Classes, SysUtils, Generics.Collections, Generics.Defaults, DateUtils, DOM, 7 XML; 7 8 8 9 type … … 40 41 function GetTotalOut(TimeFrom, TimeTo: TDateTime): Double; 41 42 function GetShared(TimeFrom, TimeTo: TDateTime): Double; 43 procedure LoadFromXmlNode(Node: TDOMNode); 44 procedure SaveToXmlNode(Node: TDOMNode); 42 45 constructor Create; 43 46 destructor Destroy; override; … … 49 52 function SearchByNumber(Number: string): TEan; 50 53 procedure LoadToStrings(Strings: TStrings; AllowNone: Boolean = False); 54 procedure LoadFromXmlNode(Node: TDOMNode); 55 procedure SaveToXmlNode(Node: TDOMNode); 51 56 end; 52 57 … … 55 60 56 61 procedure Translate; 62 63 const 64 EansName = 'Eans'; 65 EanName = 'Ean'; 57 66 58 67 … … 121 130 if TotalIn <> 0 then Result := (1 - GetTotalOut(TimeFrom, TimeTo) / TotalIn) * 100 122 131 else Result := 0; 132 end; 133 134 procedure TEan.LoadFromXmlNode(Node: TDOMNode); 135 begin 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); 142 end; 143 144 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); 123 152 end; 124 153 … … 165 194 end; 166 195 196 procedure TEans.LoadFromXmlNode(Node: TDOMNode); 197 var 198 Node2: TDOMNode; 199 Ean: TEan; 200 begin 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; 208 end; 209 210 procedure TEans.SaveToXmlNode(Node: TDOMNode); 211 var 212 Node2: TDOMNode; 213 I: Integer; 214 begin 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; 220 end; 221 167 222 end. 168 223 -
trunk/EdcStats.lpi
r5 r6 107 107 <IsPartOfProject Value="True"/> 108 108 </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> 109 117 </Units> 110 118 </ProjectOptions> -
trunk/EdcStats.lpr
r5 r6 10 10 Interfaces, // this includes the LCL widgetset 11 11 Forms, tachartlazaruspkg, FormMain, csvdocument_package, Ean, CommonPackage, 12 CoolStreaming 12 CoolStreaming, EdcProject, SpotPrice 13 13 { you can add units after this }; 14 14 -
trunk/FormMain.lfm
r5 r6 8 8 ClientWidth = 1203 9 9 DesignTimePPI = 144 10 Menu = MainMenu1 10 11 LCLVersion = '4.6.0.0' 11 12 WindowState = wsMaximized … … 13 14 OnDestroy = FormDestroy 14 15 OnShow = FormShow 15 object ButtonLoad: TButton16 Left = 817 Height = 3818 Top = 1619 Width = 11320 Caption = 'Load'21 TabOrder = 022 OnClick = ButtonLoadClick23 end24 16 object PageControl1: TPageControl 25 17 Left = 16 26 Height = 81 127 Top = 6418 Height = 819 19 Top = 56 28 20 Width = 1176 29 21 ActivePage = TabSheetOverview 30 22 Anchors = [akTop, akLeft, akRight, akBottom] 31 23 TabIndex = 0 32 TabOrder = 124 TabOrder = 0 33 25 object TabSheetOverview: TTabSheet 34 26 Caption = 'Overview' 35 ClientHeight = 77 127 ClientHeight = 779 36 28 ClientWidth = 1166 37 29 OnShow = TabSheetOverviewShow 38 30 object ListView1: TListView 39 31 Left = 8 40 Height = 7 5532 Height = 763 41 33 Top = 8 42 34 Width = 1150 … … 88 80 object TabSheetLog: TTabSheet 89 81 Caption = 'Log' 90 ClientHeight = 77 182 ClientHeight = 779 91 83 ClientWidth = 1166 92 84 OnShow = TabSheetLogShow 93 85 object Memo1: TMemo 94 86 Left = 8 95 Height = 7 5587 Height = 763 96 88 Top = 8 97 89 Width = 1150 … … 104 96 object TabSheetChart: TTabSheet 105 97 Caption = 'Chart' 106 ClientHeight = 77 198 ClientHeight = 779 107 99 ClientWidth = 1166 108 100 OnShow = TabSheetChartShow … … 126 118 object Chart1: TChart 127 119 Left = 16 128 Height = 65 1120 Height = 659 129 121 Top = 104 130 122 Width = 1138 … … 220 212 object TabSheetData: TTabSheet 221 213 Caption = 'Data' 222 ClientHeight = 77 1214 ClientHeight = 779 223 215 ClientWidth = 1166 224 216 OnShow = TabSheetDataShow 225 217 object ListView2: TListView 226 218 Left = 16 227 Height = 6 88219 Height = 696 228 220 Top = 72 229 221 Width = 1144 … … 269 261 end 270 262 object ComboBoxPeriod: TComboBox 271 Left = 272263 Left = 104 272 264 Height = 38 273 Top = 16265 Top = 8 274 266 Width = 160 275 267 ItemHeight = 0 … … 282 274 ) 283 275 Style = csDropDownList 284 TabOrder = 2276 TabOrder = 1 285 277 Text = 'Day' 286 278 OnSelect = ComboBoxPeriodSelect 287 279 end 288 280 object Label2: TLabel 289 Left = 1 84281 Left = 16 290 282 Height = 26 291 Top = 24283 Top = 16 292 284 Width = 60 293 285 Caption = 'Period:' 294 286 end 295 287 object TimeEdit1: TTimeEdit 296 Left = 688288 Left = 520 297 289 Height = 43 298 Top = 16290 Top = 8 299 291 Width = 155 300 292 ButtonWidth = 34 301 293 NumGlyphs = 1 302 294 MaxLength = 0 303 TabOrder = 3295 TabOrder = 2 304 296 OnChange = TimeEdit1Change 305 297 end 306 298 object DateEdit1: TDateEdit 307 Left = 520299 Left = 352 308 300 Height = 43 309 Top = 16301 Top = 8 310 302 Width = 155 311 303 CalendarDisplaySettings = [dsShowHeadings, dsShowDayNames] … … 314 306 NumGlyphs = 1 315 307 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 = '>' 316 317 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 320 330 Left = 848 321 331 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 341 333 Width = 160 342 334 ItemHeight = 0 … … 348 340 ) 349 341 Style = csDropDownList 350 TabOrder = 7342 TabOrder = 6 351 343 OnSelect = ComboBoxUnitSelect 352 344 end 353 345 object Label5: TLabel 354 Left = 920346 Left = 752 355 347 Height = 26 356 Top = 24348 Top = 16 357 349 Width = 40 358 350 Caption = 'Unit:' … … 389 381 Top = 416 390 382 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 391 398 end -
trunk/FormMain.lrj
r5 r6 1 1 {"version":1,"strings":[ 2 2 {"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"},4 3 {"hash":214551207,"name":"tformmain.tabsheetoverview.caption","sourcebytes":[79,118,101,114,118,105,101,119],"value":"Overview"}, 5 4 {"hash":18782,"name":"tformmain.listview1.columns[0].caption","sourcebytes":[69,65,78],"value":"EAN"}, … … 27 26 {"hash":62,"name":"tformmain.buttonintervalright.caption","sourcebytes":[62],"value":">"}, 28 27 {"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"} 30 32 ]} -
trunk/FormMain.pas
r5 r6 5 5 uses 6 6 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, 8 8 DateUtils, Ean, Translator, ApplicationInfo, RegistryEx, PersistentForm, 9 Theme, Common, XML, DOM, XMLRead, XMLWrite;9 Theme, Common, XML, DOM, XMLRead, EdcProject; 10 10 11 11 type … … 20 20 ButtonIntervalRight: TButton; 21 21 ButtonIntervalLeft: TButton; 22 ButtonLoad: TButton;23 22 Chart1: TChart; 24 23 Chart1LineSeries1: TLineSeries; … … 44 43 ListView1: TListView; 45 44 ListView2: TListView; 45 MainMenu1: TMainMenu; 46 46 Memo1: TMemo; 47 MenuItem1: TMenuItem; 48 MenuItem2: TMenuItem; 49 MenuItem3: TMenuItem; 47 50 PageControl1: TPageControl; 48 51 PersistentForm1: TPersistentForm; … … 56 59 procedure ButtonIntervalLeftClick(Sender: TObject); 57 60 procedure ButtonIntervalRightClick(Sender: TObject); 58 procedure ButtonLoadClick(Sender: TObject);59 61 procedure CheckBoxShowResultChange(Sender: TObject); 60 62 procedure ComboBoxEanSelect(Sender: TObject); … … 65 67 procedure FormDestroy(Sender: TObject); 66 68 procedure FormShow(Sender: TObject); 69 procedure MenuItem2Click(Sender: TObject); 70 procedure MenuItem3Click(Sender: TObject); 67 71 procedure TabSheetOverviewShow(Sender: TObject); 68 72 procedure TabSheetChartShow(Sender: TObject); … … 72 76 procedure Translator1Translate(Sender: TObject); 73 77 private 74 Eans: TEans;75 78 IntervalFrom: TDateTime; 76 79 IntervalTo: TDateTime; … … 80 83 OwnersFileName: string; 81 84 ShowResult: Boolean; 82 function FileNameFilter(FileName: string): Boolean; 85 EdcProject: TEdcProject; 86 procedure LoadReports; 83 87 function MeasureToFloat(Value: Double; Interval: Double): Double; 84 88 function MeasureToStr(Value: Double): string; 85 procedure CreateEan(Number, Owner: string; Kind: TEanKind);86 89 procedure LoadConfig; 87 90 procedure Report; 88 91 procedure ReloadListViewOverview; 89 92 procedure ReloadListViewData; 90 procedure LoadOwners(FileName: string);91 procedure LoadEdcReport(FileName: string);92 93 procedure ReloadChart; 93 94 function GetIntervalLength: TDateTime; … … 113 114 114 115 resourcestring 115 STotalSupply = 'Total supply';116 STotalConsumtion = 'Total consumption';117 116 SEAN = 'EAN'; 118 117 SOwner = 'Owner'; … … 124 123 SMonth = 'Month'; 125 124 SYear = 'Year'; 126 SWrongFileFormat = 'Wrong file format';127 125 128 126 { TFormMain } 129 130 function TFormMain.FileNameFilter(FileName: string): Boolean;131 begin132 Result := ExtractFileExt(FileName) = '.csv';133 end;134 135 procedure TFormMain.ButtonLoadClick(Sender: TObject);136 var137 Reports: TStringList;138 I: Integer;139 begin140 LoadOwners(OwnersFileName);141 142 Reports := TStringList.Create;143 try144 SearchFiles(Reports, ReportsDir, FileNameFilter);145 for I := 0 to Reports.Count - 1 do146 LoadEdcReport(Reports[I]);147 finally148 Reports.Free;149 end;150 151 for I := 0 to Eans.Count - 1 do152 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) then158 IntervalTo := Eans[0].Values.Last.Time + 15 * OneMinute;159 UpdateInterval;160 UpdateInterface;161 end;162 127 163 128 procedure TFormMain.CheckBoxShowResultChange(Sender: TObject); … … 212 177 begin 213 178 PageControl1.TabIndex := 0; 214 E ans := TEans.Create;179 EdcProject := TEdcProject.Create; 215 180 LoadConfig; 216 181 end; … … 219 184 begin 220 185 SaveConfig; 221 FreeAndNil(E ans);186 FreeAndNil(EdcProject); 222 187 end; 223 188 224 189 procedure TFormMain.FormShow(Sender: TObject); 225 190 begin 226 ButtonLoadClick(nil); 191 LoadReports; 192 end; 193 194 procedure TFormMain.MenuItem2Click(Sender: TObject); 195 begin 196 LoadReports; 197 end; 198 199 procedure TFormMain.MenuItem3Click(Sender: TObject); 200 begin 201 EdcProject.SpotPrices.LoadSpotPrices(StrToDate('1.4.2026')); 227 202 end; 228 203 … … 234 209 procedure TFormMain.TabSheetChartShow(Sender: TObject); 235 210 begin 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); 240 216 ReloadChart; 241 217 end; … … 243 219 procedure TFormMain.TabSheetDataShow(Sender: TObject); 244 220 begin 245 E ans.LoadToStrings(ComboBoxEanData.Items);221 EdcProject.Eans.LoadToStrings(ComboBoxEanData.Items); 246 222 if (ComboBoxEanData.Items.Count > 0) and (ComboBoxEanData.ItemIndex = -1) then 247 223 ComboBoxEanData.ItemIndex := 0; … … 272 248 ComboBoxPeriod.Items[Integer(prYear)] := SYear; 273 249 Ean.Translate; 250 end; 251 252 procedure TFormMain.LoadReports; 253 begin 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; 274 261 end; 275 262 … … 290 277 end; 291 278 292 procedure TFormMain.CreateEan(Number, Owner: string; Kind: TEanKind);293 var294 Ean: TEan;295 Values: TDictionary<TDateTime, TEanValue>;296 ValuesArray: TArray<TPair<TDateTime, TEanValue>>;297 I: Integer;298 E: Integer;299 Value: TEanValue;300 begin301 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 do308 if Eans[E].Kind = Kind then begin309 for I := 0 to Eans[E].Values.Count - 1 do begin310 if Values.TryGetValue(Eans[E].Values[I].Time, Value) then begin311 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 begin315 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 begin322 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 331 279 procedure TFormMain.Report; 332 280 var … … 337 285 try 338 286 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); 344 293 Memo1.Lines.Add(SMeasured + ': ' + IntToStr(Trunc(TotalIn))); 345 294 Memo1.Lines.Add(SResult + ': ' + IntToStr(Trunc(TotalOut))); 346 295 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))) + ' %'); 348 297 Memo1.Lines.Add(''); 349 298 end; … … 361 310 try 362 311 ListView1.Items.Clear; 363 for I := 0 to E ans.Count - 1 do364 with E ans[I] do begin312 for I := 0 to EdcProject.Eans.Count - 1 do 313 with EdcProject.Eans[I] do begin 365 314 ListItem := ListView1.Items.Add; 366 315 ListItem.Caption := Number; … … 401 350 ListView2.EndUpdate; 402 351 end; 403 end;404 end;405 406 procedure TFormMain.LoadOwners(FileName: string);407 var408 Ean: TEan;409 Doc: TXMLDocument;410 RootNode: TDOMNode;411 NewNode: TDOMNode;412 Node2: TDOMNode;413 const414 EdcProjectName = 'EdcProject';415 EansName = 'Eans';416 EanName = 'Ean';417 begin418 ReadXMLFile(Doc, FileName);419 Eans.Clear;420 with Doc do421 try422 if Doc.DocumentElement.NodeName <> EdcProjectName then423 raise Exception.Create(SWrongFileFormat);424 RootNode := Doc.DocumentElement;425 426 NewNode := RootNode.FindNode(EansName);427 if Assigned(NewNode) then begin428 Node2 := NewNode.FirstChild;429 while Assigned(Node2) and (Node2.NodeName = EanName) do begin430 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 finally442 FreeAndNil(Doc);443 end;444 end;445 446 procedure TFormMain.LoadEdcReport(FileName: string);447 var448 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 begin460 CSVDoc := TCSVDocument.Create;461 try462 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 begin469 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 begin473 EanKind := ekSupply;474 Number := Copy(Number, 1, Length(Number) - 2);475 end;476 if Copy(Number, Length(Number) - 1, 2) = '-O' then begin477 EanKind := ekConsumption;478 Number := Copy(Number, 1, Length(Number) - 2);479 end;480 Ean := Eans.SearchByNumber(Number);481 if not Assigned(Ean) then begin482 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 begin489 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 begin494 if EanKind = ekConsumption then CellValueIn := -CellValueIn;495 end;496 497 CellValueOut := 0;498 if TryStrToFloat(CSVDoc.Cells[3 + C * 2 + 1, R], CellValueOut) then begin499 if EanKind = ekConsumption then CellValueOut := -CellValueOut;500 end;501 502 Ean.Values.Add(TEanValue.Create(TimeFrom, CellValueIn, CellValueOut));503 end;504 end;505 finally506 CSVDoc.Free;507 352 end; 508 353 end; -
trunk/Languages/EdcStats.cs.po
r5 r6 20 20 msgstr "Výrobní" 21 21 22 #: edcproject.stotalconsumtion 23 msgctxt "edcproject.stotalconsumtion" 24 msgid "Total consumption" 25 msgstr "Celková spotřeba" 26 27 #: edcproject.stotalsupply 28 msgctxt "edcproject.stotalsupply" 29 msgid "Total supply" 30 msgstr "Celková výroba" 31 32 #: edcproject.swrongfileformat 33 msgctxt "edcproject.swrongfileformat" 34 msgid "Wrong file format" 35 msgstr "Špatný formát souboru" 36 22 37 #: formmain.sday 23 38 msgctxt "formmain.sday" … … 53 68 msgstr "Sdíleno" 54 69 55 #: formmain.stotalconsumtion56 msgid "Total consumption"57 msgstr "Celková spotřeba"58 59 #: formmain.stotalsupply60 msgid "Total supply"61 msgstr "Celková výroba"62 63 70 #: formmain.sweek 64 71 msgid "Week" 65 72 msgstr "Týden" 66 73 67 #: formmain.swrongfileformat68 msgid "Wrong file format"69 msgstr ""70 71 74 #: formmain.syear 72 75 msgid "Year" … … 80 83 msgid ">" 81 84 msgstr ">" 82 83 #: tformmain.buttonload.caption84 msgid "Load"85 msgstr "Načíst"86 85 87 86 #: tformmain.caption … … 156 155 #: tformmain.listview1.columns[6].caption 157 156 msgid "Low price" 158 msgstr " "157 msgstr "Nízka cena" 159 158 160 159 #: tformmain.listview1.columns[7].caption 161 160 msgid "High price" 162 msgstr " "161 msgstr "Vysoká cena" 163 162 164 163 #: tformmain.listview1.columns[8].caption 165 164 msgid "Spot price" 166 msgstr " "165 msgstr "Spotová cena" 167 166 168 167 #: tformmain.listview2.columns[0].caption … … 181 180 msgstr "Sdíleno [%]" 182 181 182 #: tformmain.menuitem1.caption 183 msgid "Tools" 184 msgstr "Nástroje" 185 186 #: tformmain.menuitem2.caption 187 msgid "Load reports" 188 msgstr "Načíst reporty" 189 190 #: tformmain.menuitem3.caption 191 msgid "Load spot prices" 192 msgstr "Načíst spotové ceny" 193 183 194 #: tformmain.tabsheetchart.caption 184 195 msgid "Chart" … … 197 208 msgid "Overview" 198 209 msgstr "Přehled" 199 -
trunk/Languages/EdcStats.pot
r5 r6 8 8 #: ean.ssupply 9 9 msgid "Supply" 10 msgstr "" 11 12 #: edcproject.stotalconsumtion 13 msgctxt "edcproject.stotalconsumtion" 14 msgid "Total consumption" 15 msgstr "" 16 17 #: edcproject.stotalsupply 18 msgctxt "edcproject.stotalsupply" 19 msgid "Total supply" 20 msgstr "" 21 22 #: edcproject.swrongfileformat 23 msgctxt "edcproject.swrongfileformat" 24 msgid "Wrong file format" 10 25 msgstr "" 11 26 … … 43 58 msgstr "" 44 59 45 #: formmain.stotalconsumtion46 msgid "Total consumption"47 msgstr ""48 49 #: formmain.stotalsupply50 msgid "Total supply"51 msgstr ""52 53 60 #: formmain.sweek 54 61 msgid "Week" 55 62 msgstr "" 56 63 57 #: formmain.swrongfileformat58 msgid "Wrong file format"59 msgstr ""60 61 64 #: formmain.syear 62 65 msgid "Year" … … 69 72 #: tformmain.buttonintervalright.caption 70 73 msgid ">" 71 msgstr ""72 73 #: tformmain.buttonload.caption74 msgid "Load"75 74 msgstr "" 76 75 … … 171 170 msgstr "" 172 171 172 #: tformmain.menuitem1.caption 173 msgid "Tools" 174 msgstr "" 175 176 #: tformmain.menuitem2.caption 177 msgid "Load reports" 178 msgstr "" 179 180 #: tformmain.menuitem3.caption 181 msgid "Load spot prices" 182 msgstr "" 183 173 184 #: tformmain.tabsheetchart.caption 174 185 msgid "Chart" -
trunk/Packages/Common/XML.pas
r5 r6 23 23 procedure ReadXMLFileParser(out Doc: TXMLDocument; FileName: string); 24 24 25 26 implementation27 28 25 var 29 26 XmlFormatSettings: TFormatSettings = ( … … 37 34 ListSeparator: ','; 38 35 CurrencyString: '$'; 39 ShortDateFormat: ' d/m/y';36 ShortDateFormat: 'yyyy-mm-dd'; 40 37 LongDateFormat: 'dd" "mmmm" "yyyy'; 41 38 TimeAMString: 'AM'; … … 51 48 TwoDigitYearCenturyWindow: 50; 52 49 ); 50 51 52 implementation 53 53 54 54 function ReadDouble(Node: TDOMNode; Name: string; DefaultValue: Double): Double; -
trunk/Packages/CoolStreaming
-
Property svn:ignore
set to
lib
-
Property svn:ignore
set to
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)