POO et MacOS X

Sujets variés concernant le développement en PureBasic
Avatar de l’utilisateur
microdevweb
Messages : 1800
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: POO et MacOS X

Message par microdevweb »

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 :wink: )
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: POO et MacOS X

Message par falsam »

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

Re: POO et MacOS X

Message par G-Rom »

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 :wink: )
J'ai aussi compris et je le rejoins aussi sur ce point.
Avatar de l’utilisateur
Philippe_GEORGES
Messages : 117
Inscription : mer. 28/janv./2009 13:28

Re: POO et MacOS X

Message par Philippe_GEORGES »

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
Répondre