AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Fehler: Listenindex überschreitet das Maximum (1)
Thema durchsuchen
Ansicht
Themen-Optionen

Fehler: Listenindex überschreitet das Maximum (1)

Ein Thema von AnyKey · begonnen am 1. Okt 2009 · letzter Beitrag vom 1. Okt 2009
Antwort Antwort
AnyKey

Registriert seit: 15. Apr 2008
173 Beiträge
 
#1

Fehler: Listenindex überschreitet das Maximum (1)

  Alt 1. Okt 2009, 12:00
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
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.114 Beiträge
 
Delphi 12 Athens
 
#2

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

  Alt 1. Okt 2009, 12:05
Du verwendest den Index für AResultList und nimmst aber dafür die Obergrenze (Linemax) von vom Edit.
Das kann ja nicht gut gehn.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Klaus01
Online

Registriert seit: 30. Nov 2005
Ort: München
5.754 Beiträge
 
Delphi 10.4 Sydney
 
#3

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

  Alt 1. Okt 2009, 12:06
.. ersetze mal
AResultList.Add(Edit.Text); durch
AResult.AddStrings(Edit.Text); Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.481 Beiträge
 
Delphi 10.1 Berlin Professional
 
#4

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

  Alt 1. Okt 2009, 12:08
Zitat:
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 AResultList.Assign(Edit.Lines); und die Anzahl der Zeilen stimmt überein.




Zitat von AnyKey:
var i : Integer;
var Linemax : Integer;
var AResultList : TStringList;
Ein "var" reicht aus. Die anderen sind hier nicht notwendig.
  Mit Zitat antworten Zitat
AnyKey

Registriert seit: 15. Apr 2008
173 Beiträge
 
#5

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

  Alt 1. Okt 2009, 13:05
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
  Mit Zitat antworten Zitat
Andreas L.
(Gast)

n/a Beiträge
 
#6

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

  Alt 1. Okt 2009, 13:15
Probier mal #13#10 bzw. sLineBreak anstatt #10.
  Mit Zitat antworten Zitat
AnyKey

Registriert seit: 15. Apr 2008
173 Beiträge
 
#7

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

  Alt 1. Okt 2009, 13:24
Hi,

sLineBreak funktioniert!

Danke!

Gruß
AnyKey
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:04 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