Habe es jetzt ersteinmal folgendermaßen zu lösen versucht (ohne Berechnung):
Delphi-Quellcode:
procedure ZehnMinTimerEvent(Sender: TObject);
var
Sek, Min, ZwSpeicher : TStringList;
DreiSek, ZehnMin, temp1, temp2 : string;
Spaltenanzahl, Zeilenanzahl,z,s : integer;
StringArray: array of array of string;
TestDatei : TFileStream;
begin
DreiSek := extractfilepath(application.exename)+'3sek_'+Kennung+'.txt';
ZehnMin := extractfilepath(application.exename)+'10min_'+Kennung+'.txt';
TestDatei := TFileStream.Create(ExtractFilePath(application.exename)+'test.txt', fmCreate);
Sek := TStringList.Create;
Min := TStringList.Create;
ZwSpeicher := TStringList.Create;
try
Sek.LoadFromFile(DreiSek);
Min.LoadFromFile(ZehnMin);
temp1 := Sek.Strings[Sek.Count-1];
temp2 := Min.Strings[Min.Count-1];
while Min.Count >= 2 do //maximal 1 Zeile + Header
Min.Delete(1);
if temp1 <> temp2 then
ZwSpeicher.Delimiter := #9;
if Sek.Count >= 2 then
begin
ZwSpeicher.DelimitedText := Sek.Strings[Sek.Count-1];
Spaltenanzahl := ZwSpeicher.Count-2; //ohne Datum und Uhrzeit
Zeilenanzahl := Sek.Count-1; //ohne Header
Setlength(StringArray,Spaltenanzahl,Zeilenanzahl);
for z := 0 to Zeilenanzahl-1 do
begin;
for s := 0 to Spaltenanzahl-2 do
begin
StringArray[s,z] := ZwSpeicher.Strings[s+2];
Temp := (StringArray[s,z]) + ';';
TestDatei.Write(PChar(Temp)^,Length(Temp));
end;
Temp := (StringArray[s,z]) + #13#10;
TestDatei.Write(PChar(Temp)^,Length(Temp));
end;
end;
end;
finally
TestDatei.Free;
ZwSpeicher.Free;
Min.Free;
Sek.Free;
end;
end;
Funktioniert an sich ganz gut, aber irgendetwas läuft da noch schief. Kommt eine neue Zeile in der 3SekDatei hinzu wird die im ZwSpeicher zu einer Spalte und sollte von dort ins Array und somit in die Test.txt geschrieben werden...In die Test.txt wird aber immer nur die neue Zeile geschrieben und zwar so oft, wie Zeilen in der 3SekDatei vorhanden sind.Die vorherigen verschwinden. Was mache ich falsch?