![]() |
"nummerierung" bei TStrings
hi
ich hab eine procedure, in der ist unter anderem folgende schleife drin die soll das abgleichen von zwei TStrings erledigen
Delphi-Quellcode:
ich hab mir das so gedacht:
for i:=0 to Data1.Count-1 do
Begin If Data1.IndexOf(Data2.Strings[i])=-1 Then Data2.Delete(i); End; data2 beinhaltet alles, data1 nur teile der daten er geht jedes element durch wenn es in data1 nicht enthalten ist (-1) dann soll ers löschen damit er nicht über den rand läuft, läuft er nur bis data1.count-1 aber es kommt zu der fehlermeldung "ungültiger index (2)" (oder so ähnlich, jedenfalls die klassische meldung für einen overflow) wo ist mein denkfehler, oder spinnt mein delphi? ich weiss nämlich absolut nicht weiter :gruebel: |
Re: "nummerierung" bei TStrings
Abgesehen davon, dass du es m.E. (auch) von der Logik her schon nicht richtig machst, ist es so, dass du während der i-Schleife aus Data2 Elemente herauslöscht. Die Elemente und Indexe in Data2 rutschen entsprechend runter, die Variable i wird aber immmer weiter hochgezählt. Wenn nun genug gelöscht wird, so ist i irgendwann größer als du noch Elemente in Data2 hast.
|
Re: "nummerierung" bei TStrings
Gehe die Schleifew einfach rückwärts durch.
Delphi-Quellcode:
...:cat:...
for I := Data1.Count-1 downto 0 do
... |
Re: "nummerierung" bei TStrings
Zitat:
|
Re: "nummerierung" bei TStrings
:wall: :wall: :wall:
hätt man drauf kommen können.... mist naja, thx gut das ihrs gesehen habt :thuimb: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:35 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