Seite 2 von 2

Verfasst: 01.02.2009 18:15
von Andesdaf
wieso postest du zweimal?

Ich würde erstens die Enum nicht in eine Procedure packen.
und zweitens dein Fenster #eingabe in ner separaten Procedure öffnen und
dann nur die Procedure öffnen statt dem ganzen Kram hier. Wegen der Über-
sichtlichkeit.

Verfasst: 01.02.2009 18:23
von Kaeru Gaman
du hast zwei geschachtelte Eventschleifen drin, die beide
Event = WaitWindowEvent()
enthalten. Zeile 879 und 937
das kann nur Ärger machen.
Kaeru Gaman hat geschrieben:1. Enums in den Hauptcode.
das ist eine Compilezeit-Sache, hat zur Laufzeit nix mehr zu schigge, deine Procedure ist LEER.

2. Windows-Enum auch bei NULL anfangen, nicht handle-tabelle für tausend fenster verbraten.

Verfasst: 01.02.2009 18:25
von Aspirant
Ok Punkt 1 setze ich gleich mal um
Ich breite doch nicht Tausend Fester vor ich fange nur bei Tausend an

Änderung der Enumeration brachte keine veränderung

falls der dazugeSQL Script gebraucht wird kann ich ihn auch noch Posten

MFG Aspi

Der Dioppel Post war ein versehn

Das mit dem Fenster werde ich machen, war eh geplant ist nur nicht Passiert, wegen des Fehler den ich nicht verstehe.

Verfasst: 01.02.2009 18:39
von KeyKon
Aspirant hat geschrieben:Ich breite doch nicht Tausend Fester vor ich fange nur bei Tausend an
Dennoch Reserviert PB dann Speicher für 1000 Fenster, kannst mal den einfach Test machen wenn du ein Fenster mit der ID 10000 Öffnest verbraucht das Programm mehr Arbeisspeicher als wenn du die ID 1 nimmst...

PS: Was soll das werden, sone Art FlyFF-Marktplatz^^?
Ich hab ja früher auch mal gespielt, aber finde das das Game mit der Zeit doch recht lahm wird...

Verfasst: 01.02.2009 18:40
von Kaeru Gaman
> Ich breite doch nicht Tausend Fester vor ich fange nur bei Tausend an

wenn du ein Fenster mit der Fensternummer 1000 erstellst,
macht PB intern eine Handle Tabelle für Tausend Fenster auf.
also immer bei Null anfangen.
das gilt für ALLE Objekte, die PB-Nummern haben können.


> Das mit dem Fenster werde ich machen, war eh geplant ist nur nicht Passiert, wegen des Fehler den ich nicht verstehe.
was meinst du?

entwirre doch erstmal deine zwei Event-Schleifen, mach da mal eine einzige draus.
Beispiel für Handling mehrerer Fenster in einer Schleife hatte ich ja gepostet.

Verfasst: 01.02.2009 18:57
von Aspirant
Ok Beseitige erst mal die fenster Sache und Breinige die schleifen udn melde mich dann noch mal

Soweit erst mal Danke

Verfasst: 01.02.2009 18:58
von Kaeru Gaman
uffa... hat ihn...

was für ein Monsterbug
Bild


also, das Problem liegt hier:

Code: Alles auswählen

                          For s=#cbg00 To #cbg00+21     ;Schleife zur Button erzeugung
                            sz= s - #cbg00               ;Schleifenzähler
                            SelectElement(tex(), sz)   ;Text aus wählen

                            Select sz                    ;Schleifen wert zur erzeugung den gadget
                              Case 0
                                TextGadget(#txg03+sz,xx1,10,44,sp02,tex()\ite )
                                TextGadget(s, xx1, 30, 34,sp02,Str(ID), #PB_Text_Border)
                                xx1=xx1+50
                              Case 1 To 2
                                TextGadget(#txg03+sz,xx1,10,44,sp02,tex()\ite )
                                ComboBoxGadget(s, xx1, 30, 44,sp02)
                                xx1=xx1+50
                              Case 3
                                TextGadget(#txg03+sz,xx1,10,sp05,sp02,tex()\ite )
                                ComboBoxGadget(s, xx1, 30, sp10,sp02, #PB_ComboBox_Editable)
                                xx1=xx1+100
                              Case 4 To 6
                                TextGadget(#txg03+sz,xx1,10,sp05,sp02,tex()\ite )
                                ComboBoxGadget(s, xx1, 30, sp10,sp02)
                                xx1=xx1+100
                              Case 7 To 8
                                TextGadget(#txg03+sz,xx1,10,sp05,sp02,tex()\ite )
                                StringGadget(s, xx1, 30, sp10,sp02,"", #PB_String_Numeric)
                                xx1=xx1+100
                              Case 9 To 13
                                TextGadget(#txg03+sz,xx2,55,45,sp02,tex()\ite )
                                ComboBoxGadget(s, xx2, 75, 45,sp02)
                                xx2=xx2+50
                              Case 14 To 25
                                TextGadget(#txg03+sz,xx2,55,45,sp02,tex()\ite )
                                StringGadget(s, xx2, 75, 45,sp02,"")
                                xx2=xx2+50
                            EndSelect
                          Next
du erzeugst hier in einer schleife, bei der sz von Null bis 21 durchläuft,
die Gadgets mit den nummern txg03 + sz als Textgadgets und
die Gadgets mit den nummern #cbg00 To #cbg00+21 als andere gadgets.

letztere hast du sauber eingeplant, aber mit txg03 bit txg03+21 überschreibst du die Gadgets zu folgenden Konstanten:

Code: Alles auswählen

#txg03
#txg04
#txg05
#txg06
#txg07
#txg08
#txg09
#txg10
#stg00      ;Benutzerneme Eingabefeld
#stg01      ;Passwort Engabefeld
#stg02
#stg03
#stg04
#stg05
#stg06
#stg07
#stg08
#stg09
#stg10
#bug00      ;Login Button
#bug01      ;Button Neuer User
#bug02      ;Button Neues Item
wenn die vorher schon mal erzeugt waren, verschwinden die natürlich.


also, besser aufpassen.

die Enumeration erzeugt lediglich eine fortlaufende Reihe von Konstanten.
diese Konstanten werden zur Compilezeit durch ihre Werte ersetzt.
also, aus #txg03 wird eine 3, aus #stg00 wird eine 11, aus #cbg30 wird eine 73 und aus #bug02 wird eine 24.
diese Zahlen darfst du natürlich nicht auch noch für andere Gadgets benutzen.
die Konstanten dienen nur dazu, dass man das beim Programmieren besser lesen kann.

Verfasst: 02.02.2009 00:22
von Aspirant
Ok ich danke dir erst ma ganz herzlich das erklärt warum ich es selbst hätte nie finden können.
Da ich Angenomen habe das der wert der Konstante sich am Name ausrichtet und nicht einfach nur zu einem wert wird.

Die sehr gute erklärung wird mich in zukuft hoffentlich vor solchen Fehler bewahren.

Danke allen die sich die Zeit genommen haben den Fehler zu finden.

MFG Aspi

Es stand noch die Frage ob es ein Marktplatz werden soll für Flyff. Das kann ich verneinen, es soll eine Datenbank werden über ein Werte verzeichniss von Items und ähnlichen Informationen die man im Game auf dem Schirm holen kann.
- wenn mann eine shop auf macht
- den wert eines Items ein zu schätzen will, um es zu erwerben
- jemand hinweise braucht wann welcher Quest dran ist
-- wo ich was dazu finde
-- was ich zum Lösen brauch
- Infos zum den Char typen und welche Skills Sinn machen

ich hoffe das reicht zu erklärung

Verfasst: 02.02.2009 00:27
von KeyKon
Da hast du ja einiges vor dir...

Verfasst: 02.02.2009 11:22
von Kaeru Gaman
Aspirant hat geschrieben:Da ich Angenomen habe das der wert der Konstante sich am Name ausrichtet und nicht einfach nur zu einem wert wird.
rtfm
http://www.purebasic.com/german/documen ... tions.html

...annehmen soll man höchstens Verstand und vielleicht mal ein Geschenk...