![]() |
Re: [GELÖST] string durchsuchen
Hier kommt wieder der fehler "listenindex überschreitet das maximum (anzahl der einträge in derlistbox)", auch wenn mehrere einträge in der listbox sind.
Delphi-Quellcode:
while i<RichEdit1.Lines.Count do
begin Image6.Top:=15*i+30; Button5.Caption := RichEdit1.Lines[i]; Application.ProcessMessages; if StringEnthalten('*solange',RichEdit1.Lines[i]) then begin g:=ListBox1.Items.Count; i:=strtoint(ListBox1.Items[g]); //<<<<<<<<<hier kommt listenindex.. //i:=strtoint(ListBox1.Items[f])-1; end else if StringEnthalten('schritt',RichEdit1.Lines[i]) then Button1.Click else if StringEnthalten('linksdrehen', RichEdit1.Lines[i]) then Button3.Click else if StringEnthalten('rechtsdrehen', RichEdit1.Lines[i]) then Button4.Click else if StringEnthalten('umdrehen', RichEdit1.Lines[i]) then begin Button4.Click; Button4.Click; end else if StringEnthalten('solange', RichEdit1.Lines[i]) then begin //a if StringEnthalten('nichtistwand', RichEdit1.Lines[i]) then //hier alle dinge wie istwand ect. begin //b if (posx<15) and (posy<15) then begin //c f:=ListBox1.Items.Count; h:=Strtoint(ListBox1.Items[f]); //<<<<<<<<<hier kommt listenindex.. if i=h then //abfrage, ob i schon in der liste ist, wenn ja entfern es begin //d listbox1.Selected[ListBox1.Items.Count-1]; listbox1.DeleteSelected; end; //d while not StringEnthalten('*solange', RichEdit1.Lines[i]) do begin i:=i+1; end; end //c else listbox1.Items.Add(inttostr(i)); continue; end; //b end; //a i:=i+1; sleep(200); end; //while end; //begin @deddyH: wie soll ich das mun ändern? :pale: |
Re: [GELÖST] string durchsuchen
Die Indizes fangen bei 0 an. Eine ListBox mit 5 Einträgen hat somit die Indizes 0 - 4
Delphi-Quellcode:
Das würde dir jedoch die Zahl 5 liefern. Somit überschreitest du damit den maximalen ListenIndex. Je nach dem, was du vor hast, "1" abziehen.
f := ListBox1.Items.Count;
Auch For-Schleifen müssen in dem Fall immer von 0 bis "Count - 1" laufen. PS: Das Thema hast du seit Beitrag #5 mit einem "[GELÖST]" versehen. :lol: Edit: Na super, dass der rote Kasten mal wieder im Urlaub ist. Edit 2: verlesen, war gar kein Beitrag vor meinem da. :lol: |
Re: string durchsuchen und tipps zu while + for-schleifen
Zitat:
als titel ist mir nix besseres eingefallen; wenn ihr ne idee habt, änder ichs auch gern wieder. : ) [edit]: danke, kommt kein fehler mehr :thumb: |
Re: string durchsuchen und tipps zu while + for-schleifen
ich habs mal geordnet: Trotzdem gibt es einen weiteren fehler:
Delphi-Quellcode:
while i<RichEdit1.Lines.Count do
begin Image6.Top:=15*i+30; Button5.Caption := RichEdit1.Lines[i]; Application.ProcessMessages; if StringEnthalten('+solange',RichEdit1.Lines[i]) then begin g:=ListBox1.Items.Count-1; i:=strtoint(ListBox1.Items[g]); //i soll die letze zahl aus der listbox auslesen, und zur dieser zeile springen. Das Problem: Wenn ich die while-schleife weiter durchlaufen lasse, dann wird unten i+1 gesetzt :( //wenn ich hier aber i:=i-1; hinschreibe, klappt es trotzdem nicht. Kann man dem nicht sagen, dass er wieder am anfang der while schleife beginnen soll? end else if StringEnthalten('schritt',RichEdit1.Lines[i]) then Button1.Click else if StringEnthalten('linksdrehen', RichEdit1.Lines[i]) then Button3.Click else if StringEnthalten('rechtsdrehen', RichEdit1.Lines[i]) then Button4.Click else if StringEnthalten('umdrehen', RichEdit1.Lines[i]) then begin Button4.Click; Button4.Click; end else if StringEnthalten('solange', RichEdit1.Lines[i]) then begin //a if StringEnthalten('nichtistwand', RichEdit1.Lines[i]) then //hier alle dinge wie istwand ect. begin //b if (posx<15) and (posy<15) then begin //c f:=ListBox1.Items.Count-1; h:=Strtoint(ListBox1.Items[f]); Label3.Caption:=Inttostr(h); if i=h then //abfrage, ob i schon in der liste ist, wenn ja entferne es begin //d listbox1.Selected[ListBox1.Items.Count-1]; listbox1.DeleteSelected; while not StringEnthalten('*solange', RichEdit1.Lines[i]) do begin i:=i+1; end; end //d else //c listbox1.Items.Add(inttostr(i)); continue; end; //c end; //b end; //a i:=i+1; sleep(200); end; //while |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:17 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz