Announcement

Collapse
No announcement yet.

Listenindex

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Listenindex

    Hallo zusammen!

    Habe ein Programm geschrieben, dass mir entsprechende Daten aus einem Protokoll ausliest. D.h. das Protokoll besitzt jeweils eine Kopfzeile in der die verwendeten Daten jeweils sich an der gleichen Stelle befinden.
    In den restlichen ca. 800 Zeilen befinden sich an jeweils unterschiedlichen Stellen Fehlermeldungen, die nicht vorkommen müssen. Daher müssen mit dem Programm die Fehler für die entsprechenden Protokolle ermittelt werden(es gibt 4 Fehlerarten) Daher, springe ich von Zeile zu Zeile um eventuelle Fehler zu finden (z.B. PDU overtemperature)

    Eigentlich müsste das Programm funktionieren, jedoch bekomme ich den Fehler:

    Im Projekt Projekt1.exe ist eine Exception der Klasse EStringListError mit der Meldung 'Listenindex überschreitet das Maximum (13832137)' aufgetreten.

    Was bedeutet das bzw. was kann ich dagegen tun.
    Vielen dank im voraus, gruß Tales

    Programm:

    Kopfzeile mit entsprechenden Daten
    TStringList *lesen=new TStringList(); //Anlegen einer TStringList

    lesen->LoadFromFile("C:\\PDUM01-00478_26112008_1744_1246.wdf");
    lesen->Strings[0];

    Serial=lesen->Strings[1].SubString(13,12);

    Datum=lesen->Strings[2].SubString(11,10);

    if (lesen->Strings[5].Pos("10")) {
    Slot="10";
    }
    else {
    Slot=lesen->Strings[5].SubString(11,1);
    }

    Pruefer=lesen->Strings[6].SubString(13,4);

    ca. 800 Zeilen auf möglichen Fehler kontrollieren
    in der letzten Zeile steht endresult = Ende
    while(Last_line!="End")
    {
    i++;

    if(lesen->Strings[i].Pos("endresult")) {
    Last_line="End";
    continue;
    }

    if(lesen->Strings[i].Pos("PDU overtemperature")) {
    Fehler_temp="PDU overtemperature";
    continue;
    }

    if(lesen->Strings[i].Pos("PDU error")) {
    Fehler_error="PDU error";
    continue;
    }

    if(lesen->Strings[i].Pos("PDU fail-error")) {
    Fehler_fail_error="PDU fail-error";
    continue;
    }

    if(lesen->Strings[i].Pos("PDU fail")) {
    Fehler_fail="PDU fail";
    continue;
    }
    }
    delete lesen;

    ListBox1->Items->Add(Datum+Serial+Slot+Pruefer);
    ListBox1->Items->Add(Fehler_fail+Fehler_temp+Fehler_error+Fehler_f ail_error);

    }

  • #2
    Du musst schon kontrollieren ob du bei Strings[i] überhaupt noch einen Zeile hast (if (i < Strings.Count) ... Evtl. hat ja eine Protokolldatei nicht den erwarteten Aufbau.

    Comment


    • #3
      Die Aufbau der Protokolle ist immer gleich! Es sind wie gesagt ca. 800 Zeilen (eine Zeile nach der anderen in der ein Fehler sein könnte)
      ______________________
      ______________________
      ______________________

      Gruß Tales

      Comment

      Working...
      X