Page 2 sur 2

Re: Transition VB6 vers PureBasic

Publié : ven. 20/janv./2012 15:29
par Golfy
Bon essayons d'être objectif :

Programmer n'est pas toujours simple, quelque soit le langage, cependant PureBasic propose des aides utiles :
1 - au niveau éditeur
F1 sur un mot clé permet d'accéder directement à son aide et dans l'aide il y a presque toujours un exemple (90%) ou bien un exemple sur la famille de l'instruction (par exemple "file" : openfile(), readfile(), etc.)
Lorsque tu tapes une instruction, après 3 lettres tu as de la complétion (touche [TAB] pour valider)
Lorsqu'une instruction est complète et que tu ajoutes la parenthèse d'ouverture ("openfile(" par exemple) tu as une mini-aide dans la barre d'état du programme (moi qui oublie souvent les paramètres possibles, ç'est cool :) )

2 - au niveau débogage
Actuellement je développe (à titre personnel) un programme pour étendre la gestion de ma domotique Velbus. Je ne suis pas programmeur de formation, j'ai même commencé sur Oric-1 (bon, surtout sur Atari ST avec le GFA Basic) : le débogueur et l'éditeur fonctionnent ensemble !!!
Du coup, tu lances ton programme en mode débogueur et toutes les commandes "Debug "toto"" ou "Debug var(t)" (à insérer dans ton programme)... affichent dans une fenêtre exprès les sorties dont tu as besoin... mais en plus, si ton programme bloque, tu peux passer la souris sur les variables de ton programme dans l'éditeur et il t'indique leurs valeurs.
Enfin, s'il plante (ça m'arrive souvent :roll: ) il y a un retour dans la fenêtre de l'éditeur avec le n° de ligne

3 - au niveau des formes (fenêtres, boite de dialogue, etc.)
Tu as 2 possibilités : utiliser l'éditeur graphique qui te génère un code purebasic ou bien ajouter toi-même tes instructions (gadgets, barres, listes, ...)
Ceci étant la différence majeure entre Purebasic et Visualbasic se situe ici : dans VisualBasic le code est attaché à la forme et aux objets... dans Purebasic, la forme est une coquille vide que du dois gérer (windowevent() et waitwindowevent() :roll: ) : les clics et évènements arrivent dans une file d'attente et toi tu effectues de actions en fonction de ces évènements.
Cette partie fût rude pour moi et reste surprenante parfois (surtout si tu essayes les threads).
J'attends toujours avec impatience un tableau éditable façon Excel (un truc simple, pas une lib avec des appels incompréhensibles à des DLL Microsoft :| ) mais il y a tout ce qu'il faut pour l'accès aux couleurs, fichiers, boites de dialogues, etc.

4 - au niveau performances
Comme il y a compilation, les programmes sont très rapides... mais le point fort de PureBasic est
a) la légèreté des exécutables (souvent quelques Ko)
b) la facilité de choisir les options (compatibilité, multithread, type CPU et instructions, ...)
c) d'utiliser des librairies faite par d'autres au sein de ton code

5 - Les variables
Phénoménal ! si toutes les variables pouvaient être signées/non-signées ce serait parfait ! ceci étant, des flottants, des entiers, des chaines, des variables globales, des variables locales (protected) et :
a) des structures (par exemple structure répertoire = nom.s (chaine) et numeroTel.i (nombre))
b) des listes chainées : tu ajoutes et retires des éléments à volonté et c'est Purabasic qui gère les malloc() et xxxfree()

6 - Les graphiques
sur cette partie il existe des graphes 2D, 3D mais je n'utilise qu'un peu de 2D... pourtant j'ai compilé les exemples fournis et ça à l'air hyper-puissant ! je crois même que c'est le domaine de prédilection de PureBasic

Voilà le petit tour que j'ai découvert il y a longtemps (sans m'en servir au début) et dont j'abuse pour mon projet : à ce prix là, je ne vois pas de concurrence ! :wink:

Re: Transition VB6 vers PureBasic

Publié : ven. 20/janv./2012 15:48
par Calade
Salut Golfy et merci d'avoir pris le temps de me répondre.

Parmi tous les termes employés par toi et les autres, beaucoup me parlent car les mêmes existent en VB ou je les ai rencontrés dans les autres langages.

La gestion des graphiques, je ne connais évidemment pas la gestion interne, mais j'ai connu PureBasic tout à fait incidemment quand j'ai cherché une bibliothèque rapide et de préférence gratuite pour me faire un gestionnaire pour mes photos (avec stockage des données EXIF dans une BDD pour recherche ultérieure. J'avais réussi à lire les données EXIF en VB6 avec l'aide d'un code trouvé sur le NET mais l'affichage de mes photos brutes en pure VB était d'une lenteur (15 secondes montre en main) rédhibitoire. Donc en cherchant une telle bibliothèque je tombe chez nos amis de developpez.com sur une adaptation en VB6 à partir d'une utilisation réalisée en PB de la DLL Micro$oft GDI+. Pas facile à prendre en main, mais extrêmement rapide.

C'est comme ça que j'ai entendu parler de PB, internet à fait le reste.

Je vais me trouver un tuto ou/et un code tout simple du style Hello World pour comprendre le principe de fonctionnement puisque il revient au procédural et là j'aviserais.

En tout cas merci encore pour ton post.

Re: Transition VB6 vers PureBasic

Publié : ven. 20/janv./2012 16:01
par Golfy
Voici le premier code à tester et comprendre : c'est celui de l'exemple qui illustre parfaitement les différences entre Purebasic et Visualbasic !

Code : Tout sélectionner

;
; ------------------------------------------------------------
;   PureBasic - Window example file
;    (c) 2001 - Fantaisie Software
; ------------------------------------------------------------
;
; Open a window, and do some stuff with it...
;
If OpenWindow(0, 100, 200, 195, 260, "PureBasic Window", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget)
  MessageRequester("Information", "Click to move the Window", 0)
  ResizeWindow(0, 200, 200, #PB_Ignore, #PB_Ignore)   ; Move the window to the coordinate 200,200
  MessageRequester("Information", "Click to resize the Window", 0)
  ResizeWindow(0, #PB_Ignore, #PB_Ignore, 320, 200) ; Resize the window to 320,200
  ;
  ; This is the 'event loop'. All the user actions are processed here.
  ; It's very easy to understand: when an action occurs, the EventID
  ; isn't 0 and we just have to see what have happened...
  ;
  Repeat
    Event = WaitWindowEvent()
    If Event = #PB_Event_CloseWindow  ; If the user has pressed on the close button
      Quit = 1
    EndIf
  Until Quit = 1
EndIf
End   ; All the opened windows are closed automatically by PureBasic
Bienvenue dans la communauté de Purebasic :D : j'ai souvent besoin d'aide ou d'exemple et généralement les réponses se font dans les 24h max...

Euh, pendant que j'y suis : le dummy du C est souvent représenté par la constante PureBasic #PB_Any :wink:

Re: Transition VB6 vers PureBasic

Publié : ven. 20/janv./2012 16:05
par Calade
Merci, c'est exactement ce que je cherchais.