AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

"nummerierung" bei TStrings

Ein Thema von glkgereon · begonnen am 17. Mai 2004 · letzter Beitrag vom 17. Mai 2004
Antwort Antwort
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#1

"nummerierung" bei TStrings

  Alt 17. Mai 2004, 16:45
hi
ich hab eine procedure, in der ist unter anderem folgende schleife drin
die soll das abgleichen von zwei TStrings erledigen

Delphi-Quellcode:
for i:=0 to Data1.Count-1 do
   Begin
   If Data1.IndexOf(Data2.Strings[i])=-1
   Then Data2.Delete(i);
   End;
ich hab mir das so gedacht:
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
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
IngoD7

Registriert seit: 16. Feb 2004
464 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: "nummerierung" bei TStrings

  Alt 17. Mai 2004, 16:56
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.
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: "nummerierung" bei TStrings

  Alt 17. Mai 2004, 16:57
Gehe die Schleifew einfach rückwärts durch.

Delphi-Quellcode:
for I := Data1.Count-1 downto 0 do
  ...
......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
IngoD7

Registriert seit: 16. Feb 2004
464 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: "nummerierung" bei TStrings

  Alt 17. Mai 2004, 17:01
Zitat von sakura:
Gehe die Schleifew einfach rückwärts durch.
Ist logisch trotzdem falsch. Wenn Data1 12 Elemente hat und Data2 derer 16, so werden nur die Data2-Elemente 0 bis 11 überprüft, ob sie in Data1 vorhanden sind. Die Data2-Elemente 12-15 bleiben völlig unberücksichtigt.
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#5

Re: "nummerierung" bei TStrings

  Alt 17. Mai 2004, 17:13


hätt man drauf kommen können....

mist

naja, thx

gut das ihrs gesehen habt
»Unlösbare Probleme sind in der Regel schwierig...«
  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 03:42 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