#PB_Any : Gadget object number is very high (over 10000)....
-
the_pharao
- Beiträge: 51
- Registriert: 09.09.2004 14:20
der fehler ist in der tat nervig. er tritt übrigens nicht nur bei #pb_any auf, sondern jedesmal, wenn eine gadget nummer angeblich sehr hoch sein soll.
in meinem fall waren es meshes, und ich hab einfach eine long variable genommen und immer eins hochgezählt. wenn man länger gespielt hat, kam dann auch diese meldung.
die frage ist, ob so eine meldung sinnvoll ist. immerhin kann ich nicht einfach mit "ja" antworten und dann das programm weiterlaufen lassen
da sollte mal jemand auf Fred "einwirken"
in meinem fall waren es meshes, und ich hab einfach eine long variable genommen und immer eins hochgezählt. wenn man länger gespielt hat, kam dann auch diese meldung.
die frage ist, ob so eine meldung sinnvoll ist. immerhin kann ich nicht einfach mit "ja" antworten und dann das programm weiterlaufen lassen
da sollte mal jemand auf Fred "einwirken"
Epic Space Battles: Solar*Conflict - 3D Shoot'em up: UFO Onslaught! 3d
Ich kann keinen Code zeigen der das Problem reproduziert, ausser mein Programm selbst, welches 3000 Zeilen hat.freak hat geschrieben:Du hast noch immer keinen Code gezeigt der dein Problem demonstriert.
Bei mir tritt das nicht auf.
Wenn wir die Dinge nicht reproduzieren können kann es genausogut
ein Programmierfehler deinerseits sein.
Der Fehler kommt erst, seit ich den ganzen Gadgets ein weiteres ContainerGadget hinzugefügt habe mittels #PB_Any.
Erstetze ich dieses #PB_Any durch eine Konstante, geht es einwandfrei. AUch danach kann ich wieder #PB_ANY Gadgets hinzufügen ohne dieses Problem.
Ich denke nich tdass ich einen Programmierfehler mache wenn ich ein ContainerGadget(#PB_Any,.... ) hinzufüge, und es mit einer Konstante dann funktioniert.
Meine Frage ist eigentlich: Wie legt #PB_Any seine Werte fest (einfach von 0-x oder nach irgend einem besonderen Schema?)
Und warum werden werte über 10000 nicht automatisch ausgeschlossen, wenn der Debugger sie nicht mag?
Ich denke nicht dass es sinn macht meine 3000 Zeilen zu posten, eingrenzen kann ich es nicht, denn ausser der Zeile mit dem ContainerGadget hat sich nichts verändert, ich wüsste also nicht wo der Fehler läge, läge er bei mir. - Ich will Euch ja nicht auf Fehlersuche in meinem Programm schickien, sondern wenn einer eine Antwort auf meine obigen Fragen weiss, kann er sie ja posten.
2D Game H.E.R.A. (Entwicklung eingefroren)
www.chamaeleo-fx.de.vu
- mein Lieblingszitat
"die Informationsumwelt wird von einer fürchterlichen Menge an Unsinn und Lügen verschmutzt" (Stanislaw Lem, Lokaltermin, 1954 (!) )
http://www.stanislaw-lem.de/zitate/zitate.shtml
www.chamaeleo-fx.de.vu
- mein Lieblingszitat
"die Informationsumwelt wird von einer fürchterlichen Menge an Unsinn und Lügen verschmutzt" (Stanislaw Lem, Lokaltermin, 1954 (!) )
http://www.stanislaw-lem.de/zitate/zitate.shtml
Genau das habe ich gemeint. Der Satz "Hilfe, mein 3000 Zeilen Programm
reagiert komisch.. das muss ein PB bug sein. Behebt das schnell!" nützt niemandem etwas.
Und es gilt: Wenn es keinen Weg gibt den Fehler zu reproduzieren auser
in diesem einen Programm, ist die warscheinlichkeit hoch, dass es doch
an dem Programm liegt.
Die #PB_Any werte sind Speicheradressen, die sind eben sehr hoch.
Das ist aber kein Problem, weil der Debugger weis, wenn es sich um ein
solches handelt. Der überprüft nicht einfach nur die größe der Zahl.
Falls in der Überprüfung wirklich ein Fehler sein sollte muss das auch
mit weniger als 3000 Zeilen reproduzierbar sein. Ein durchschnittlicher
Bug lässt sich mit 10-30 Zeilen reproduzieren.
Aber wie gesagt, ohne Code kann sowiso keiner was machen...
the_pharao:
Das ist eindeutig die falsche Art! Die Daten für die selbst vergebenen Objektnummern
werden praktisch in einem internen Array gespeichert. Wenn du also einfach
ständig die Nummer erhöhst, wächst das Array dauernd an. Desshalb soll man
da nicht so hohe Nummern verwenden und darauf macht der Debugger hier
aufmerksam.
reagiert komisch.. das muss ein PB bug sein. Behebt das schnell!" nützt niemandem etwas.
Und es gilt: Wenn es keinen Weg gibt den Fehler zu reproduzieren auser
in diesem einen Programm, ist die warscheinlichkeit hoch, dass es doch
an dem Programm liegt.
Die #PB_Any werte sind Speicheradressen, die sind eben sehr hoch.
Das ist aber kein Problem, weil der Debugger weis, wenn es sich um ein
solches handelt. Der überprüft nicht einfach nur die größe der Zahl.
Falls in der Überprüfung wirklich ein Fehler sein sollte muss das auch
mit weniger als 3000 Zeilen reproduzierbar sein. Ein durchschnittlicher
Bug lässt sich mit 10-30 Zeilen reproduzieren.
Aber wie gesagt, ohne Code kann sowiso keiner was machen...
the_pharao:
Das ist eindeutig die falsche Art! Die Daten für die selbst vergebenen Objektnummern
werden praktisch in einem internen Array gespeichert. Wenn du also einfach
ständig die Nummer erhöhst, wächst das Array dauernd an. Desshalb soll man
da nicht so hohe Nummern verwenden und darauf macht der Debugger hier
aufmerksam.
Hm, wenn es wirklich an #PB_Any liegt, dann ist es doch eher zufall. Biste du dir denn sicher, das der Debugger weiß, wann die Nummer von #PB_Any und wann von hand gesetzt wurde? Wenn ja dann muss das ja nen Fehler von SirCus, welcher dann evetuell garnichts mit dem Gadget selber zu tun hat
.
Also um das zu reproduzieren und nicht die 3000 Zeilen posten zu müssen wäre vielleicht eine möglichkeit, nur die erstellung der Gadgets raus zu suchen und diese dann alleine zu testen. Vielleicht ist so das Problem ja auch zu reproduzieren. Ansonnsten wäre wohl dann wirklich nur der post deines Programms nötig, um den Fehler genau finden zu können.
Aber wenn #PB_Any ja die Speicheradresse zurück gibt, dann ist es ja doch wieder nur per Zufall möglich, eine zu hohe Zahl zu erhalten, oder? O_o
MFG PMV
Also um das zu reproduzieren und nicht die 3000 Zeilen posten zu müssen wäre vielleicht eine möglichkeit, nur die erstellung der Gadgets raus zu suchen und diese dann alleine zu testen. Vielleicht ist so das Problem ja auch zu reproduzieren. Ansonnsten wäre wohl dann wirklich nur der post deines Programms nötig, um den Fehler genau finden zu können.
Aber wenn #PB_Any ja die Speicheradresse zurück gibt, dann ist es ja doch wieder nur per Zufall möglich, eine zu hohe Zahl zu erhalten, oder? O_o
MFG PMV
schon interessant wie schön man in nem Forum aneinander vorbeireden kann...freak hat geschrieben:Genau das habe ich gemeint. Der Satz "Hilfe, mein 3000 Zeilen Programm
reagiert komisch.. das muss ein PB bug sein. Behebt das schnell!" nützt niemandem etwas.
Du weisst also auch nicht ob das ein Fehler in PB ist oder nicht. Gut.. kein thema, aber dann musst du auch nichts hierzu schreibne wenn du nicht magst...
Ich konnte es bisher nicht reproduzieren, hab ein paar Testcodes geschrieben die automatisch Gadgets erstellen, bisher konnte ich en Fehler noch nicht reproduzieren, ausser in meinem Programm.
Sonst hätte ich das gesagt.
In meinem Programm schreibe ich entweder
ContainerGadget(#PB_Any ...
oder
ContainerGadget(9999, ...
im ersten fall bekomme ich den Fehler, im zweiten nicht.
Ich wüsste nicht wo ich mich hier verprogrammiert haben sollte, es ging mir NUR um Ideen, warum der Debugger so reagiert, bei einem Gadget OBjekt, welches mit #PB_Any erstellt wurde.
NICHT darum dass Du schnell einen PB Bug behebst. Wenn Du keine Idee hast, dann hast du eben keine..
darüber hab ich auch schon nachgedacht, aber wie gesagt... wenn man obige Angaben berücksichtigt, fällt mir kein Grund ein, warum der Fehler im Programm liegen könnte.Und es gilt: Wenn es keinen Weg gibt den Fehler zu reproduzieren auser
in diesem einen Programm, ist die warscheinlichkeit hoch, dass es doch
an dem Programm liegt.
Wenn Du eine Idee hast, und sie mir mitteilst, dann hab ich schon erreicht was ich erreichen wollte.
scheint aber vielleicht nicht so zu sein, konnte es nur noch nicht anderweitig reproduzierenDie #PB_Any werte sind Speicheradressen, die sind eben sehr hoch.
Das ist aber kein Problem, weil der Debugger weis, wenn es sich um ein
solches handelt. Der überprüft nicht einfach nur die größe der Zahl.
da bin ich sicher, aber ich habe noch n icht rausgefunden wie.Falls in der Überprüfung wirklich ein Fehler sein sollte muss das auch
mit weniger als 3000 Zeilen reproduzierbar sein. Ein durchschnittlicher
Bug lässt sich mit 10-30 Zeilen reproduzieren.
Möglicherweise liegt es daran dass ich nicht alle Gadgets mit #PB_Any erstelle, sondern einen Teil mit ENUM Konstanten.
Aber da probiere ich grad noch rum.
Bislang hab ich noch nix herausgefunden, deshalb hab ich mal nachgefragt ob Einer von Euch vielleicht eine Idee hat, oder das Problem auch schonmal hatte...
2D Game H.E.R.A. (Entwicklung eingefroren)
www.chamaeleo-fx.de.vu
- mein Lieblingszitat
"die Informationsumwelt wird von einer fürchterlichen Menge an Unsinn und Lügen verschmutzt" (Stanislaw Lem, Lokaltermin, 1954 (!) )
http://www.stanislaw-lem.de/zitate/zitate.shtml
www.chamaeleo-fx.de.vu
- mein Lieblingszitat
"die Informationsumwelt wird von einer fürchterlichen Menge an Unsinn und Lügen verschmutzt" (Stanislaw Lem, Lokaltermin, 1954 (!) )
http://www.stanislaw-lem.de/zitate/zitate.shtml
Hm, ich habs jetzt auch mal versucht, das beispielprogramm hat mir mal über 5000 Gadgets geöffnet
, alle mit einer #PB_Any Speicherardesse von über 1.000.000
. Also der Debugger weiß im normalfall, wann mit #PB_Any und wann damit nicht gearbeitet wird.
Also ists bei dir aus irgend einem grund ein Spezialfall
Bei deinem Code müsste doch jedes mal deinem ContainerGadget wenn das Programm abläuft ne andere Speicheradresse zugewießen werden, oder nicht? Wenn die gleich bleibt, vielleicht posteste mal den genauen Wiedergabewert von #PB_Any. Vielleicht, aber nur ganz vielleicht hilft das ja weiter und genau diese wert erkennt der Debugger weißt gott warum nicht an
MFG PMV
Also ists bei dir aus irgend einem grund ein Spezialfall
Bei deinem Code müsste doch jedes mal deinem ContainerGadget wenn das Programm abläuft ne andere Speicheradresse zugewießen werden, oder nicht? Wenn die gleich bleibt, vielleicht posteste mal den genauen Wiedergabewert von #PB_Any. Vielleicht, aber nur ganz vielleicht hilft das ja weiter und genau diese wert erkennt der Debugger weißt gott warum nicht an
MFG PMV
PMV:
> Hm, wenn es wirklich an #PB_Any liegt, dann ist es doch eher zufall. Biste du dir denn sicher, das der Debugger weiß, wann die Nummer von #PB_Any und wann von hand gesetzt wurde?
Ja, da bin ich mir sicher. Hab die debug-routinen dazu ja bei mir auf dem PC.
Bin grad nur nicht dort.
Fehler kann man natürlich nie ausschließen. Aber Zufall ist es nicht
SirCus:
> Du weisst also auch nicht ob das ein Fehler in PB ist oder nicht. Gut.. kein thema, aber dann musst du auch nichts hierzu schreibne wenn du nicht magst...
Einige hier haben das anscheinend von Anfang an als PB bug abgestempelt,
meine Antwort hat sich vorallem auch an die gerichtet.
Naja, wenn es dann doch ein Bug ist bin ich schon dran interessiert, schließlich kann ich ihn dann direkt beheben...
Also, viel Glück bei der Suche.. falls du es gar nicht eingrenzen kannst,
kannst du mir den code gerne auch mal zukommen lassen dann kann
ich schauen ob es vielleicht ein bug ist.
> Hm, wenn es wirklich an #PB_Any liegt, dann ist es doch eher zufall. Biste du dir denn sicher, das der Debugger weiß, wann die Nummer von #PB_Any und wann von hand gesetzt wurde?
Ja, da bin ich mir sicher. Hab die debug-routinen dazu ja bei mir auf dem PC.
Bin grad nur nicht dort.
Fehler kann man natürlich nie ausschließen. Aber Zufall ist es nicht
SirCus:
> Du weisst also auch nicht ob das ein Fehler in PB ist oder nicht. Gut.. kein thema, aber dann musst du auch nichts hierzu schreibne wenn du nicht magst...
Einige hier haben das anscheinend von Anfang an als PB bug abgestempelt,
meine Antwort hat sich vorallem auch an die gerichtet.
Naja, wenn es dann doch ein Bug ist bin ich schon dran interessiert, schließlich kann ich ihn dann direkt beheben...
Also, viel Glück bei der Suche.. falls du es gar nicht eingrenzen kannst,
kannst du mir den code gerne auch mal zukommen lassen dann kann
ich schauen ob es vielleicht ein bug ist.
Code: Alles auswählen
Schleife=44
If OpenWindow(0,0,0,250,105,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"Create gadgets...")
If CreateGadgetList(WindowID(0))
For x=0 To Schleife
;y=ContainerGadget(#PB_Any,10,10,100,100)
; OpenGadgetList(y)
g=TextGadget(#PB_Any,10,10,30,30,Str(x))
;CloseGadgetList()
Next
Else
EndIf
Repeat : Until WaitWindowEvent()=#PB_Event_CloseWindow
EndIf Wenn ich die Gadgets in der Schleife wie oben erstellen lasse, geht es ganz problemlos
Nehme ich aber die ";" weg, so dass auch laufend neue ContainerGadgets erstellt werden, kommt bei mir sobald ich die "Schleife"Variable auf über 44 stelle ein Fehler, sobald ich das Programm beende. Bei höhreen Werten, z.B. 450 kommt dann gleich während dem PRogrammdurchlauf noch eine Fehlermeldung. "Fehler in der Anwendung PureBasic.." etc
Bei Euch auch?
Aber wie gesagt das ist nicht der eigentliche Fehler dieses Threads.
@PMV anscheinend unterscheided der Debugger schon, wie freak sagt.
Wenn ich die werte ansehe, sehe ich nur werte über 10000 , wenn ich mit PB_Any starte.
Nur bei meiner ursprünglichen anwendung hatte ich da so einproblem...
2D Game H.E.R.A. (Entwicklung eingefroren)
www.chamaeleo-fx.de.vu
- mein Lieblingszitat
"die Informationsumwelt wird von einer fürchterlichen Menge an Unsinn und Lügen verschmutzt" (Stanislaw Lem, Lokaltermin, 1954 (!) )
http://www.stanislaw-lem.de/zitate/zitate.shtml
www.chamaeleo-fx.de.vu
- mein Lieblingszitat
"die Informationsumwelt wird von einer fürchterlichen Menge an Unsinn und Lügen verschmutzt" (Stanislaw Lem, Lokaltermin, 1954 (!) )
http://www.stanislaw-lem.de/zitate/zitate.shtml