Xinclude und Proceduren
-
- Beiträge: 250
- Registriert: 25.11.2004 19:51
- Computerausstattung: Alienware Aurora / Intel Core i7 CPU @ 2.8 GHz / 64 Bit OS
Xinclude und Proceduren
Hallo zusammen,
ich habe ein kleines Problem mit dem Befehl XInclude und hoffe ihr könnt mir weiterhelfen.
Folgende kurze Erklärung:
In meinem Hauptprogrammteil - nennen wir es main.pb steht ganz oben drin Xincludefile("befehle.pb").
wenn ich nun im Hauptprogramm also in der main.pb hier eine Procedure einfüge die sich auf einen befehl aus der befehle.pb bezieht, funktioniert das nicht.
wenn ich das ganze jetzt aber ohne die procedure mache - sprich den befehl den ich aus der befehle.pb aufrufen möchte im main.pb - wie gesagt ohne diesen in eine procedure zu verpacken aufrufe - klappt alles soweit.
Was mach ich falsch?
Merci für eure mithilfe.
ich habe ein kleines Problem mit dem Befehl XInclude und hoffe ihr könnt mir weiterhelfen.
Folgende kurze Erklärung:
In meinem Hauptprogrammteil - nennen wir es main.pb steht ganz oben drin Xincludefile("befehle.pb").
wenn ich nun im Hauptprogramm also in der main.pb hier eine Procedure einfüge die sich auf einen befehl aus der befehle.pb bezieht, funktioniert das nicht.
wenn ich das ganze jetzt aber ohne die procedure mache - sprich den befehl den ich aus der befehle.pb aufrufen möchte im main.pb - wie gesagt ohne diesen in eine procedure zu verpacken aufrufe - klappt alles soweit.
Was mach ich falsch?
Merci für eure mithilfe.
PB 4.6 / 32 Bit / 64 Bit
Re: Xinclude und Proceduren
Code?
Anhand deiner Ausführungen getestet und nicht nachvollziehbar.
Funzt hier einwandfrei.
EDIT: Meins du vielleicht so?
In dem Fall erhältst du doch die eindeutige Fehlermeldung, dass man in Prozeduren keine Prozeduren definieren kann.
Anhand deiner Ausführungen getestet und nicht nachvollziehbar.
Code: Alles auswählen
;include.pbi
Procedure ABC()
ProcedureReturn 41
EndProcedure
Code: Alles auswählen
;main.pb
XIncludeFile "include.pbi"
Procededure Test()
ProcedureReturn ABC()
EndProcedure
Debug Test()
EDIT: Meins du vielleicht so?
Code: Alles auswählen
Procedure TEst()
XIncludeFile "include.pbi"
ABC()
EndProcedure
-
- Beiträge: 250
- Registriert: 25.11.2004 19:51
- Computerausstattung: Alienware Aurora / Intel Core i7 CPU @ 2.8 GHz / 64 Bit OS
Re: Xinclude und Proceduren
merci für die schnelle antwort - suspekt - wenn ich dein beispiel bentutze funktioniert alles wie es soll. mmhm
okay - meine procedure schaut wie folgt aus im hauptteil:
und im meinem include stehen die ganzen befehle wie z.b. LEMouse() das er mir dann auch in der procedur bemängelt.
Evtl sei gesagt, dass z. B. der Befehl LEMouse() ein Prototyp ist - kann es damit was zu tun haben?
okay - meine procedure schaut wie folgt aus im hauptteil:
Code: Alles auswählen
Procedure CameraUpdate()
mx = Curve(LEMouseX() - LEGraphicsWidth() / 2, mx, 6)
my = Curve(LEMouseY() - LEGraphicsHeight() / 2, my, 6)
LEMoveMouse(LEGraphicsWidth() / 2, LEGraphicsHeight() / 2)
camrotation.X = camrotation.X + my / 10.0
camrotation.Y = camrotation.Y - mx / 10.0
LERotateEntity(fw.Main.camera, camrotation)
move = LEKeyDown(#KEY_W) - LEKeyDown(#KEY_S)
strafe = LEKeyDown(#KEY_D) - LEKeyDown(#KEY_A)
LEMoveEntity(fw.Main.camera, Vec3(strafe / 10.0, 0, move / 10.0))
EndProcedure
und im meinem include stehen die ganzen befehle wie z.b. LEMouse() das er mir dann auch in der procedur bemängelt.
Evtl sei gesagt, dass z. B. der Befehl LEMouse() ein Prototyp ist - kann es damit was zu tun haben?
PB 4.6 / 32 Bit / 64 Bit
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: Xinclude und Proceduren
@smateja
Da wird nicht eine einzige Variable in der Procedure deklariert, sind die alle Global
Falls noch nicht geschehen: EnableExplicit als erstes im Code und dann natürlich alle
Variablen deklarieren, bevor man um Hilfe bittet.
Gruß
Thomas
Da wird nicht eine einzige Variable in der Procedure deklariert, sind die alle Global

Falls noch nicht geschehen: EnableExplicit als erstes im Code und dann natürlich alle
Variablen deklarieren, bevor man um Hilfe bittet.
Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

-
- Beiträge: 250
- Registriert: 25.11.2004 19:51
- Computerausstattung: Alienware Aurora / Intel Core i7 CPU @ 2.8 GHz / 64 Bit OS
Re: Xinclude und Proceduren
ARg - das wars - einfach die variablen definieren ggf. global etc.
Danke für den Tipp.
Danke für den Tipp.
PB 4.6 / 32 Bit / 64 Bit
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: Xinclude und Proceduren
fw.Main.camera
Was soll das sein? Aus welcher Sprache hast Du versucht was zu übersetzen?
Was soll das sein? Aus welcher Sprache hast Du versucht was zu übersetzen?
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

-
- Beiträge: 250
- Registriert: 25.11.2004 19:51
- Computerausstattung: Alienware Aurora / Intel Core i7 CPU @ 2.8 GHz / 64 Bit OS
Re: Xinclude und Proceduren
ts-soft hat geschrieben:fw.Main.camera
Was soll das sein? Aus welcher Sprache hast Du versucht was zu übersetzen?
Kurze Erklärung hierzu - ich bastel derzeit mit Leadwerks Engine rum - das include läuft einwandfrei...
Kleiner Auszug:
Code: Alles auswählen
Prototype.i LECreateFramework ( )
Prototype LEFreeFramework ( *fw.TFramework )
Prototype LERenderFramework ( )
Prototype LEUpdateFramework ( )
Prototype LESetStats ( mode.i )
Prototype LESetWireframe ( mode.i=1 )
Prototype LESetZoom ( zoom.f )
Prototype LEResetFramework ( )
Prototype LESetContrast ( contrast.f )
Prototype LESetBrightness ( brightness.f )
Prototype LESetSaturation ( saturation.f )
Prototype LESetHDR ( mode.i )
Prototype LESetBackgroundMode ( mode.i )
Prototype LESetSkybox ( material.i )
Prototype LESetDistanceFog ( mode.i )
Prototype LESetDistanceFogColor ( *color.TVec4 )
Prototype LESetDistanceFogAngle ( start.f, stop.f )
Prototype LESetDistanceFogRange ( nearrange.f, farrange.f )
Prototype LESetBloom ( mode.i )
Prototype LESetBackgroundColor ( *color.TVec4 )
Prototype LESetNearDOF ( mode.i )
Prototype LESetFarDOF ( mode.i )
Prototype LESetNearDOFStrength ( strength.f )
Prototype LESetFarDOFStrength ( strength.f )
Prototype LESetNearDOFRange ( start.f, stop.f )
Prototype LESetFarDOFRange ( start.f, stop.f )
Prototype LESetGodRays ( mode.i )
Prototype LESetSSAO ( mode.i )
Prototype LESetAntialias ( mode.i )
Prototype LESetWater ( mode.i )
Prototype LESetWaterWaveSpeed ( speed.f )
Prototype LESetWaterHeight ( height.f )
Prototype LESetWaterColor ( *color.TVec4, *submersioncolor.TVec4 )
Prototype LESetWaterSoftness ( softness.f )
Prototype LESetWaterVisibility ( nearrange.f, farrange.f )
Prototype LESetWaterAmplitude ( amplitude.f )
Prototype.i LEGetFrameworkLayer ( index.i )
Prototype.i LEGetLayerWorld ( layer.i )
Prototype.i LEGetLayerCamera ( layer.i )
Prototype.i LEGetFrameworkListener ( )
Prototype LESetReflectionElements ( elements.i )
Hab da auch schon paar Problemchen mit dem Dingens:
Es gibt eine Procedure die heißt
Code: Alles auswählen
Procedure Vec3 (*Result.Tvec3, px.f=0, py.f=#MAX_DEC, pz.f=#MAX_DEC )
With *Result
\X = px
If py=#MAX_DEC
\Y = px
Else
\Y = py
EndIf
If pz=#MAX_DEC
\Z = px
Else
\Z = pz
EndIf
EndWith
ProcedureReturn *Result
EndProcedure
Mein Hauptteil schaut so aus:
Code: Alles auswählen
EnableExplicit
XIncludeFile ("hw_engine.pbi")
;XIncludeFile ("hw_controlcam.pbi")
;XIncludeFile ("hw_screenrequester.pbi")
Define VResult.TVec3 ;if an expression requires more than one vec3 then define VResult2.TVec3, VResult3TVec3, etc ... for each vec3
Define sx.i
Define sy.i
Define framework.i
Define Lua.i
Define Camera.i
Define scene.i
Define player.i
Define font.i
Define move.f
Define strafe.f
Define jump.f
Define camrotation
Define camrotation_x.f
Define camrotation_y.f
Define mouse_x.f
Define mouse_y.f
Define playerpos
LERegisterAbstractPath(GetCurrentDirectory())
LESetAppTitle("Hiveworx Framework")
sx = 1024
sy = 768
If LEGraphics(sx,sy)>0
framework = LECreateFramework()
If framework>0
Lua = LEGetLuaState()
LELua_pushobject(Lua, framework);
LELua_setglobal(Lua, "fw");
LELua_pop(Lua, 1);
Camera = LEGetLayerCamera(LEGetFrameworkLayer(0))
LEPositionEntity(camera, Vec3(VResult,0, 350,0))
scene = LELoadScene("abstract::test001.sbx")
LEEntityType(scene,2,1)
player = LECreateController(1.8,0.4,0.5,45,0)
LEEntityType(player,1)
LESetStats(2)
font=LELoadFont("abstract::Arial12Shadow")
LESetFont(font)
move.f=0.0
strafe.f=0.0
jump.f=0.0
LEMoveMouse(LEGraphicsWidth()/2,LEGraphicsHeight()/2)
LEHideMouse()
XIncludeFile ("hw_grafikoptionen.pbi")
While (LEKeyHit(#KEY_ESCAPE)=0) And (LEAppTerminate()=0)
;-Mouse Look
mouse_x.f=Curve(LEMouseX()-LEGraphicsWidth()/2,mouse_x.f,6.0)
mouse_y.f=Curve(LEMouseY()-LEGraphicsHeight()/2,mouse_y.f,6.0)
LEMoveMouse(LEGraphicsWidth()/2,LEGraphicsHeight()/2)
camrotation=LEEntityRotation(camera,Vec3(VResult, mouse_y.f, mouse_x.f, 0))
camrotation_x.f=camrotation_x.f-mouse_x/10
camrotation_y.f=camrotation_y.f+mouse_y/10
LERotateEntity(camera,Vec3(VResult, camrotation_y.f, camrotation_x.f, 0))
;-Player movement
move=LEKeyDown(#KEY_W)-LEKeyDown(#KEY_S)
strafe=LEKeyDown(#KEY_D)-LEKeyDown(#KEY_A)
;-Set controller Input
LEUpdateController(player,Vec3(VResult, camrotation_y.f, camrotation_x.f, 0),move,strafe,jump,0.5);
;- Position Camera
playerpos=LEEntityPosition(player,Vec3(VResult),0)
;playerpos\y=playerpos\y+1.75
LEPositionEntity(camera,playerpos,0)
LEUpdateFramework() ;Update timing And world
LERenderFramework() ;Render
LESetBlend(1)
LEDrawText("CamPosX: ",800,20)
LEDrawText("CamPosY: ",800,40)
LEDrawText("CamPosZ: ",800,60)
LESetBlend(0)
LEFlip(0) ;Send to screen
Wend
Else
LEAppLog("ERROR: Failed to create Framework")
EndIf
LEFreeFramework(framework)
Else
LEAppLog("ERROR: Failed to create or set graphics mode")
EndIf
LEEndRender()
CloseLibrary(#Engine_Library)
mir gelignt das hier leider nicht:
;playerpos\y=playerpos\y+1.75
LEPositionEntity(camera,playerpos,0)
Letztere Zeile crashed die Engine - vorletzte Zeile mault der COmpiler dass es keine STructur gibt und ich weiß nicht wie ich sie definieren kann/soll.
LG
PB 4.6 / 32 Bit / 64 Bit
- HeX0R
- Beiträge: 3042
- Registriert: 10.09.2004 09:59
- Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3 - Kontaktdaten:
Re: Xinclude und Proceduren
Naja, hätte dein "kleiner Auszug" den Prototypen LEPositionEntity() beinhaltet, hätte man dir bestimmt helfen können.smateja hat geschrieben: mir gelingt das hier leider nicht:
;playerpos\y=playerpos\y+1.75
LEPositionEntity(camera,playerpos,0)
Letztere Zeile crashed die Engine - vorletzte Zeile mault der Compiler dass es keine Structur gibt, und ich weiß nicht wie ich sie definieren kann/soll.
LG
Aber, dass playerpos als stinknormale Integer-Variable definiert wurde und du daher selbstverständlich auf kein \y-Element zugreifen kannst, siehst du doch, oder?
{Home}.:|:.{Codes}.:|:.{Downloads}.:|:.{History Viewer Online}.:|:.{Bier spendieren}