Einzelnen Beitrag anzeigen

aaaaaaaaaa_10
(Gast)

n/a Beiträge
 
#20

Re: Spaltenweise auf TStringList zugreifen

  Alt 28. Jul 2009, 08:07
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?
  Mit Zitat antworten Zitat