Einzelnen Beitrag anzeigen

omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#12

Re: Listenindex fehler bei einer Tstringlist

  Alt 17. Jul 2009, 23:43
Da wir nicht wirklich wissen, was du da vorhast...

Rücke erstmal deinen Quellcode richtig ein, nur so kannst du ihn richtig verstehen...
Delphi-Quellcode:
procedure TForm1.InDieMemoFelderSchreiben(var Textdatei,Textdatei2: String);
var
  zv : integer;
  zv2 :integer;
  Pruefstring : String ;
begin
  zv := 0;
  zv2 := 0;
  if FileExists(Textdatei) and FileExists(Textdatei2) then begin
    Zwischenspeicher.LoadFromFile(Textdatei);
    Zwischenspeicher2.LoadFromFile(Textdatei2);
  end
  Pruefstring := Zwischenspeicher[Zv];
  If Pruefstring = 'MontagThen begin
    Label1.Caption := Zwischenspeicher[Zv];
    inc(Zv) ;
  end;
  Pruefstring := Zwischenspeicher[Zv];
  While not (PruefString = 'Dienstag') do begin
    Memo1.Lines.Add(Zwischenspeicher[Zv]);
    inc(Zv);
    Pruefstring := Zwischenspeicher[Zv];
  end;
  If Pruefstring = 'DienstagThen begin
    Label2.Caption := Zwischenspeicher[Zv];
    inc(Zv) ;
    Pruefstring := Zwischenspeicher[Zv];
  end;
  While not (PruefString = 'Mittwoch') do begin
    Memo2.Lines.Add(Zwischenspeicher[Zv]);
    inc(Zv);
    Pruefstring := Zwischenspeicher[Zv];
    If Pruefstring = 'MittwochThen begin
      Label3.Caption := Zwischenspeicher[Zv];
      inc(Zv) ;
      Pruefstring := Zwischenspeicher[Zv];
    end;
    While not (PruefString = 'Donnerstag') do begin
      Memo3.Lines.Add(Zwischenspeicher[Zv]);
      inc(Zv);
      Pruefstring := Zwischenspeicher[Zv];
    end;
    If Pruefstring = 'DonnerstagThen begin
      Label4.Caption := Zwischenspeicher[Zv];
      inc(Zv) ;
      Pruefstring := Zwischenspeicher[Zv];
    end;
    While not (PruefString = 'Freitag') do begin
      Memo4.Lines.Add(Zwischenspeicher[Zv]);
      inc(Zv);
      Pruefstring := Zwischenspeicher[Zv];
    end;
    If Pruefstring = 'FreitagThen begin
      Label5.Caption := Zwischenspeicher[Zv];
      inc(Zv) ;
      Pruefstring := Zwischenspeicher[Zv];
    end;
    While not (PruefString = 'Samstag') do begin
      Memo5.Lines.Add(Zwischenspeicher[Zv]);
      inc(Zv);
      Pruefstring := Zwischenspeicher[Zv];
    end;
    If Pruefstring = 'SamstagThen begin
      Label6.Caption := Zwischenspeicher[Zv];
      inc(Zv) ;
      Pruefstring := Zwischenspeicher[Zv];
    end;
    While not (PruefString = 'Sonntag') do begin
      Memo6.Lines.Add(Zwischenspeicher[Zv]);
      inc(Zv);
      Pruefstring := Zwischenspeicher[Zv];
    end;
    If Pruefstring = 'SonntagThen begin
      Label7.Caption := Zwischenspeicher[Zv];
      inc(Zv) ;
      Pruefstring := Zwischenspeicher[Zv];
    end;
    While not (PruefString = 'Ende') do begin
      Memo7.Lines.Add(Zwischenspeicher[Zv]);
      inc(Zv);
      Pruefstring := Zwischenspeicher[Zv];
      If Pruefstring = 'EndeThen begin
        Label8.Caption := Zwischenspeicher2[Zv2];
        inc(Zv2) ;
        Pruefstring := Zwischenspeicher2[Zv2];
      end;
      While not (PruefString = 'Dienstag') do begin
        Memo8.Lines.Add(Zwischenspeicher2[Zv2]);
        inc(Zv2);
        Pruefstring := Zwischenspeicher2[Zv2];
      end;
    end;
  end;
end;
Das mit den Schleifen würde ich nochmal überdenken. Führe die Schleife solange durch, wie etwas nicht eintrifft, Nichts ist auch <> 'Dienstag' oder 'Ende'. Nirgends ist eine Prüfung vorhanden, die kontrolliert, ob man die Zeilenanzahl einer Stringliste überschritten hat, genau dann knallt es.
  Mit Zitat antworten Zitat