If + ProcedureReturn

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
sen-me
Beiträge: 478
Registriert: 17.07.2005 16:02
Wohnort: Saarbrücken
Kontaktdaten:

If + ProcedureReturn

Beitrag von sen-me »

Code: Alles auswählen

Procedure.q GetGadget()
 Protected share.q
 
 If GetGadgetState(7) = 0 : share = Val(GetGadgetText(5))
 ElseIf GetGadgetState(7) = 1 : share = Val(GetGadgetText(5))*1024
 ElseIf GetGadgetState(7) = 2 : share = Val(GetGadgetText(5))*1024*1024
 Else : share = Val(GetGadgetText(5))*1024*1024*1024 : EndIf
 
 ProcedureReturn share
EndProcedure

;...

If GetGadget() > Len("1234567890")
 Debug "X > 10"
EndIf

End
Gadget 5 ist ein StringGadget mit only Numeric Flag. (Beinhaltet 11)
Gadget 7 ist eine ComboBox. (0 ist ausgewählt)

Er müsste mir also X > 10 ausgeben...
Tut er aber nicht, warum?

Zum testen

Code: Alles auswählen

Procedure.q GetGadget()
 Protected share.q
 
 If 0 = 0 : share = 11
 ElseIf 0 = 1 : share = 11*1024
 ElseIf 0 = 2 : share = 11*1024*1024
 Else : share = 11*1024*1024*1024 : EndIf
 
 ProcedureReturn share
EndProcedure

If GetGadget() > Len("1234567890")
 Debug "X > 10"
EndIf

End
Bild
Benutzeravatar
Rubiko
Beiträge: 943
Registriert: 25.02.2005 19:43
Computerausstattung: Intel i7 2600k
8GB Ram
GeForce GTX 560 Ti
Wohnort: Schwabach

Re: If + ProcedureReturn

Beitrag von Rubiko »

Also bei deinem unteren Beispiel gibt er mir "X > 10" zurück...

EDIT: Rechtschreibfehler :roll:
Zuletzt geändert von Rubiko am 16.12.2006 15:08, insgesamt 1-mal geändert.
Ich wollte die Welt verändern, doch Gott gab mir nicht den Quelltext.
Benutzeravatar
sen-me
Beiträge: 478
Registriert: 17.07.2005 16:02
Wohnort: Saarbrücken
Kontaktdaten:

Beitrag von sen-me »

Hä?
bei mir nicht Oo
Bild
Benutzeravatar
tobe
Beiträge: 146
Registriert: 14.09.2006 17:33
Wohnort: Oktoberfest

Beitrag von tobe »

hi sen-me,

bei mir kommt auch X > 10 raus :)
PureBasic 4.40 (Windows - x86)
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

bei mir auch nicht...

aber die proc gibt 11 zurück, und sie läßt sich auch mit anderen vergleichen überprüfen...

Code: Alles auswählen

Procedure.q GetGadget() 
 Protected share.q 
  
 If 0 = 0 : share = 11 
 ElseIf 0 = 1 : share = 11*1024 
 ElseIf 0 = 2 : share = 11*1024*1024 
 Else : share = 11*1024*1024*1024 : EndIf 
  
 ProcedureReturn share 
EndProcedure 

Procedure.l TypeCheck()
  ProcedureReturn 10
EndProcedure

Debug GetGadget()
Debug Len("1234567890") 

a.l = 10
b.q = 10
c.f = 10
d.d = 10

If GetGadget() > a
 Debug "long geht" 
EndIf 
If GetGadget() > b
 Debug "quad geht" 
EndIf 
If GetGadget() > c
 Debug "float geht" 
EndIf 
If GetGadget() > d
 Debug "double geht" 
EndIf 
If GetGadget() > Val("10")
 Debug "Val() geht" 
EndIf 
If GetGadget() > ValQ("10")
 Debug "ValQ() geht" 
EndIf 
If GetGadget() > TypeCheck()
 Debug "Typecheck geht" 
EndIf 

End
wie man sieht, tritt das gleiche problem mit Val() wie mit Len() auf.
der eigens erstellte TypeCheck offenbart denselben Bug
anscheinend gibt es probleme beim vergleichen von rückgabewerten unterschiedlichen typs.

@Rubiko, tobe, sen-me

welches OS, welche PB-Ver?
ich hab PB4.00 auf win2k
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
helpy
Beiträge: 636
Registriert: 29.08.2004 13:29

Beitrag von helpy »

Ergebnis bei mir:

Code: Alles auswählen

11
10
long geht
quad geht
float geht
double geht
Val() geht
ValQ() geht
Typecheck geht
PB 4.01 / Windows XP
Windows 10
PB Last Final / (Sometimes testing Beta versions)
Benutzeravatar
tobe
Beiträge: 146
Registriert: 14.09.2006 17:33
Wohnort: Oktoberfest

Beitrag von tobe »

hi Kaeru Gaman,

ich hab winxp sp2
PureBasic 4 + update 4.01 + PBOSL

Code: Alles auswählen

11
10
long geht
quad geht
float geht
double geht
Val() geht
ValQ() geht
Typecheck geht
PureBasic 4.40 (Windows - x86)
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

aha... also wohl ein 4.00-Bug...

...muss ich wirklich mal langsam updaten... :lol:
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
sen-me
Beiträge: 478
Registriert: 17.07.2005 16:02
Wohnort: Saarbrücken
Kontaktdaten:

Beitrag von sen-me »

Ich hab 4.00 WinXP

Code: Alles auswählen

11
10
long geht
quad geht
float geht
double geht
ValQ() geht
Aber ich hab doch vor wenigen tagen erst PB neu runtergeladen Oo
Bild
Marvin
Beiträge: 497
Registriert: 17.07.2005 14:42
Wohnort: Krikkit

Beitrag von Marvin »

> aha... also wohl ein 4.00-Bug...
Anscheinend, ich hab 4.01 (XP SP2) und es klappt.
Debug Output hat geschrieben:11
10
long geht
quad geht
float geht
double geht
Val() geht
ValQ() geht
Typecheck geht
Antworten