CLASS PB dialog

Informations pour bien débuter en PureBasic
Avatar de l’utilisateur
microdevweb
Messages : 1800
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

CLASS PB dialog

Message par microdevweb »

Image

REMARQUE: Ceci n'est qu'un teste, donc absolument pas finalisé.

Je sais que beaucoup d'entre-vous sont opposé au développement de type Poo. Mais voila ce que cela pourrait donné pour créer une fenêtre de type dialogue.

Dans ce teste je peux enchevêtrer plusieurs containers.

N'hésiter pas à donné votre avis, cela m'intéresse

:arrow: lien Github

Code de l'exemple

Code : Tout sélectionner

XIncludeFile "DIALOG.pbi"
EnableExplicit
Global myForm.DIALOG::_DIALOG = DIALOG::New(0,0,0,0,"Teste")
Global.CONTAINER::_CONTAINER mainContainer,ContentContainer,ButtonContainer
Global.GADGET::_GADGET name,address,city,ButtonValidate,ButtonChancel
; Create main container
mainContainer=myForm\AddContainer("item:1")
; Create a container for the fields it's a son of main container.
ContentContainer=mainContainer\AddContainer("no",CONTAINER::#Vertical)
; Create a container for the buttons it's a son of main container.
ButtonContainer=mainContainer\AddContainer("no",CONTAINER::#Vertical)
; set width for all buttons
ButtonContainer\SetWidth(100)
; set width for all fields
ContentContainer\SetWidth(300)
; add fields to their container
name=ContentContainer\AddStringGadget("Name")
address=ContentContainer\AddStringGadget("Address")
city=ContentContainer\AddStringGadget("City")
; add buttons to their container
ButtonValidate=ButtonContainer\AddButtonGadget("Validate")
ButtonChancel=ButtonContainer\AddButtonGadget("Chancel")
; define some procedures for testing.
Procedure EventToValide(*gadget.GADGET::_GADGET)
  MessageRequester("Info","Clic sur "+*gadget\GetTitle())
EndProcedure
Procedure EventToChancel(*gadget.GADGET::_GADGET)
  MessageRequester("Info","Clic sur "+*gadget\GetTitle())
  End
EndProcedure

;  Add callback at validate button
ButtonValidate\AddCallback(@EventToValide())
;  Add callback at chancel button
ButtonChancel\AddCallback(@EventToChancel())

If Not myForm\Open()
  End
EndIf
Repeat
  WaitWindowEvent()
ForEver 
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Avatar de l’utilisateur
Kwai chang caine
Messages : 6962
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: CLASS PB dialog

Message par Kwai chang caine »

Perso je n'ai rien contre la POO, si ça existe et si y'a tellement de monde qui la plébiscite, c'est surement que ça doit servir à quelque chose
J'ai compris que ça servait aux gros projets, car j'ai pu démontrer à un passionné de POO que quant on a des petits programmes, le temps qu'il mette en place ces classes, méthodes, instanciations et tout le toutim, y'avait longtemps que j'avais fini :mrgreen:
Ce que je reproche c'est que tout soit POO maintenant, du coups les langages comme le C, PB ..et ben "raus" on est has been :?

Ce qui serait top dans le meilleur des mondes, c'est comme le C++ pouvoir faire cohabiter ces deux structures, car en fait elles n'ont pas la même destination
Comme ça chacun a le choix de coder comme bon lui semble

Tu vas dire que je le fait exprès...mais le corbeau KCC pourvoyeur de bad news a encore frappé :oops:
J'ai cette erreur quand je clique sur Validate après le messagerequester, si je rentre pas de texte
W7 X86
Attente du démarrage du programme...
Type d'exécutable: Windows - x86 (32bit, Unicode)
Exécutable démarré.
[ERREUR] main.pb (Ligne: 25)
[ERREUR] Accès mémoire invalide. (erreur de lecture à l'adresse 4)
Le programme a été arrêté.
ou celle ci si j'en rentre
Attente du démarrage du programme...
Type d'exécutable: Windows - x86 (32bit, Unicode)
Exécutable démarré.
[ERREUR] main.pb (Ligne: 25)
[ERREUR] Instruction illégale. (exécution de données binaires?)
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Re: CLASS PB dialog

Message par djes »

Je trouve que c'est un très bel exercice ! Ca montre que même avec PB on peut avoir une approche POO, sans que pour autant ça devienne incompréhensible "à première vue", même s'il y a un sacré boulot derrière (je n'ai d'ailleurs pas tout pigé lol). Tu pourrais en faire un tuto...
Marc56
Messages : 2147
Inscription : sam. 08/févr./2014 15:19

Re: CLASS PB dialog

Message par Marc56 »

J'ai aussi une IMA mais en compilation x86 uniquement. (même contexte que KCC)
sur la ligne:

Code : Tout sélectionner

MessageRequester("Info","Clic sur "+*gadget\GetTitle())
Note que ça illustre bien pourquoi la POO n'est pas la panacée: plus on met de lignes dans un code, plus multiplie le risque de bugs (souvent par oubli de traitement de toutes les possibilités)

C'est justement cette absence de POO qui fait que les programmes PB sont très fiables, rapides, faciles à débbuger et mettre à jour.

Quant à faire des grands programmes, c'est plus une question de méthode d'organisation que d'outils.
Un programme important est bien mieux réalisé quand l'analyste et le programmeur sont deux personnes différentes.

:wink:
Avatar de l’utilisateur
microdevweb
Messages : 1800
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: CLASS PB dialog

Message par microdevweb »

Merci à tous pour vos remarques,

Personnellement je suis asse d'accord sur le fait que le procédural est plus rapide et plus simple à développé donc j'utilise cette voie en premier. Par contre si l'on veux faire des modules réutilisables, la Poo peut s’avérer vraiment efficace pour l'utilisateur final tout en étant conscient que le développement du dit module vas demander beaucoup de travail et de rigueurs. Concernant un tuto pourquoi pas et concernant l'erreur en X86, je vais installer un compilo x86 et regarder à cela.
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Avatar de l’utilisateur
microdevweb
Messages : 1800
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: CLASS PB dialog

Message par microdevweb »

Voila le problème en x86 est corrigé.

Petite explication:

Code : Tout sélectionner

; j'utilisais 
callFunctionFast(*Address)
; Ceci fonctionnait en 64 pais pas en x86
; j'ai remplacé callFunctionFast par un prototype
; en début de module
Prototype proCallBack(*address)
; maintenant voici le code d'appel
Protected myProc.proCallBack
myProc=*callback ; adresse de la procédure
myProc(*Address) ; *Address = adresse qui se retrouve en paramètre de la procédure callback
Conclusion le compilateur x86 supporte peut-être mal CallFunctionFast() ou CallFunctionFast() avec un pointeur en paramètre?
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Avatar de l’utilisateur
Kwai chang caine
Messages : 6962
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: CLASS PB dialog

Message par Kwai chang caine »

Merci pour la correction.
Ce qui est bien avec la POO, c'est que la creation du langage est aussi simple que son utilisation, et je parle même pas des explications de bug :lol:

Ce qui est dingue, je l'ai déjà dit, car ce sujet revient x fois sur le tapis (encore sur le us hier, un pelo demande comment appeller une fonction poo en pb...je pense qu'il va pouvoir se la mettre sur l'oreille)
Donc la poo est née du procedural, et pb est procedural.
Donc moi ce que je comprends toujours pas, d'ailleurs je ne comprends jamais rien si ya l'acronyme poo dans une phrase :oops:
Bref pourquoi x membres ont créé une tonne de codes qui sont sensé faire de la poo ou de la pseudo poo (d'ailleurs faudra aussi m'expliquer le pseudo) et pourquoi personne n'est arrivé à recréer ce qu'a fait un genie il y a plusieurs décennies avec le c++

A moins que le c++ soit issue de l'asm comme le C d'ailleurs, et non pas du C...et tout le monde sait que l'asm peut tout faire. .

Qu'est ce qui fait que tout le monde abandonne en chemin ??

Je sais que pb sait tout faire ce que fait le C, sauf les cast, alors ce serait là le problème ?

Avec les modules, Fred a donné une possibilité à pb d'isoler des parties de codes...
Alors il est ou le youki. ..euh non ...le miasme...??

Est ce juste une question de connaissances, de capacité du développeur?
De ténacité, certains auraient tout juste mais n'auraient pas terminé. ..

Est ce qu'une fois pour toutes, quelqu'un pourrait être capable de créer un pbi que l'on puisse ajouter à son code afin de coder poo ou procedural dans un même code comme en c+×
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Patrick88
Messages : 1564
Inscription : mer. 21/janv./2004 18:24

Re: CLASS PB dialog

Message par Patrick88 »

CAST - Centre Accueil Soins Toxicomanes - Reims et Epernay

KCC serait il un Imagedes langages objets ??

:mrgreen:

pat
Marc56
Messages : 2147
Inscription : sam. 08/févr./2014 15:19

Re: CLASS PB dialog

Message par Marc56 »

Je supprime mon post, car ma réponse n'avait plus grand chose à voir avec le sujet initial :wink:
(message à supprimer. Merci)
Dernière modification par Marc56 le jeu. 03/août/2017 8:53, modifié 1 fois.
Avatar de l’utilisateur
Kwai chang caine
Messages : 6962
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: CLASS PB dialog

Message par Kwai chang caine »

@Patriiiiiiiiiick !!!!! :D
Je ne sais pas si KCC est un langage objet.
Mais il est parfois un objet de langage :mrgreen:

@Marc
Tu as tout à fait raison.
C'est "in" de coder poo
Tout le monde en réclame sans vraiment savoir pourquoi.
La plupart font de la 1/2 poo, et n'exploitent pas cette méthode à fond, la ou elle doit sûrement justifier sa lourdeur.

C'est vrai que pour les gros projets ça va plus vite.
Et pourtant un des plus gros "windons" a forcément été codé en procédural...
Mais le monde devient fainéant. ...tout. .tout de suite. ..sans se faire chier...J'entends tristement ça tous les jours :|

Mais c'est pas ce que je voulais dire.
Qu'est ce qui fait que noir de développeurs de notre communauté, et des sacrées pointures, se lancent dans un pbi de poo, et arrêtent leur projet avant la fin ??

Est ce qu'ils se rendent compte qu'en pb c'est impossible ?
Est ce qu'ils manquent de courage ou de temps, mais ils auraient pu y arriver, ils étaient sur la bonne voie ?

Si on recense, ya pas moins de 5 à 10 tentatives de poo ou pseudo poo incompletes.
Et ce qui ennerve un handicapé neuronal comme moi, c'est de voir qu'ils se ressemblent tous, ils remplissent le panneau de debug de noir de résultats, et j'arrive même pas, ne connaissant pas la poo, à me dire :
Tiens. ..celui là c'est vraiment de la vraie poo, on en est pas loin..
Puisque pour moi et pas mal de membres, c'est du chinois..

Donc pour parler audimate :
Tout le monde en parle car le procedural ...tout le monde veut prendre sa place
Mais au final...on ne demande qu'à en rire
Et si on attends un vrai projet complet...et ben
On n'est pas couché :lol:
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
microdevweb
Messages : 1800
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: CLASS PB dialog

Message par microdevweb »

@Kwai chang caine,

La plupart des langages sont compilé en Assembleur, l'assembleur est lui même interprété par le microprocesseur en langage machine. Certain langages sont compilé en C qui lui même est compilé en asm.

La POO est plus un principe q'un langage proprement dit. Et Pb permet une pseudo Poo sans abordé les sujets complexe tel-que le polymorphisme etc.

le polymorphisme pour info est la capacité de pouvoir nommé des méthodes (procédures) avec le même non mais des paramètres différents (entier,float) la bonne méthodes sera choisie en fonction du paramètre.
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Re: CLASS PB dialog

Message par djes »

microdevweb a écrit :@Kwai chang caine,
La plupart des langages sont compilé en Assembleur, l'assembleur est lui même interprété par le microprocesseur en langage machine. Certain langages sont compilé en C qui lui même est compilé en asm.
Non, ce n'est pas tout à fait ça, je me permets un petit commentaire. Les compilateurs créent en général un code objet (rien à voir avec la POO) qui est déjà en langage machine, qui lui même passera par l'édition de liens avant d'être incorporé à un fichier utilisable par le système d'exploitation.
L'assembleur est un langage, et par abus de langage ( :mrgreen: ), on confond souvent langage machine et assembleur. En fait, l'assembleur est une façon plus simple d'appréhender le langage machine, les mnémoniques (instructions en assembleur) étant (presque toujours) directement associés à une instruction en langage machine. Par exemple MOV c'est $A1 sur un processeur x86.

Il y a des exceptions, par exemple :
Java utilise une machine virtuelle, avec un langage machine propre, et l'exécution est une sorte d'émulation/compilation temps-réel. On peut d'ailleurs utiliser un autre langage que Java pour créer du code sur ces machines virtuelles.
Purebasic crée à partir du code source un fichier assembleur, qu'il transfère à FASM qui crée un fichier objet, avant l'édition de liens. Le programme est dit 'natif' car il est directement exécutable par le processeur, sans une étape d'interprétation.
Pour ce qui est du C, il est possible de créer des codes objet pour des processeurs différents. On peut autant créer du code natif, que du code pour une machine virtuelle. Beaucoup de langages proposent ça, avec plus ou moins de succès et de facilité...
Avatar de l’utilisateur
Kwai chang caine
Messages : 6962
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: CLASS PB dialog

Message par Kwai chang caine »

Merci de vos explications 8)
MicroDevWeb a écrit : Et Pb permet une pseudo Poo sans abordé les sujets complexe tel-que le polymorphisme etc.
Bon bah parlons par exemple de ce "PolyTrucphisme" 8O
Il existe pas dans la nature de papa et maman "PolyTrucphisme"....
Y'a pas un langage "PolyC" qui sait faire que des "PolyTrucphisme" .....

Alors comment il a fait ?

Image

Bon ....vous allez me dire ...il avait vraiment la tronche à créer des trucs à dormir dehors avec un billet de logement (comme disait ma grand mere :lol: )
On voit tres bien que d'avoir inventé tout ces trucs de guedin ça l'a pas arrangé... :mrgreen:

Bref, comment il a fait, ce brave homme, pour se trouver à créer des choses que l'on ne pourra jamais créer en PB ? 8O
Dans WIKI, ils disent même pas avec quel langage le C++ a été réalisé ??? la logique voudrait quand même que ce soit en C non ? puisque le C++ c'est un niveau au dessus du C
https://fr.wikipedia.org/wiki/C%2B%2B
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: CLASS PB dialog

Message par Zorro »

Pour moi le polymorphisme c'est ça :

Image

:lol:
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Avatar de l’utilisateur
microdevweb
Messages : 1800
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: CLASS PB dialog

Message par microdevweb »

A mon sens ce qui peu'être créer en C ou C++ peut l'être en Pb. Mais d'une manière différente c'est tout.

Encore une fois de plus la Poo n'est pas une finalité, les fonctions de base du C ou C++ sont très limitées. On est obligé d'inclure des bibliothèques pour avoir la plupart des fonctions. Avec Pb on à tous sous la main, mais derrière chaque fonction se cache à mon sens pas mal de lignes code. Maintenant il est vrai que quand on code en Pb on oublie peut'être les bases, rien que pour la gestion des strings qui ne peuvent essentiellement être faite qu'a base de tableaux. Oui maintenant Pb n'est pas parfait et je pense que si il avait une vrai couche Poo il intéresserait peut'être plus de monde. Mais qu'est ce que c'est fun d'utilisé ce langage.
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Répondre