AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Listindex überschreitet Maximum - Einmal ja, einmal nein?
Thema durchsuchen
Ansicht
Themen-Optionen

Listindex überschreitet Maximum - Einmal ja, einmal nein?

Ein Thema von draGo · begonnen am 31. Okt 2006 · letzter Beitrag vom 1. Nov 2006
Antwort Antwort
Seite 1 von 2  1 2      
draGo

Registriert seit: 4. Apr 2006
44 Beiträge
 
Delphi 7 Personal
 
#1

Listindex überschreitet Maximum - Einmal ja, einmal nein?

  Alt 31. Okt 2006, 16:33
Huhu DP,

ich stehe mal wieder vor einem (komischen) Problem...
Ich habe hier vor einiger Zeit mal eine Split Funktion gefunden die auch ganz das tut was sie soll. (Gibt eine StringList zurück).
Um die Stringlist bearbeiten zu können habe ich mir noch eine eigene erstellt und folgendes gemacht:

StringLst := Split(Str,'|',false,false); Nun habe ich mit

Delphi-Quellcode:
    Stringlst.Text := Stringreplace(Ergebnisse.Text,' ','',[rfreplaceall]);
 stringlst.Text := Stringreplace(Ergebnisse.Text,'#',' ',[rfreplaceall]);
etwas ersetzt. Alles schön und gut.
Wenn ich jetzt aber mit einer Schleife arbeiten möchte kommt das Problem...

Delphi-Quellcode:
for I := 0 to StringLst.Count -1 do begin
  //...
Es erfolgt der Fehler "Listindex überschreitet Maximum"
Wenn ich es folgend mache

Delphi-Quellcode:
for I := 0 to Split(Str,'|',false,false).count -1 do begin
  //...
funktioniert alles wunderbar.
Wenn ich das ersetzen auslasse funktioniert es... Nur warum?
Ich würde nämlich gerne mit meiner StringList arbeiten
Hoffe ihr könnt mir helfen

mfg,
draGo
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.195 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Listindex überschreitet Maximum - Einmal ja, einmal nein

  Alt 31. Okt 2006, 16:41
Zitat von draGo:
etwas ersetzt. Alles schön und gut.
Wenn ich jetzt aber mit einer Schleife arbeiten möchte kommt das Problem...

Delphi-Quellcode:
for I := 0 to StringLst.Count -1 do begin
  //...
Es erfolgt der Fehler "Listindex überschreitet Maximum"
Also diese Zeile kann nicht das Problem sein. Zeig doch mal die ganze Funktion. Der Fehler ist ja in der Scheife (von der wir keinen Code haben).
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.323 Beiträge
 
Delphi XE2 Professional
 
#3

Re: Listindex überschreitet Maximum - Einmal ja, einmal nein

  Alt 31. Okt 2006, 16:42
Hallo,

anstatt:
StringLst := Split(Str,'|',false,false); musst du die eine StringList der anderen StringList so übergeben:
StringLst.Assign(Split(Str,'|',false,false));
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#4

Re: Listindex überschreitet Maximum - Einmal ja, einmal nein

  Alt 31. Okt 2006, 16:47
ich hab auch noch eine Idee:
jeder String wird doch durch #0 abgeschlossen. Mit Deinen Ersetzen klaust Du dem #0 das #.
Prüfe das doch mal in diese Richtung...
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
draGo

Registriert seit: 4. Apr 2006
44 Beiträge
 
Delphi 7 Personal
 
#5

Re: Listindex überschreitet Maximum - Einmal ja, einmal nein

  Alt 31. Okt 2006, 16:48
Hallo Bernhard,

es scheint eher am ersetzen zu liegen.

Delphi-Quellcode:
Stringlst.Text := Stringreplace(Ergebnisse.Text,' ','',[rfreplaceall]);
stringlst.Text := Stringreplace(Ergebnisse.Text,'#',' ',[rfreplaceall]);
Wenn ich diese beiden Zeilen (Eine weglassen führt zum Fehler wieder, egal welche) weglasse gibt Delphi mir keinen Error aus.
Der (etwas chaotische) Code der Schleife ist folgender:


Delphi-Quellcode:
for I := 0 to StringLst.Count -1 do begin
  frmmain.anzeige.Rowcount := frmmain.anzeige.rowcount +1;

  if zeile > 7 then
    zeile := 0;

   if StringLst.Strings[i] = 'then
      StringLst.Delete(i);


  Frmmain.Anzeige.Cols[zeile].Add(StringLst.strings[i]);
  zeile := zeile +1;

 end;
Wobei "Anzeige" ein StringGrid ist.

____________________

Hallo Helmi, habe es jetzt so gemacht. Jedoch behebt das nicht das Problem

____________________

Hallo RavenIV,
werde es mal nachprüfen . Danke

mfG draGo
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.323 Beiträge
 
Delphi XE2 Professional
 
#6

Re: Listindex überschreitet Maximum - Einmal ja, einmal nein

  Alt 31. Okt 2006, 16:51
erzeugst du auch die StringList "Stringlst" mit
Stringlst := TStringList.Create;
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
draGo

Registriert seit: 4. Apr 2006
44 Beiträge
 
Delphi 7 Personal
 
#7

Re: Listindex überschreitet Maximum - Einmal ja, einmal nein

  Alt 31. Okt 2006, 16:54
Hallo Helmi,

ja das tue ich schon vorher
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#8

Re: Listindex überschreitet Maximum - Einmal ja, einmal nein

  Alt 31. Okt 2006, 17:07
Hallo draGgo,

schaue mal in diesen Thread hinein, da findest du die Erklärung für die Fehlermeldung.

Zu deiner Split-Funktion: wenn diese dir eine Stringliste liefert, dann bist du als Aufrufer für die Freigabe der Liste verantwortlich. Befehle wie

for I := 0 to Split(Str,'|',false,false).count -1 do begin oder
StringLst.Assign(Split(Str,'|',false,false)); erzeugen somit Speicherlecks, weil du keine Referenz speicherst, mit der du die Liste wieder freigeben kannst.

@RavenIV
Du machst Witze, oder? klick

Gruß Hawkeye
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#9

Re: Listindex überschreitet Maximum - Einmal ja, einmal nein

  Alt 31. Okt 2006, 17:14
Zitat von Hawkeye219:
@RavenIV
Du machst Witze, oder? klick
War nur so ne spontane (und dumme) Idee.
Jetzt, wo ich den Link gelesen habe, ist es wieder klar.
Auch ich sollte eben zweimal überlegen, bevor ich den "Absenden"-Button drücke.
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#10

Re: Listindex überschreitet Maximum - Einmal ja, einmal nein

  Alt 31. Okt 2006, 18:53
Hallo draGo,

ein wesentliches Problem mit deinem Code aus Beitrag #1 ist:

Delphi-Quellcode:
begin
  Ergebnisse := Split(Str,'|',false,false);
  Stringlst.Text := StringReplace(Ergebnisse.Text, ' ', '',[rfReplaceAll]);
  // Stringlst.Text := Stringreplace(Ergebnisse.Text, '#', ' ',[rfReplaceAll]);
  // Wenn du das Resultat der ersten Ersetzung nicht weiter verarbeitest,
  // dann dürfte das Eregbnis nicht deinen Erwartungen entsprechen.
  Stringlst.Text := StringReplace(Stringlst.Text, '#', ' ',[rfReplaceAll]);
// ...
Grüße vom marabu
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 10:51 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