-GELÖST!- Problem mit Code
Übersicht

![]() |
EntenfelsBetreff: -GELÖST!- Problem mit Code |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich arbeite mich gerade in die GUI-Funktionen ein, habe jedoch plötzlich das Problem, dass der Debugger andauernd motzt.
Ich finde aber partout nicht heraus, wo der Fehler liegt. Code: [AUSKLAPPEN] winAnfang = CreateWindow ("Neue Karte", 700,300,300,265,17) Name_Map_Text = CreateLabel ("Name der Karte:",10,30,150,15,winAnfang) NameField = CreateTextField (10,45,270,20, WinAnfang) Great_Map_Text = CreateLabel ("Größe der Karte:",10,75,150,15,winAnfang) GreatField = CreateTextField (10,90,270,20,WinAnfang) Gold_Map_Text = CreateLabel ("Startmenge Gold:",10,120,150,15,winAnfang) GoldField = CreateTextField (10,135,270,20,WinAnfang) Button_OK_winAnfang = CreateButton ("OK",100,165,60,30,winAnfang,1) Global Gold=TextFieldText(GoldField) Global Namemap$=TextFieldText(NameField) Global GroesseMap=TextFieldText(GreatField) Dim Error(2) Repeat Ergebnis = WaitEvent() Select Ergebnis Case $803 End Case $401 If EventSource() = Button_OK_winAnfang Then newmap() End Select Forever ;Funktionen Function newmap() If GroesseMap<100 Then Error(0) = 1 If GroesseMap>800 Then Error(1) = 1 If Gold<0 Then Error(2) = 1 Numbererror=0 For a=0 To 2 If Error(a)=1 Then Numbererror=Numbererror+1 Next If Numbererror>0 Then If Error(0)=1 Then a$="Die gewählte Kartengröße ist zu klein. Bitte wähle einen Wert über 100!" If Error(1)=1 Then b$="Die gewählte Kartengröße ist zu groß. Bitte wähle einen Wert unter 800!" If Error(2)=1 Then c$="Die gewählte Startmenge an Gold ist zu niedrig. Bitte wähle einen Wert über 0!" Notify a$+Chr$(13)+b$+Chr$(13)+c$ End If If Numbererror = 0 Then End End Function Könnt ihr mir weiterhelfen? Wahrscheinlich bin ich nur verstockt. Dank im Vorraus Entenfels |
||
Die Details sind zu 94 Prozent zutreffend, bei sechs Prozent unvermeidbarer Extrapolation.
-Artemis Fowl von Eoin Colfer |
- Zuletzt bearbeitet von Entenfels am Mi, Okt 08, 2008 18:37, insgesamt einmal bearbeitet
![]() |
flona |
![]() Antworten mit Zitat ![]() |
---|---|---|
In der Funktion newmap verwendest du die Variable a einmal als Int und einmal als String. gib der ersten Variable einfach einen anderen Namen.
Und bei CreateWindow musst du vor 17 noch den Parent des Fensters angeben, also 0 bzw. Desktop() oder so. |
||
www.Dreier-Florian.kilu.de
Intel Core 2 Quad Q9400 | Zotac 9800GT | 4GB RAM | 1TB HDD | Windows 7 Professional 32bit |
![]() |
EntenfelsBetreff: Danke! |
![]() Antworten mit Zitat ![]() |
---|---|---|
Danke!
![]() ![]() ![]() |
||
Die Details sind zu 94 Prozent zutreffend, bei sechs Prozent unvermeidbarer Extrapolation.
-Artemis Fowl von Eoin Colfer |
![]() |
Entenfels |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich habe jetzt ein Problem mit FreeGadget.
Code: [AUSKLAPPEN] Global Gold
Global Namemap$ Global GroesseMap Global asdf$=CommandLine() If asdf$<>"Debug" Then winAnfang = CreateWindow ("Neue Karte", 700,300,300,235,0,17) Name_Map_Text = CreateLabel ("Name der Karte:",10,30,150,15,winAnfang) NameField = CreateTextField (10,45,270,20, WinAnfang) Great_Map_Text = CreateLabel ("Größe der Karte:",10,75,150,15,winAnfang) GreatField = CreateTextField (10,90,270,20,WinAnfang) Gold_Map_Text = CreateLabel ("Startmenge Gold:",10,120,150,15,winAnfang) GoldField = CreateTextField (10,135,270,20,WinAnfang) Button_OK_winAnfang = CreateButton ("OK",100,165,60,30,winAnfang,1) Dim Error(2) Repeat Gold=TextFieldText(GoldField) Namemap$=TextFieldText(NameField) GroesseMap=TextFieldText(GreatField) Ergebnis = WaitEvent() Select Ergebnis Case $803 FreeGadget winAnfang Case $401 If EventSource() = Button_OK_winAnfang Then newmap() End Select Forever End If If asdf$ = "Debug" Then Gold=300 GroesseMap=300 NameMap$="Debugmap" End If ;Funktionen Function newmap() For y = 0 To 2 Error(y)=0 Next If GroesseMap<100 Then Error(0) = 1 If GroesseMap>800 Then Error(1) = 1 If Gold<10 Then Error(2) = 1 Numbererror=0 For x=0 To 2 If Error(x)=1 Then Numbererror=Numbererror+1 Next If Numbererror>0 Then a$="" b$="" c$="" If Error(0)=1 Then a$="Die gewählte Kartengröße ist zu klein. Bitte wähle einen Wert über 100!" If Error(1)=1 Then b$="Die gewählte Kartengröße ist zu groß. Bitte wähle einen Wert unter 800!" If Error(2)=1 Then c$="Die gewählte Startmenge an Gold ist zu niedrig. Bitte wähle einen Wert über 10!" Notify a$+Chr$(13)+b$+Chr$(13)+c$ End If If Numbererror = 0 Then FreeGadget winAnfang End Function ![]() Bitte um Hilfe Entenfels |
||
Die Details sind zu 94 Prozent zutreffend, bei sechs Prozent unvermeidbarer Extrapolation.
-Artemis Fowl von Eoin Colfer |
DjDETE |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Du musst winAnfang "globalisieren" also am Anfang
Code: [AUSKLAPPEN] Global winAnfang machen, da ansonsten in der Funktion newmap die Variable und somit das Gadget überhauptnicht existiert. MfG DjDETE |
||
Aktuelles Projekt: XXX |XXX | 3% der v1b fertig
www.emu-soft.de.vu Für die Homepage suche ich noch Linktauschpartner, bei Interesse einfach melden. |
![]() |
EntenfelsBetreff: Klappt nicht |
![]() Antworten mit Zitat ![]() |
---|---|---|
Sorry, aber das funzt immer noch nich! ![]() ![]() ![]() |
||
Die Details sind zu 94 Prozent zutreffend, bei sechs Prozent unvermeidbarer Extrapolation.
-Artemis Fowl von Eoin Colfer |
DjDETE |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Also bei mir geht's, hier nochmal der Code:
Code: [AUSKLAPPEN] Global Gold Global Namemap$ Global GroesseMap Global asdf$=CommandLine() Global winAnfang If asdf$<>"Debug" Then winAnfang = CreateWindow ("Neue Karte", 700,300,300,235,0,17) Name_Map_Text = CreateLabel ("Name der Karte:",10,30,150,15,winAnfang) NameField = CreateTextField (10,45,270,20, WinAnfang) Great_Map_Text = CreateLabel ("Größe der Karte:",10,75,150,15,winAnfang) GreatField = CreateTextField (10,90,270,20,WinAnfang) Gold_Map_Text = CreateLabel ("Startmenge Gold:",10,120,150,15,winAnfang) GoldField = CreateTextField (10,135,270,20,WinAnfang) Button_OK_winAnfang = CreateButton ("OK",100,165,60,30,winAnfang,1) Dim Error(2) Repeat Gold=TextFieldText(GoldField) Namemap$=TextFieldText(NameField) GroesseMap=TextFieldText(GreatField) Ergebnis = WaitEvent() Select Ergebnis Case $803 FreeGadget winAnfang Case $401 If EventSource() = Button_OK_winAnfang Then newmap() End Select Forever End If If asdf$ = "Debug" Then Gold=300 GroesseMap=300 NameMap$="Debugmap" End If ;Funktionen Function newmap() For y = 0 To 2 Error(y)=0 Next If GroesseMap<100 Then Error(0) = 1 If GroesseMap>800 Then Error(1) = 1 If Gold<10 Then Error(2) = 1 Numbererror=0 For x=0 To 2 If Error(x)=1 Then Numbererror=Numbererror+1 Next If Numbererror>0 Then a$="" b$="" c$="" If Error(0)=1 Then a$="Die gewählte Kartengröße ist zu klein. Bitte wähle einen Wert über 100!" If Error(1)=1 Then b$="Die gewählte Kartengröße ist zu groß. Bitte wähle einen Wert unter 800!" If Error(2)=1 Then c$="Die gewählte Startmenge an Gold ist zu niedrig. Bitte wähle einen Wert über 10!" Notify a$+Chr$(13)+b$+Chr$(13)+c$ End If If Numbererror = 0 FreeGadget winAnfang End Function Falls du die Fehlermeldung meinst, die danach kommt, das liegt daran, dass die Funktion newmap() beendet wurde, und das Programm zu dem Punkt zurückspringt, an dem sie aufgerufen wurde. MfG DjDETE |
||
Aktuelles Projekt: XXX |XXX | 3% der v1b fertig
www.emu-soft.de.vu Für die Homepage suche ich noch Linktauschpartner, bei Interesse einfach melden. |
![]() |
Entenfels |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich meine "Invalid TextField Gadget handle". Wie kann ich das vermeiden???
Bin grade vollkommen ratlos, tut mir leid. ![]() Entenfels ![]() ![]() ![]() |
||
Die Details sind zu 94 Prozent zutreffend, bei sechs Prozent unvermeidbarer Extrapolation.
-Artemis Fowl von Eoin Colfer |
![]() |
flona |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du musst, wenn du das Fenster vernichtest auch das Programm mit End beenden.(Auch in newmap). Oder du setzt eine Globale Variable auf 1 und machst nicht Repeat .. Forever sondern Repeat ... Until Var=1. Ansonsten wird deine Schleife erneut durchlaufen und wenn du am Anfang der Schleife TextFieldText aufrufst, existiert das Gadget bereits nichtmehr. | ||
www.Dreier-Florian.kilu.de
Intel Core 2 Quad Q9400 | Zotac 9800GT | 4GB RAM | 1TB HDD | Windows 7 Professional 32bit |
DjDETE |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Deine Funktion "newmap" ist ja zuende, nachdem du überprüft hast, ob es Fehler gab. Wenn es keine Fehler gab, wird das Gadget "winAnfang" und alle, die damit verbunden sind, gelöscht. Da die Funktion zu Ende ist, springt das Programm wieder zu dem Punkt zurück, bei dem du die Funktion aufgerufen hast (Also in die Repeat-Schleife). Dort will dein Programm wieder auf die gelöschte Gadgets zugreifen, was nicht geht, da sie ja gelöscht sind. Das führt dann zur Fehlermeldung. Wenn du z.B. nach Freegadget noch : End hinzufügen würdest, also
Code: [AUSKLAPPEN] If Numbererror = 0 FreeGadget winAnfang : End
würde es zu keiner Fehlermeldung kommen. Ich hoffe ich konnte es dir jetzt erklären, mfG DjDETE Edit: Anstelle von End solltest du dann natürlich die nächste Funktion setzen (also z.B. spiel() ). |
||
Aktuelles Projekt: XXX |XXX | 3% der v1b fertig
www.emu-soft.de.vu Für die Homepage suche ich noch Linktauschpartner, bei Interesse einfach melden. |
![]() |
EntenfelsBetreff: Danke! |
![]() Antworten mit Zitat ![]() |
---|---|---|
So müsste es klappen!!!
![]() ![]() ![]() Vielen, vielen Dank! Entenfels |
||
Die Details sind zu 94 Prozent zutreffend, bei sechs Prozent unvermeidbarer Extrapolation.
-Artemis Fowl von Eoin Colfer |
DjDETE |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
np ![]() |
||
Aktuelles Projekt: XXX |XXX | 3% der v1b fertig
www.emu-soft.de.vu Für die Homepage suche ich noch Linktauschpartner, bei Interesse einfach melden. |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group