Seite 1 von 2
ForEach Probleme -.-
Verfasst: 30.01.2008 16:58
von Tsuki-Namida
hallo,
warum geht PB nicht in die ForEach Schleife in diesem Code???
Code: Alles auswählen
While NextElement(DateiList())
T$ = DateiList()\Datei
T = DateiList()\groese
;CallDebugger
ForEach DateiListAlt()
Debug "überprüfung"
If DateiListAlt()\Datei = T$
Debug "gefunden"
EndIf
Next
Wend
danke schon mal für antwort...
Verfasst: 30.01.2008 17:07
von Ja!
Vielleicht hat die Liste 0 Elemente?
Teste einfach mit Debug countlist(Listenname) vor dem ForEach
Gruß
Verfasst: 30.01.2008 17:09
von Kaeru Gaman
oder die liste wurde nicht resettet vor dem while...
insgesamt ist das snippet zu wenig, um ne klare antwort zu geben.
füge noch ein debug vor der ForEach ein,
um zu sehen, ob überhaupt die While-schleife läuft...
Verfasst: 30.01.2008 17:14
von Tsuki-Namida
okay das hätte ja sein können dem ist aber leider nicht so...
es sind in beiden listen elemente und resettet habe ich auch vorher...
ich habe vor dateien zu überprüfen also ob neue da sind oder ob was geändert wird.... in der Alt liste sind die daten wie sie forher waren (in einer txt gespeichert für die spätere überprüfung) und in der anderen liste sind die daten die gerade vorhanden sind also lese ich das verzeichnis erst aus...
hier ist noch ein stück von dem quellen text...
Code: Alles auswählen
AltList$ = Projekt$+"FileList.txt"
If OpenFile(0,AltList$)
While Eof(0) = 0
A$ = ReadString(0)
SetGadgetText(12,A$)
If FindString(T$," = ",1)
a = FindString(A$," = ",1)
T$ = Mid(A$,1,a-1)
b = Len(A$)
T = Val(Mid(A$,a+3,b))
AddElement(DateiListAlt())
DateiListAlt()\Datei = T$
DateiListAlt()\groese = T
EndIf
Delay(5)
Wend
CloseFile(0)
EndIf
ResetList(DateiListAlt()):ResetList(DateiList())
SetGadgetText(11,"Vergleichen der Daten:")
While NextElement(DateiList())
T$ = DateiList()\Datei
T = DateiList()\groese
;CallDebugger
ForEach DateiListAlt()
Debug "überprüfung"
If DateiListAlt()\Datei = T$
Debug "gefunden"
EndIf
Next
Wend
Verfasst: 30.01.2008 17:24
von Andreas_S
Gibt es eigendlich irgendeinen Error?
Andreas
Verfasst: 30.01.2008 17:26
von Tsuki-Namida
nein gibt es leider nicht... sonnst wüsste ich woran das liegen könnte....
Verfasst: 30.01.2008 18:40
von NicTheQuick
Geht dieser Code?
Code: Alles auswählen
NewList DateiList.s()
NewList DateiListAlt.s()
Define a.l, found.l
;Dateien 0 bis 100
For a.l = 0 To 100
AddElement(DateiListAlt())
DateiListAlt() = "Datei" + Str(a)
Next
;10 Dateien von 0 bis 200
For a = 1 To 10
AddElement(DateiList())
DateiList() = "Datei" + Str(Random(200))
Next
ForEach DateiList()
T$ = DateiList()
;CallDebugger
Debug T$
found = #False
ForEach DateiListAlt()
If DateiListAlt() = T$
found = #True
Break
EndIf
Next
If found
Debug "gefunden: " + T$
Else
Debug "nicht gefunden: " + T$
EndIf
Next
Verfasst: 30.01.2008 19:06
von Tsuki-Namida
okay dein code geht.... aber warum nicht meiner....
naja ich werde mir erst noch mal deinen code ansehen... und schauen was da nun anderst ist...
[edit]
okay ich habe es übernommen.... aber ich bekomme immer gesagt das der eintrag nicht gefunden wurde aber ich weis das alle einträge vorhanden sind... hier noch mal der geänderte code...
Code: Alles auswählen
ForEach DateiList()
T$ = DateiList()\Datei
T = DateiList()\groese
Debug T$+" = "+Str(T)
found = #False
ForEach DateiListAlt()
Debug "überprüfung"
If DateiListAlt()\Datei = T$
found = #True
Break
EndIf
Next
If found
Debug "gefunden: " + T$
Else
Debug "nicht gefunden: " + T$
EndIf
Next
[edit2]
okay ich komme noch nicht mal in diese
ForEach DateiListAlt() schleife rein...
Verfasst: 30.01.2008 19:08
von NicTheQuick
Bist du sicher, dass in beiden Listen Dateien sind? Ich nämlich nicht.
Oder warum steht da ein T$?
Code: Alles auswählen
AltList$ = Projekt$+"FileList.txt"
If OpenFile(0,AltList$)
While Eof(0) = 0
A$ = ReadString(0)
SetGadgetText(12,A$)
If FindString(T$," = ",1) ;<-- wieso steht da ein T$
a = FindString(A$," = ",1)
T$ = Mid(A$,1,a-1)
b = Len(A$)
T = Val(Mid(A$,a+3,b))
AddElement(DateiListAlt())
DateiListAlt()\Datei = T$
DateiListAlt()\groese = T
EndIf
Delay(5)
Wend
CloseFile(0)
EndIf
Verfasst: 30.01.2008 19:16
von Tsuki-Namida
Ich nutze immer T$ als einen Temp String bzw Variabel dann erst geht es weiter mit A$....
aber das erklärt warum da nichts gefunden wird... da in diesemfall T$ einen falschen inhalt bzw. keinen inhalt hat...
wie du denke ich mal schon richtig vermutet hast muss da A$ hin -.-
naja jedenfals war das der fehler und danke noch mal für deine hilfe.... ich hätte bestimmt morgen und nächste woche noch danachgesucht und nicht gefunden...
im eigenem code ist mal halt blind.... bzw. ich