Verfasst: 06.06.2007 21:25
was hat ein simples setzten von "x=5" (was sich mir nicht ganz erschließt, WANN soll denn x = 5 sein?) mit proceduren zu tun???????
Das deutsche PureBasic-Forum
https://www.purebasic.fr/german/
Code: Alles auswählen
Global x.l
Procedure ErhoeheX()
x + 1
EndProcedure
[b]x = 5 [/b]
Debug x
ErhoeheX()
Debug x
Code: Alles auswählen
Procedure.d erhoehex(x) ;dieses x was in der klammer ist.
x =x +1
ProcedureReturn(x)
EndProcedure
x = 5
Debug x
x = erhoehex(x)
Debug x
Code: Alles auswählen
; Unsaubere Methode
Global x
Procedure MyAdd()
If x <= 8
x + 2
EndIf
EndProcedure
; Saubere Methode
Procedure MyAddFunction(Value.l)
If Value <= 8
Value + 2
EndIf
ProcedureReturn Value
EndProcedure
Debug MyAdd()
x = MyAddFunction(x)
Debug x
x = MyAddFunction(x)
Debug x
x = MyAddFunction(x)
Debug x
x = MyAddFunction(x)
Debug x
x = MyAddFunction(x)
Debug x
Code: Alles auswählen
Structure udtMitarbeiter
Name.s
Vorname.s
Stunden.f
Urlaub.l
EndStructure
Procedure SetNamen(*Mitarbeiter.udtMitarbeiter, Name.s, Vorname.s)
; Programmfehler abfangen
If @*Mitarbieter = 0
ProcedureReturn #False
EndIf
; Daten setzen
With *Mitarbeiter
\Name = Name
\Vorname = Vorname
EndWith
ProcedureReturn #True
EndProcedure
Procedure.s GetNamen(*Mitarbeiter.udtMitarbeiter)
Protected Result.s
; Programmfehler abfangen
If @*Mitarbeiter = 0
ProcedureReturn ""
EndIf
; Daten lesen
With *Mitarbeiter
Result = \Name + ", " + \Vorname
EndWith
ProcedureReturn Result
EndProcedure
Procedure AddStunden(*Mitarbeiter.udtMitarbeiter, Stunden.f)
; Programmfehler abfangen
If @*Mitarbieter = 0
ProcedureReturn #False
EndIf
; Daten bearbeiten
With *Mitarbeiter
\Stunden + Stunden
EndWith
ProcedureReturn #True
EndProcedure
Procedure SubStunden(*Mitarbeiter.udtMitarbeiter, Stunden.f)
; Programmfehler abfangen
If @*Mitarbieter = 0
ProcedureReturn #False
EndIf
; Daten bearbeiten
With *Mitarbeiter
\Stunden - Stunden
EndWith
ProcedureReturn #True
EndProcedure
Procedure.f GetStunden(*Mitarbeiter.udtMitarbeiter)
; Programmfehler abfangen
If @*Mitarbieter = 0
ProcedureReturn 0
EndIf
; Daten bearbeiten
ProcedureReturn *Mitarbeiter\Stunden
EndProcedure
; Test
; Mitarbeiter
Global Dim Arbeiter.udtMitarbeiter(10)
SetNamen(Arbeiter(1), "Meyer", "Hans")
SetNamen(Arbeiter(2), "Smith", "John")
Debug GetNamen(Arbeiter(1))
Debug GetNamen(Arbeiter(2))
AddStunden(Arbeiter(1), 8.0)
AddStunden(Arbeiter(1), 8.0)
SubStunden(Arbeiter(1), 4.0)
Debug "Stunden: " + StrF(GetStunden(Arbeiter(1)),2)
Code: Alles auswählen
InitSprite()
InitKeyboard()
Procedure abc()
For a=0 To 100
x+1
Delay(1)
Next
ProcedureReturn x
EndProcedure
If OpenScreen(1024,768,32,"Screen-Vorlage")
ClearScreen(RGB(0,0,0))
x=0
Repeat
FlipBuffers()
ClearScreen(RGB(0,0,0))
If StartDrawing(ScreenOutput())
DrawingMode(#PB_2DDrawing_Default)
Box(100+x,100,500,500,RGB(50,100,200))
StopDrawing()
EndIf
ExamineKeyboard()
If KeyboardPushed(#PB_Key_Right)
x+1
EndIf
If KeyboardPushed(#PB_Key_Left)
x-1
EndIf
If KeyboardPushed(#PB_Key_Return)
abc()
EndIf
If KeyboardReleased(#PB_Key_Escape)
End
EndIf
Until Quit=1
EndIf
Code: Alles auswählen
If KeyboardPushed(#PB_Key_Return)
x=abc()
EndIf