Seite 1 von 2
Warnung vor PB3.92 und Linked List
Verfasst: 06.11.2004 17:39
von GPI
ListIndex funktioniert nicht mal ansatzweise zuverlässig. Ein einfaches EndIf zerstört diesen Index
Code: Alles auswählen
NewList test.l()
AddElement(test())
AddElement(test())
AddElement(test())
AddElement(test())
Debug ListIndex(test())
If #True
Pos=ListIndex(test())
SelectElement(test(),0)
ChangeCurrentElement(test(),Pos)
Debug ListIndex(test())
a$="10"
EndIf
Debug ListIndex(test())
also jeder der Linked List verwendet, sollte auf ein Bugfix waren...
Verfasst: 06.11.2004 18:17
von freak
Lies dir bitte nochmal die Hilfe zu ChangeCurrentElement() durch.
> ChangeCurrentElement(test(),Pos)
Das ist hier fehl am Platz. SelectElement() solltest du besser verwenden.
Bitte solche *Warnungen* in Zukunft erst posten wenn jemand bestätigt hat
dass es auch ein bug ist.
Verfasst: 06.11.2004 19:27
von GPI
Tippfehler, probier das
Code: Alles auswählen
NewList test.l()
AddElement(test())
AddElement(test())
AddElement(test())
AddElement(test())
Debug ListIndex(test())
If #True
Pos=@test()
SelectElement(test(),0)
ChangeCurrentElement(test(),Pos)
Debug ListIndex(test())
a$="10"
EndIf
Debug ListIndex(test())
der gag ist ja, das beim zweiten Debug aufeinmal null kommt, vorher korrekt 3
p.s.: IDE verwendet auch linked list. Da könnte der Bug heftig zuschlagen.
Edit: Selbst das obrige Beispiel ist lustig. Warum zeigt das Debug vor den EndIf 3 und danach aufeinmal 0? Da liegt nur das A$="10" dazwischen, aber das kann man entfernen und es ändert sich nichts. Der Fehler tritt da definitiv auch auf!
Verfasst: 06.11.2004 21:06
von Ynnus
Sieht aus als wenn ListIndex() kaputt wäre. Sogar ohne die IF-Schleife und ohne das "a$ = ..." kommt beim letzten ListIndex() bei mir 0 raus, eine Zeile davor noch 3.
Allerdings ist das aktuelle Element immer noch das korrekte.
In folgendem Code wird der Index falsch erkannt, erst 3, nächste Zeiel plötzlich 0, der Wert bleibt dennoch der Wert, welchen man dem 3er Element zugewiesen hat. Also das Element wechselt nicht zu 0 sondern "nur" der Befehl "ListIndex()" ist wohl fehlerhaft.:
Code: Alles auswählen
NewList test.l()
AddElement(test())
AddElement(test())
AddElement(test())
AddElement(test())
Debug "Index: " +Str(ListIndex(test()))
test() = 10
Pos.l=@test()
SelectElement(test(),0)
test() = 11
ChangeCurrentElement(test(),Pos)
Debug "Index: " +Str(ListIndex(test()))
Debug "Wert: " +Str(test())
Debug "Index: " +Str(ListIndex(test()))
Debug "Wert: " +Str(test())
Verfasst: 07.11.2004 12:33
von NicTheQuick
Sowas finde ich ja schrecklich. Wenn grundlegende Sachen geändert werden und sie dann noch nicht einmal richtig funktionieren. Kann man nicht einfach wieder die alte LinkedList-Version einbauen. Wenn jemand schnelle LinkedLists haben will, dann soll er sie selbst auch so programmieren.

Verfasst: 07.11.2004 14:51
von Andre
Fred habe ich gestern informiert. Mal sehen, was er dazu sagt....
Bug beim Rückgabewert von NextElement() ist ja bereits bestätigt. Aber er wird sich die ganze Lib nochmal anschauen müssen.
Verfasst: 07.11.2004 14:53
von Ynnus
Jupp, ich hab im englischen auch noch einen Bug gepostet welcher bei Linked Lists auftritt.
http://purebasic.myforums.net/viewtopic.php?t=13052
Verfasst: 07.11.2004 16:45
von GPI
p.s.: Eilt. Danke.
Verfasst: 09.11.2004 01:26
von Andre
Habe Rückmeldung von Fred: er hat sich's angeschaut und wird Bug(s) schnellstens beheben.

Verfasst: 09.11.2004 01:37
von Ynnus
Gut, dann hoffe ich auf ein schnelles Hotfix. Ist ein wenig verunsichernd wenn man nicht weiß, ob das Programm nicht läuft, weil man selbst einen Fehler gemacht hat oder weil die Lib einen Bug hat.

Aber bei diesem Bug bin ich optimistisch dass er schnell gelöst wird, ist ja eine recht gravierende Sache, als wenn Structuren buggy wären oder so. (will garnicht dran denken

)