AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi string durchsuchen und tipps zu while + for-schleifen
Thema durchsuchen
Ansicht
Themen-Optionen

string durchsuchen und tipps zu while + for-schleifen

Ein Thema von delphi-n · begonnen am 5. Okt 2009 · letzter Beitrag vom 6. Okt 2009
Antwort Antwort
Seite 6 von 6   « Erste     456   
delphi-n

Registriert seit: 6. Sep 2009
88 Beiträge
 
#51

Re: [GELÖST] string durchsuchen

  Alt 6. Okt 2009, 20:10
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?
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#52

Re: [GELÖST] string durchsuchen

  Alt 6. Okt 2009, 20:14
Die Indizes fangen bei 0 an. Eine ListBox mit 5 Einträgen hat somit die Indizes 0 - 4

f := ListBox1.Items.Count; 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.

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.

Edit: Na super, dass der rote Kasten mal wieder im Urlaub ist.
Edit 2: verlesen, war gar kein Beitrag vor meinem da.
  Mit Zitat antworten Zitat
delphi-n

Registriert seit: 6. Sep 2009
88 Beiträge
 
#53

Re: string durchsuchen und tipps zu while + for-schleifen

  Alt 6. Okt 2009, 20:22
Zitat:
PS: Das Thema hast du seit Beitrag #5 mit einem "[GELÖST]" versehen. Laughing
habs mal geändert

als titel ist mir nix besseres eingefallen; wenn ihr ne idee habt, änder ichs auch gern wieder. : )


[edit]: danke, kommt kein fehler mehr
  Mit Zitat antworten Zitat
delphi-n

Registriert seit: 6. Sep 2009
88 Beiträge
 
#54

Re: string durchsuchen und tipps zu while + for-schleifen

  Alt 6. Okt 2009, 22:07
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
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 6 von 6   « Erste     456   


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 04: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