summaryrefslogtreecommitdiff
path: root/integriere.pas
blob: 71a0d184c99dd37f0905509d9f875e9224b83f96 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
program integriere;

uses
  sysUtils, lowlevelunit;

var
  Kanal,momentan: integer;
  Grenzen:        array of extended;
  Datei:          textFile;
  s:              ansistring;
  x,y:            extended;

begin

  if (paramcount<>3)
  or not fileExists(paramstr(1))
  or not fileExists(paramstr(2)) then begin
    writeln('Usage: '+paramstr(0)+' Lineout.csv Harmonischengrenzen.csv Kanal');
    halt(1);
  end;

  Kanal:=strToInt(paramstr(3));

  setLength(Grenzen,0);
  assignFile(Datei, paramstr(2));
  reset(Datei);
  while not eof(Datei) do begin
    readln(Datei, s);
    if erstesArgument(s)<>intToStr(Kanal) then
      continue;
    setLength(Grenzen, length(Grenzen)+1);
    Grenzen[length(Grenzen)-1]:=strToFloat(s);
  end;
  closeFile(Datei);

  y:=0;
  momentan:=0;
  assignFile(Datei, paramstr(1));
  reset(Datei);
  while not eof(Datei) do begin
    readln(Datei,s);
    x:=strToFloat(erstesArgument(s));
    if (momentan<length(Grenzen)) and (x>Grenzen[momentan]) then begin
      writeln(intToStr(momentan),' ',myFloatToStr(y));
      inc(momentan);
      y:=0;
    end;
    erstesArgument(s);
    y:=y+strToFloat(s);
  end;
  closeFile(Datei);
  writeln(intToStr(momentan),' ',myFloatToStr(y));

end.