das ist mein erster Beitrag hier und ich hoffe, ich gehe mit euren Regeln konform. Also, folgende Problematik habe ich:
Ich habe drei StringListen:
Code: Alles auswählen
V_LIST: StringList vom Vorzustand
N_LIST: StringList vom "Nachher-Zustand"
LIST: StringList mit den Änderungen
So sieht die Liste vom DIR-Befehl aus:
Code: Alles auswählen
Verzeichnis von c:\Dokumente und Einstellungen\All Users\Startmen\Programme\Lazarus
21.02.2010 23:51 <DIR> .
21.02.2010 23:51 <DIR> ..
21.02.2010 23:51 1.411 Lazarus (debug).lnk
21.02.2010 23:51 503 Lazarus entfernen.lnk
21.02.2010 23:51 1.229 Lazarus Forums.lnk
21.02.2010 23:51 1.243 Lazarus im Internet.lnk
21.02.2010 23:51 1.243 Lazarus Wiki Help.lnk
21.02.2010 23:51 1.346 Lazarus.lnk
6 Datei(en) 6.975 Bytes
Code: Alles auswählen
c:\Dokumente und Einstellungen\All Users\Startmen\Programme\Lazarus\Lazarus (debug).lnk
c:\Dokumente und Einstellungen\All Users\Startmen\Programme\Lazarus\Lazarus entfernen.lnk
c:\Dokumente und Einstellungen\All Users\Startmen\Programme\Lazarus\Lazarus Forums.lnk
c:\Dokumente und Einstellungen\All Users\Startmen\Programme\Lazarus\Lazarus im Internet.lnk
c:\Dokumente und Einstellungen\All Users\Startmen\Programme\Lazarus\Lazarus Wiki Help.lnk
c:\Dokumente und Einstellungen\All Users\Startmen\Programme\Lazarus\Lazarus.lnk
Code: Alles auswählen
for I := 1 to N_LIST.Count do
begin
if V_LIST.Strings[V_LIST.IndexOf(N_LIST.Strings[I - 1])] = N_LIST.Strings[I - 1]
then LIST.Add(N_LIST.Strings[I - 1]);
end;
Code: Alles auswählen
for I := 1 to N_LIST.Count do
begin
if V_LIST.IndexOf(N_LIST.Strings[I - 1]) = (-1)
then LIST.Add(N_LIST.Strings[I - 1]);
end;
Hier rennt der Kollege scheinbar in einer Endlosschleife. Es gibt eine konstante CPU-Auslastung bei 50%, Speichernutzung liegt bei 20 MB und das Programm reagiert auf Nichts mehr... lässt sich nur noch beenden über Lazarus oder Taskmanager.
Code: Alles auswählen
for I := 1 to N_LIST.Count do
begin
if (V_LIST.IndexOf(N_LIST.Strings[I - 1]) <> (- 1))
and (V_LIST.Strings[V_LIST.IndexOf(N_LIST.Strings[I - 1])] = N_LIST.Strings[I - 1])
then LIST.Add(N_LIST.Strings[I - 1]);
end;
Grundsätzlich zu Info: Bis auf ein paar einzelne Einträge (deren Standort unbekannt ist) sind V_LIST und N_LIST vollkommen identisch. Bloß alle Änderungen (in Form von Einträgen, die in N_LIST vorkommen und NICHT in V_LIST) sollen in LIST eingetragen werden.
Ich hoffe, ihr könnt mir helfen. Falls Ihr weitere Codestücke oder Beispiele braucht: Bekommt Ihr.
Besten Dank und liebe Grüße
Fabian