unit klausur011; //21.03.2019
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ComCtrls,
Buttons, Grids, StdCtrls;
type
{ TForm1 }
TForm1 = class(TForm)
ComboBox1: TComboBox;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
ListBox1: TListBox;
M_menge: TLabel;
Label2: TLabel;
K_menge: TLabel;
Label3: TLabel;
sanzahl: TLabel;
schliess_knopf: TButton;
einlesen_knopf: TButton;
Label1: TLabel;
oeffnen_knopf: TButton;
ende_knopf: TBitBtn;
fuss: TStatusBar;
OpenDialog: TOpenDialog;
etabelle: TStringGrid;
procedure beenden(Sender: TObject);
procedure einlesen(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure schliessen(Sender: TObject);
end;
var Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
Type TFeld= array [0..1000] of string;
var k:integer;
datei_name: string;
datei: textfile;
element:TFeld;
procedure TForm1.FormShow(Sender: TObject);
begin
datei_name:='d:\temp\windenergie01.csv';
with etabelle do
begin
Cells[1,0]:='Standort';
Cells[2,0]:='Windrad';
Cells[3,0]:='Nennleistung';
Cells[4,0]:='Datum';
Cells[5,0]:='Energiemenge';
end;
//
end;
procedure TForm1.schliessen(Sender: TObject);
begin
//
end;
procedure TForm1.beenden(Sender: TObject);
begin
close;
end;
procedure TForm1.einlesen(Sender: TObject);
var i,posi,anzahl: integer;
wert,menge: double;
buffer,eintrag,s1,s2,s3,s4,s5,s6,d1: string; stringlist:TStringList;
ok:boolean;
begin
with opendialog do
begin
title:='Windenergie einlesen';
filename:=datei_name;
initialdir:=extractfilepath(datei_name);
filter:='Windenergieergebnisse (*.csv)|*.csv|alle Dateien (*.*)|*.*';
end;
//-------------------------------------------------------------------------------
if opendialog.execute then
begin
datei_name:=opendialog.filename;
assignfile(datei,datei_name);
{$I-}
reset(datei);
readln(datei);
i:=0; menge:=0.0; anzahl:=0;
while not(eof(datei)) do
begin
inc(i);
readln(datei,eintrag);
//Suedkueste,ElCedro2,3.4MW,01.02.2017,4092kWh
posi:=pos(',',eintrag);
s1:=copy(eintrag,1,posi-1);
delete(eintrag,1,posi);
//ElCedro2,3.4MW,01.02.2017,4092kWh
posi:=pos(',',eintrag);
s2:=copy(eintrag,1,posi-1);
delete(eintrag,1,posi);
//3.4MW,01.02.2017,4092kWh
posi:=pos(',',eintrag);
s3:=copy(eintrag,1,posi-1);
delete(eintrag,1,posi);
//01.02.2017,4092kWh
posi:=pos(',',eintrag);
s4:=copy(eintrag,1,posi-1);
delete(eintrag,1,posi);
//4092kWh
s5:=eintrag;
//Energiemenge berechnen in kWh
posi:=Pos('k',s5);
s6:=Copy(s5,1,posi-1);
menge:=menge+strtofloat(s6);
K_menge.Caption:=Floattostr(menge);
//Energie menge in nWh
wert:=menge/1000;
M_menge.caption:=Floattostr(wert);
//Tabellenausgabe
with etabelle do
begin
if i>=rowcount then rowcount:=rowcount+1;
cells[0,i]:=inttostr(i);
cells[1,i]:=s1; element[i]:=s1; // in feld speichern
cells[2,i]:=s2;
cells[3,i]:=s3;
cells[4,i]:=s4;
cells[5,i]:=s5;
end; //etabelle
//standortname in combobox schreiben
stringlist:=TStringList.Create;
//stringlist.Sorted:=true;
//stringlist.Duplicates:=dupIgnore;
with stringlist do
begin
for i:=1 to anzahl do
Add(element[i]);
end;
with combobox1 do
begin
Assign(stringlist);
end;
stringlist.free;
//zeilenanzahl ermitteln
inc(anzahl);
sanzahl.caption:=inttostr(anzahl);
//-----------------------
fuss.Panels[0].Text:=datei_name;
closefile(datei);
{$I+}
end; // hier ist die while schleife
ok:=(ioresult=0);
end; //opendlg
end; // begin block
end.