=> Les confidences de SPH

Sujets variés concernant le développement en PureBasic
Avatar de l’utilisateur
SPH
Messages : 5037
Inscription : mer. 09/nov./2005 9:53

=> Les confidences de SPH

Message par SPH »

J'ai commencé la programmation il y a longtemps et j'ai toujours codé de facon non conventionnelle. Je veux dire par la que je preferais me retaper entierement une partie du code alors qu'une instruction toute faite existait. Ainsi, mon code ressemble plutot a un gros paquet d'instructions qui n'a pas d'encadrement telle qu'une fenetre, des onglets, des gadgets, etc....
Je sais coder le fond mais pas la forme. Dans mes codes, il n'y a pas de gadgets (je ne sais pas ce que c'est !!), de procedures, etc....
Est-ce grave ?
A mes yeux non. J'arrive toujours a me debrouiller pour arriver a mes fins mais mon travail est souvent inpresentable. Au moins, il interfere avec un utilisateur via une console qui contient des print et des input !!

Quand je vois certains se lancer dans des projets de libs et de DLL, je les admire mais j'y pige rien. J'aimerais les aider mais mon code est toujours "brut" sans avoir de formes...

Je m'ennuie de ne pas etre utile...

Qu'en dites vous ?
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

lit la doc, examine les exemples, et aprends ce qu'est un Gadget
(un element actif o inactif d'une interface utilisateur, Bouton,Text,zone d'entré de texte, radio bouton,ect ....)
franchement c'est pas dur, tu t'embete plus a utiliser la console qu'a utiliser les Gadgets :D

une Dll ce sont ni plus ,ni moins, qu'une serie de Procedures (voir Doc au mot Procedure ) qui sont mis dans un format special (compilation DLL)
et appelable d'un autre programme :D

rien de bien compliqué la dedans :D ...

une lib, c'est comme une DLL , sauf que sont format permet de l'apeller
directement du PureBasic

si tu cree une procedure (dans le temps on appelai ça des Functions en GFA basic ) "meteo", donc le but est de se connecter a Meteo.FR
tu le met au format Librairie a l'aide de l'utilitaire "Taillbite"

ensuite tu pourra utiliser cette nouvelle instruction dans le purebasic
et dans ton listing futur ta nouvelle instruction "meteo"
affichera une fenetre navigateur avec le site de Meteo.fr dedans

c'est un exemple de ce qu'on peut faire grace au librairies
tu peux inventer de nouvelles commande personel , cela permet de creer
des instructions, que le pure basic, n'a pas en Natif :D





tu compille ton Prg
Avatar de l’utilisateur
SPH
Messages : 5037
Inscription : mer. 09/nov./2005 9:53

Message par SPH »

Ce qui me ferait le plus de bien, ce serait de savoir manier l'editeur visuel. Il nous pond un squelette qu'il est a mes yeux difficile de remplir...

Tiens, un exemple :

Faire une fenetre contenant 4 onglets en haut de celle ci.
Le premier onglet nous demanderait d'inscrire dans un champ vide un nombre que nous appelleront X
Le deuxieme onglet ferait apparaitre une liste deroulante contenant : +; -; * et /
Le troisieme onglet nous demanderait aussi de remplir un champ d'un nombre que l'on nomera Y
Le quatrieme onglet contiendrait un bouton a cliqué nommé "resultat" et qui afficherait le resultat de l'operation X et Y.

********

Certains sont capables de realiser ce simple enoncé... mais pas tout le monde...
L'inconveniant, c'est que nul part on nous enseigne a le faire (pas de tutos :x )
poshu
Messages : 1138
Inscription : sam. 31/juil./2004 22:32

Message par poshu »

l'algorythmie ca ne s'enseigne pas, ca s'apprend seul.
La fenetre que tu a décrite se code en une demi heure sans autre connaissance que la touche "F1" et un peu de jugeotte.
Dorian
Messages : 489
Inscription : mar. 15/mars/2005 15:33

Message par Dorian »

En faite, je vois pas trop où tu bloque avec l'éditeur :? . Mais sa reste néanmoins plus simple que le faire à la main.

Manque de compréhansion du code généré ?
Code généré non adapté ?
euh ... autre chose ?

Personnelement je faisait peu d'interface avant mais une fois que l'on s'y met un peu, on comprend assez vite :wink: .

Certe ce serai nikel un VD comme VisualStudio :lol: . J'essai de faire un IDE pour PureBasic en C# (je sais c'est honteux :oops: mais bon j'aime bien aussi le C#) mais je bloque sur l'IntelliSense et la colorisation :evil: .

Mais bon c'est du HS total ^^. Le mieux est d'étudier des interfaces simples et leurs codes, enfin si tu bloqe sur sa :?:
Lna
Messages : 181
Inscription : mar. 21/juin/2005 11:11

Message par Lna »

SPH, je trouve ça bien que tu sois capable de programmer de la sorte, et que tu ne te contentes pas non plus de ce qui existe. 8)
Qu'est-ce qu'une convention, sûrement encore un truc pour faire perdre des batailles avant la guerre. :wink:

Maintenant, il faut apprendre à classer tes lignes de programmes en blocs de procédures réutilisables, avec des noms significatifs de ton choix et des paramètres. 8O

Pour les gadgets, c'est de la gestion d'événements. 8O

L'éditeur visuel c'est bien pour positionner les gadgets, les préremplir pour l'initialisation et attribuer une constante à chacuns, il ne faut pas trop compter dessus pour plus, c'est déjà bien.

Pour plus d'exemples lance aussi une recherche dans ton répertoire codearchiv sur les noms des gadgets, ... :wink:

@ peluche
Frenchy Pilou
Messages : 2194
Inscription : jeu. 27/janv./2005 19:07

Message par Frenchy Pilou »

Du moment qu'on se fait plaisir, quelle importance de recréer la roue même si elle existe déjà :D :wink:
Et seul le résultat compte! 8)
Est beau ce qui plaît sans concept :)
Speedy Galerie
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Message par djes »

Tu as tout du programmeur unix ;) Faire un programme en console, c'est loin d'être un tort. La plupart des bons programmes fonctionnent de cette façon : ils traitent des données d'un flux entrant vers un flux sortant. L'un des avantages de cette méthode est que l'on distingue bien le "moteur" du programme, de l'interface homme machine. C'est aussi très modulaire!

Quant à tes "manques" quant aux procédures, etc., c'est une question de temps! Ta cervelle doit s'habituer!!! J'ai commencé à programmer à neuf ans. Je peux déjà te dire qu'il m'a fallu du temps avant de comprendre (seul) ce que c'était qu'un tableau, et le reste. Chaque jour j'apprends, et même si je sais que je ne saurai jamais tout, que je ne serai jamais le meilleur, j'essaye d'exploiter mon potentiel et de m'intéresser à tout, ça peut servir!!! Je ne sais plus où j'ai lu que le savoir n'avait pas de poids, que c'était un trésor qu'on pouvait emmener partout. :)
ATHOW
Messages : 226
Inscription : mer. 29/déc./2004 16:54

Message par ATHOW »

poshu a écrit :l'algorythmie ca ne s'enseigne pas, ca s'apprend seul.
La fenetre que tu a décrite se code en une demi heure sans autre connaissance que la touche "F1" et un peu de jugeotte.
Arg, je pense que si mes profs te lisaient, ils se pendraient :)
Je comprends ce que tu as voulu dire, mais même si c'est loin d'être une obligation, l'algorithmique s'enseigne !

Pour ma part, je conseillerai plutôt à SPH de lire et relire patiement l'aide, les exemples et les codes des autres membres du forum, sans se dire "bon, la, je comprend pas, j'y reviendrai plus tard".

Je pense que tout le monde apprend plus ou moins de cette façon.
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

L'algo, faut surtout le comprendre... Et faut aussi un minimum connaître le fonctionnement d'un ordi, ca aide beaucoup à comprendre ce qu'on fait.

A mon avis, commencer avec un langage bas-niveau est plus judicieux pour démarrer. Ca tombe bien, PB offre pas ma de fonctionnalités bas-niveau ^_^.

Pour ce qui est des langages qui tendent plus vers l'objet, l'algo en lui même change fondamentalement mais repose de toute facon sur des algo classiques...

Donc retour à la case départ, je pense que pour commencer à coder il faut comprendre ce que signifient au niveau de l'ordinateur les concepts de base (variables, boucles, opérations, instructions...)

Dri
Avatar de l’utilisateur
SPH
Messages : 5037
Inscription : mer. 09/nov./2005 9:53

Message par SPH »

L'editeur visuel de purebasic commence a m'enerver. Je ne sais pas si je vais rester calme...
Anonyme

Message par Anonyme »

L'editeur visuel de purebasic commence a m'enerver. Je ne sais pas si je vais rester calme...
:?

Il t'en faut pas beaucoup :D , mais ne désespère pas, et puis je trouve ta façon de codé correcte (le tunnel, le tut sur l'asm,...).
Ensuite pour le reste, c'est du "gadget" :D
D'ailleur je viens d'apprendre à utilisé les macros :D , comme quoi on en apprend tout les jours
Maintenant je vais essayer de comprendre dans quel cas je peut utilisé un quad, et son utilitée réelle. :D
Avatar de l’utilisateur
SPH
Messages : 5037
Inscription : mer. 09/nov./2005 9:53

Message par SPH »

Cpl.Bator a écrit :
L'editeur visuel de purebasic commence a m'enerver. Je ne sais pas si je vais rester calme...
ne désespère pas
Si, je desespere...
Tiens, admire les debilités que je pond.
Ici, mesdames et messieurs, 2 panel gadgets ! De memoire, sans faire l'imbecile, je me dit que l'un passe devant l'autre quand je le clique !!
Resultat :

Code : Tout sélectionner

; PureBasic Visual Designer v3.95 build 1485 (PB4Code)


;- Window Constants
;
Enumeration
  #Window_0
EndEnumeration

;- Gadget Constants
;
Enumeration
  #Panel_0
  #Panel_1
EndEnumeration


Procedure Open_Window_0()
  If OpenWindow(#Window_0, 216, 0, 600, 300, "New window ( 0 )",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
    If CreateGadgetList(WindowID(#Window_0))
      
      ;- Panel0
      PanelGadget(#Panel_0, 20, 20, 280, 220)
      AddGadgetItem(#Panel_0, -1, "Tab 1")
      
      ;- Panel2
      PanelGadget(#Panel_1, 98, -22, 240, 220)
      AddGadgetItem(#Panel_1, -1, "Tab 1")
      CloseGadgetList()
      CloseGadgetList()
      
    EndIf
  EndIf
EndProcedure

totalement décu... :mad:
Anonyme

Message par Anonyme »

Le but de ton code est donc d'afficher 2 panels gadgets
Le problème que tu avais est que tu superposais les 2 :
(je rapelle que les coordonées sont par rapport à la fenetre)
les coordonées du premier etait de 20, 20
les coordonées du second etait de 98, -22
Sachant que le premier à une taille de 280

Donc le deuxieme peut commencer a (280+20) / (Position Gadget_0 + Decalage de 20px) , pourquoi lui donnée une valeur négative en y ?
Regarde aussi ou j'ai mis les closegadgetlist().

Code : Tout sélectionner

Enumeration 
  #Window_0 
EndEnumeration 

;- Gadget Constants 
; 
Enumeration 
  #Panel_0 
  #Panel_1 
EndEnumeration 


Procedure Open_Window_0() 
  If OpenWindow(#Window_0, 216, 0, 600, 300, "New window ( 0 )",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar ) 
    If CreateGadgetList(WindowID(#Window_0)) 
      
      ;- Panel0 
      PanelGadget(#Panel_0, 20, 20, 280, 220) 
      AddGadgetItem(#Panel_0, -1, "Tab 0") 
      CloseGadgetList()
      ;- Panel2 
      PanelGadget(#Panel_1, 320, 20, 280, 220) 
      AddGadgetItem(#Panel_1, -1, "Tab 1") 
      CloseGadgetList() 
      EndIf 
  EndIf 
EndProcedure 

 Open_Window_0() 
  
 Repeat
 event = WindowEvent() ; Recupère les evenement ds la fenetre


 Until event = #PB_Event_CloseWindow ; si evenement = Fermeture fenetre, alors on sort de la boucle principale.
Voilà, j'éspère t'avoir aider un peu à se sujet :wink:
Mais si tu veut te détendre, prend une masse et explose ton pc en hurlant un cri primaire :D

@++
Lna
Messages : 181
Inscription : mar. 21/juin/2005 11:11

Message par Lna »

Je crois que SPH voulait plusieurs onglets sur un panel d'où la superposition, mais c'est à nous de les rajouter. 8O

Code : Tout sélectionner

Enumeration 
  #Window_0 
EndEnumeration 

;- Gadget Constants 
; 
Enumeration 
  #Panel_0 
EndEnumeration 


Procedure Open_Window_0() 
  If OpenWindow(#Window_0, 216, 0, 600, 300, "New window ( 0 )",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar ) 
    If CreateGadgetList(WindowID(#Window_0)) 
      
      ;- Panel0 
      PanelGadget(#Panel_0, 20, 20, 280, 220) 
      AddGadgetItem(#Panel_0, -1, "Tab 0") 
      AddGadgetItem(#Panel_0, -1, "Tab 1") ; <- C'est à nous de rajouter les onglets
      CloseGadgetList() 
      EndIf 
  EndIf 
EndProcedure 

 Open_Window_0()           ; Appel la procédure sinon pas exécuté
  
 Repeat 
 event = WaitWindowEvent() ; Recupère les evenement ds la fenetre

 Select event

   Case #PB_Event_Gadget
     Select EventGadget()
          
       Case #Panel_0 

         Debug GetGadgetState(#Panel_0) ; Recupère l'onglet selectionné

       EndSelect
     EndSelect

 Until event = #PB_Event_CloseWindow ; si evenement = Fermeture fenetre, alors on sort de la boucle principale.
@ peluche les nounours #nounours #nounours #nounours
Répondre