Sujets variés concernant le développement en PureBasic
microdevweb
Messages : 1800 Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique
Message
par microdevweb » mer. 29/mai/2019 10:34
Perso je trouve qu'avec les macros dans ce cas-ci même si le code paraît plus clair cela devient difficile de gérer l'héritage et on perd complètement l'avantage de l’auto complétion.
Autre exemple
Code : Tout sélectionner
EnableExplicit
; MACRO OOP
CompilerIf #PB_Compiler_Processor = #PB_Processor_x86
Macro PROC_SIZE:4:EndMacro
CompilerElse
Macro PROC_SIZE:8:EndMacro
CompilerEndIf
Macro METHODE(CLASS)
DataSection
S_#CLASS:
EndMacro
Macro END_METHOD(CLASS)
E_#CLASS:
EndDataSection
EndMacro
Macro SET_METHODE(METHODE)
Data.i @METHODE
EndMacro
Macro CLASS(NAME)
Structure NAME
*methods
EndMacro
Macro NEW_CLASS(CLASS)
Protected *this.CLASS = AllocateStructure(CLASS)
EndMacro
Macro END_CLASS
EndStructure
EndMacro
Macro PUSH_METHOD(CLASS)
*this\methods = AllocateMemory(?E_#CLASS-?S_#CLASS)
*this\methods = ?S_#CLASS
EndMacro
CLASS(_draw)
name.s
END_CLASS
Procedure draw_setName(*this._draw,name.s)
With *this
\name = name
EndWith
EndProcedure
Procedure.s draw_getName(*this._draw)
With *this
ProcedureReturn \name
EndWith
EndProcedure
Procedure.i new_draw(name.s)
NEW_CLASS(_draw)
METHODE(_draw)
SET_METHODE(draw_setName())
SET_METHODE(draw_getName())
END_METHOD(_draw)
PUSH_METHOD(_draw)
*this\name = name
ProcedureReturn *this
EndProcedure
Interface draw
setName(name.s)
getName.s()
EndInterface
Define myDraw.draw = new_draw("teste")
Debug myDraw\getName()
Maintenant je ne vais pas relancer la polémique, mais l'oop sous Pb ressemble plus à de la poo (Falsam comprendra j'en suis sure
)
falsam
Messages : 7244 Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :
Message
par falsam » mer. 29/mai/2019 15:29
microdevweb a écrit : Falsam comprendra j'en suis sure
Je ne commenterais pas ^^
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
G-Rom
Messages : 3627 Inscription : dim. 10/janv./2010 5:29
Message
par G-Rom » mer. 29/mai/2019 15:37
microdevweb a écrit :
Maintenant je ne vais pas relancer la polémique, mais l'oop sous Pb ressemble plus à de la poo (Falsam comprendra j'en suis sure
)
J'ai aussi compris et je le rejoins aussi sur ce point.
Philippe_GEORGES
Messages : 119 Inscription : mer. 28/janv./2009 13:28
Message
par Philippe_GEORGES » jeu. 12/sept./2019 21:47
Pour en revenir au problème d'origine, la variable id n'était pas du bon type, il faut la déclarer en double.
Code : Tout sélectionner
Structure _struct
*methods
id.d ; d pas l !!! sinon plantage sur mac os x
dbName.s
EndStructure
Maintenant, le code fonctionne !
Phil
Philippe GEORGES
"La simplicité est la sophistication suprême" (De Vinci)
assistance informatique, création de logiciels
georges.informatique@gmail.com