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