Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Fehler: Listenindex überschreitet das Maximum (1) (https://www.delphipraxis.net/141058-fehler-listenindex-ueberschreitet-das-maximum-1-a.html)

AnyKey 1. Okt 2009 12:00


Fehler: Listenindex überschreitet das Maximum (1)
 
Hi,

auf die Gefahr hin das ich einfach nur zu blöd bin den fehler zu finden und es eigentlich ganz einfach ist und diese frage bestimmt schon hundert mal gestellt wurde, frage ich euch trotzdem:

Wo liegt im folgenden Quelltext der Fehler?? Ich finde ihn einfach nicht, bekomme aber dauernd die Meldung Listenindex überschreitet das maximum (1)

Delphi-Quellcode:
class function TStringManipulation.SyntaxHighlighting(Edit: TRichEdit; Progressbar: TProgressbar): Bool;
var i          : Integer;
var Linemax    : Integer;
var AResultList : TStringList;
begin
  try
    AResultList := TStringList.Create;
    AResultList.Add(Edit.Text);
    Linemax := Edit.Lines.Count;
    ProgressBar.Position := 0;
    ProgressBar.Max := Linemax;
    Edit.Lines.Clear;
    for i := 0 to Linemax-1 do
    begin
      with Edit do
      begin
        SelText := AResultList.Strings[i];
        SelStart := 9;
        SelLength := 5;
        SelAttributes.Color := clBlue;
        SelAttributes.Style := [fsBold];
//        SelText := AResultList.Strings[i];
//        Lines.Add(AResultList.ValueFromIndex[i]);
      end;
      ProgressBar.Position := Progressbar.Position + 1;
    end;
    FreeAndNil(AResultList);
    result := true;
  except
    FreeAndNil(AResultList);
    result := false;
  end;
end;
Wäre super wenn jemand den Fehler finden würde, ich steig nich mehr durch...

Danke
AnyKey

himitsu 1. Okt 2009 12:05

Re: Fehler: Listenindex überschreitet das Maximum (1)
 
Du verwendest den Index für AResultList und nimmst aber dafür die Obergrenze (Linemax) von vom Edit.
Das kann ja nicht gut gehn.

Klaus01 1. Okt 2009 12:06

Re: Fehler: Listenindex überschreitet das Maximum (1)
 
.. ersetze mal
Delphi-Quellcode:
AResultList.Add(Edit.Text);
durch
Delphi-Quellcode:
AResult.AddStrings(Edit.Text);
Grüße
Klaus

jbg 1. Okt 2009 12:08

Re: Fehler: Listenindex überschreitet das Maximum (1)
 
Zitat:

Delphi-Quellcode:
AResultList.Add(Edit.Text);

Hier liegt dein Fehler. Mit dieser Zeile wird gesamte Text samt Zeilenumbrüche in eine einzelne Zeile von AResultList eingetragen. Ersetze die Codezeile einfach durch
Delphi-Quellcode:
AResultList.Assign(Edit.Lines);
und die Anzahl der Zeilen stimmt überein.




Zitat:

Zitat von AnyKey
var i : Integer;
var Linemax : Integer;
var AResultList : TStringList;

Ein "var" reicht aus. Die anderen sind hier nicht notwendig.

AnyKey 1. Okt 2009 13:05

Re: Fehler: Listenindex überschreitet das Maximum (1)
 
Hi,

danke für eure Antworten!

@jbg: Ich weiß das ein var genügt ;) ist bei uns zur besseren Lesbarkeit aber vorschrift.

Hab das ganze jetzt so abgeändert, allerdings schreibt er mir alles in eine Zeile.

Delphi-Quellcode:
  try
    AResultList := TStringList.Create;
    AResultList.Assign(Edit.Lines);
    Linemax := Edit.Lines.Count-1;
    ProgressBar.Position := 0;
    ProgressBar.Max := Linemax;
    Edit.Lines.Clear;
    for i := 0 to Linemax do
    begin
      with Edit do
      begin
        SelText := AResultList.Strings[i]+#10;
        SelStart := 9;
        SelLength := 5;
        SelAttributes.Color := clBlue;
        SelAttributes.Style := [fsBold];
      end;
      ProgressBar.Position := Progressbar.Position + 1;
    end;
    FreeAndNil(AResultList);
    result := true;
  except
    FreeAndNil(AResultList);
    result := false;
  end;
Wenn ich einen Zeilenumbruch so wie oben mit +#10 einfüge, habe ich aber zwischen den Zeilen immer einen großen abstand, ich will ja aber dass er beim zurückschreiben jeweils in nur eine Zeile des RichEdits auch eine Zeile aus der StringList schreibt und diese wie angegeben formatiert, also von stelle 9 für 5 zeichen die farbe Blau und fett..... Wie gesagt das funktioniert noch nicht so richtig.

Gruß
AnyKey

Andreas L. 1. Okt 2009 13:15

Re: Fehler: Listenindex überschreitet das Maximum (1)
 
Probier mal #13#10 bzw. sLineBreak anstatt #10.

AnyKey 1. Okt 2009 13:24

Re: Fehler: Listenindex überschreitet das Maximum (1)
 
Hi,

sLineBreak funktioniert! :)

Danke!

Gruß
AnyKey


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:36 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz