Chronos Beta 2 0.9.5.17

Vous avez développé un logiciel en PureBasic et vous souhaitez le faire connaitre ?
cha0s
Messages : 681
Inscription : sam. 05/mars/2005 16:09

Message par cha0s »

Petit news histoire de donner des nouvelles.

Le précompilateur et a moité fonctionnelle, le PureObjet a ma sauce ne lui fait pas peur.

Un petit exemple :

Code : Tout sélectionner

Class Test  Extends Chose
	Structure
		test.b
		name.s
	EndStructure
	#test = 10
	#test2="salut sava?"
	
	Procedure.i test3()
		*this\name = "salut"
	Endprocedure
	
	Procedure.i test2()
		Protected *test.Test = New Test()
		*test\test = 2
      *test.test3()
	Endprocedure
EndClass
Pour ce qui est de l'éditeur je suis en train d'ajouter les options.
cha0s
Messages : 681
Inscription : sam. 05/mars/2005 16:09

Message par cha0s »

Premier programme compilé sous Chronos
Image
rien d'exceptionnel, j'ai ajouté les options de compilation, le choix des couleurs (syntaxe ....) et plein de petite chose.

Une version stable a dl dans quelques jours.
Dernière modification par cha0s le lun. 02/févr./2009 14:23, modifié 2 fois.
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Message par Progi1984 »

Tu pourrais pas réduire tes images de moitié de facon que ca rentre dans tous les résolutions.

Bon boulot :)
Anonyme

Message par Anonyme »

Any news ?
cha0s
Messages : 681
Inscription : sam. 05/mars/2005 16:09

Message par cha0s »

je suis en train de retravailler les projets en ajoutant la liste des structure commentaire procédure et classes et au passage je transforme l'autocomplétion car pour l'instant je balance tout la liste des procédures, structures ou autre sans analyse du code.

note amusante je suis obligé de recompiler Chronos sous Chronos car l'IDE officiel refuse pour je ne sait quelle raison de me mettre une icône et d'activer les thèmes XP.

La beta arrive bientôt mais je n'ai pas encore retouché le précompileur.

j'ai aussi arrêté d'utiliser la liste des structures et procédures dans un fichier je demande directement au(x) compilateur(s).
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Message par Progi1984 »

Pour l'intégration de Moebius, regarde le code source de l'addon MoebiusGUI.

Tiens moi au courant si c'est facilement intégrable :)
cha0s
Messages : 681
Inscription : sam. 05/mars/2005 16:09

Message par cha0s »

j'ai survolé les sources et sa me semble facilement utilisable et dans le pire des cas je passerais en ligne de commande. Mais d'abords il me faut finir le precompilateur maintenant que mon PureBasicObject est normalisé et finir les principales fonctions de L'IDE.
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Message par Progi1984 »

Dans le pire des cas, hésite pas à revenir vers moi. Je t'aiderais et cela me permettra d'améliorer mon code et de rendre l'intégration plus facile d'accès, ce qui ne sera dans aucun des cas un mal.
cha0s
Messages : 681
Inscription : sam. 05/mars/2005 16:09

Message par cha0s »

News :o

La version 1 du précompilateur est presque terminé reste quelques petits ajustement.

Chaque version du précompilateur sera rétro compatible c'est a dire qu'un code de la version 1 tournera sur la version 2 (pas l'inverse hein :lol:). chaque version verra son lot d'amélioration selon mon temps disponible.

Pour ceux qui ignore totalement ce qu'est la POO regardez l'exemple c'est plus parlant.

Pour l'instant :
-Héritage Simple.
-Typage statique obligatoire, un pointeur -> un objet (si il a été instancié bien sur).
-Attribut de classe avec possible valeur par défaut qui sont ajouté directement dans le constructeur.
-Code généré structuré (cependant si c'est codé a LaRache sa compilera pas je suis pas magicien ^^').


et c'est tout (oui c'est juste pour le moment)

Point noir :
-c'est de la précompilation donc certaine notion de l'encapsulation ne verront jamais le jour.
-dim et list non supporté pour l'instant a moins de ne pas les utiliser comme pointeur.
-sa doit être bugé dans certain cas tout le monde ne code pas comme moi ^^'.
-c'est pas encore super optimisé (mais sa l'est quand même un peu hein).
-heu.. ?


Un exemple une classe pour faire des tableaux dynamique (qui sera intégré dans l'api de chronos. Pourquoi ?, Parce que on peut pas utiliser de DIM ou LIST dans une structure et sans structure c'est pas de la POO).

Code : Tout sélectionner

;===========================================================
;lib Array
;===========================================================
Class Array
	*ptr = AllocateMemory(1)
	number.i = 0
	
	
	Procedure CountElement()
	  ProcedureReturn *this\number
	EndProcedure
	
  Procedure SetElement(number.i, *Element)
  	If number > *this\number
  	*this\number = number
  	*this\ptr = ReAllocateMemory(*this\ptr, number * SizeOf(integer))
  	EndIf
  	PokeI(*this\ptr + (number-1) * SizeOf(integer), *Element)
  EndProcedure
  
  Procedure AddElement(*Element)
  	*this.SetElement(*this\number+1, *Element)
  	ProcedureReturn *this\number
  EndProcedure

  Procedure FreeElement(number.i)
  	If *this\number = 1
  	  *this\number = 0
  	Else
  	  If number < *this\number
  	    CopyMemory(*this\ptr + SizeOf(integer)*number,  *this\ptr + SizeOf(integer)*(number - 1), SizeOf(integer)*(*this\number-number))
  	  EndIf
  	  *this\number - 1
  	  *this\ptr = ReAllocateMemory(*this\ptr, *this\number * SizeOf(integer))
  	EndIf
  EndProcedure
  
  Procedure GetElement(number.i)
  	If number <= *this\number
      ProcedureReturn PeekI(*this\ptr + (number-1) * SizeOf(integer))
  	Else
  	  ProcedureReturn 0
  	EndIf
  EndProcedure

  Procedure RemoveAll()
  	*this\number  = 0
  	*this\ptr = ReAllocateMemory(*this\ptr, 1)
  EndProcedure
  
  Procedure Free()
  	FreeMemory(*this\ptr)
  	FreeMemory(*this)
  EndProcedure
EndClass
ce qui génère en fichier principal

Code : Tout sélectionner

;===========================================================;
;                                                           ;
; Main File : main.pb                                       ;
; Code generated by Chronos Precompiler                     ;
;                                                           ;
;===========================================================;

EnableExplicit ;Variable declaration enable

IncludeFile "Constant.pbi"
IncludeFile "Structure.pbi"
IncludeFile "Variable.pbi"
IncludeFile "Macro.pb"
IncludeFile "Declaration.pb"
IncludeFile "Procedure.pb"
le fichier Structure.pbi

Code : Tout sélectionner

;Class Array
Structure Array
	*ptr.i
	number.i
EndStructure
le fichier Declaration.pb

Code : Tout sélectionner

;Class Array
Declare.i Array_CountElement(*this.Array)
Declare.i Array_SetElement(*this.Array,number.i,*Element.i)
Declare.i Array_AddElement(*this.Array,*Element.i)
Declare.i Array_FreeElement(*this.Array,number.i)
Declare.i Array_GetElement(*this.Array,number.i)
Declare.i Array_RemoveAll(*this.Array)
Declare.i Array_Free(*this.Array)

declare.i New_Array()
et enfin le fichier Procedure.pb

Code : Tout sélectionner

;Class Array

Procedure.i Array_CountElement(*this.Array)
	ProcedureReturn *this\number
EndProcedure

Procedure.i Array_SetElement(*this.Array,number.i,*Element.i)
	If number>*this\number
	*this\number=number
	*this\ptr=ReAllocateMemory(*this\ptr,number *SizeOf(integer))
	EndIf
	PokeI(*this\ptr+(number-1)*SizeOf(integer),*Element)
EndProcedure

Procedure.i Array_AddElement(*this.Array,*Element.i)
	Array_SetElement(*this,*this\number+1,*Element)
	ProcedureReturn *this\number
EndProcedure

Procedure.i Array_FreeElement(*this.Array,number.i)
	If *this\number=1
	*this\number=0
	Else
	If number<*this\number
	CopyMemory(*this\ptr+SizeOf(integer)*number,*this\ptr+SizeOf(integer)*(number-1),SizeOf(integer)*(*this\number-number))
	EndIf
	*this\number-1
	*this\ptr=ReAllocateMemory(*this\ptr,*this\number *SizeOf(integer))
	EndIf
EndProcedure

Procedure.i Array_GetElement(*this.Array,number.i)
	If number<=*this\number
	ProcedureReturn PeekI(*this\ptr+(number-1)*SizeOf(integer))
	Else
	ProcedureReturn 0
	EndIf
EndProcedure

Procedure.i Array_RemoveAll(*this.Array)
	*this\number=0
	*this\ptr=ReAllocateMemory(*this\ptr,1)
EndProcedure

Procedure.i Array_Free(*this.Array)
	FreeMemory(*this\ptr)
	FreeMemory(*this)
EndProcedure

Procedure.i New_Array()
	protected *this.Array = AlocateMemory(SizeOf(Array))
	*this\ptr = AllocateMemory(1)
	*this\number = 0

	ProcedureReturn *this
EndProcedure
et c'est tout, je peut donc avec le précompilateur coder de la manière suivante

Code : Tout sélectionner

  Define.Array *MonTableau
  MonTableau = New Array()
  *MonTableau.AddElement(24)
  Debug *MonTableau.CountElement()
  *MonTableau.FreeElement(1) ;on enlève l'élément 1
  *MonTableau.Free();on libère les ressources
cha0s
Messages : 681
Inscription : sam. 05/mars/2005 16:09

Message par cha0s »

Update

Version 0.9.3.11

-precompilateur V1 ^^'
-gestion des projets amélioré (mais sa reste encore très léger)
-beaucoup plus stable
-utilisation du debugger externe


Question templates et projet j'ai abandonné le format des fichiers pour utiliser le XML. Je me demande d'ailleurs pourquoi j'ai pas commencé avec.

attention actuellement le precompilateur ne supporte que des classes dont la structure est assez simple. Les procédures simple ne sont pas supporté et les directives de compilation sont a manipuler avec précaution.

Si vous utilisez le precompilateur j'ai rajouté un mot clée :

Code : Tout sélectionner

IncludeImport <chaine de caractère>
Usage IncludeImport "dossier1.[dossier2.[dossier3.]]nom de la bibliothèque"
pour faire appelle au classes du dossier API de chronos
pour l'instant une seul librairie qui est Array pour utiliser des tableaux dynamique dans une structure.

Pour ce qui est de la creation de classe c'est comme ceci

Code : Tout sélectionner

Class MaClasse
  structure1.l
  structure2.l

  static procedure MaMethode2()
    ;action
  endprocedure

  procedure  MaMethode()
    *this\structure1 = 42
  endprocedure 
EndClass

define.MaClass *ptr
*ptr = New MaClasse()
*ptr.MaMethode()
MaClasse::MaMethode2()
la version 64bits ne fonctionne toujours pas une fois compilé pour une raison que j'ignore (elle compile c'est déjà bien xD).

Et enfin j'ai commencé une doc qui n'est pas encore disponible.
Dernière modification par cha0s le mer. 08/avr./2009 0:04, modifié 1 fois.
cha0s
Messages : 681
Inscription : sam. 05/mars/2005 16:09

Message par cha0s »

C'est la crise, plein de boulot et bientôt les exams mais qu'importe Chronos avance :lol:. En ce jours il est capable de se compiler sous lui même (j'ai intégré directement le précompilateur) en code OO et le pire c'est que c'est stable.

Par conséquent une version BETA a vernir si je trouve le temps (disons que j'ai d'autre priorité mais je peut pas m'empêcher de coder en pure ^^').

Image
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Message par Progi1984 »

Ca avance petit à petit.

Bien joué, @ bientot :)
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Message par Thyphoon »

des news ?

Pour info quand je créer un projet.. j'ai en permanance le message d'erreur
"Ilegal string founded in the name" même si il n'y a qu'une lettre... Je suppose que ça doit être un vieux bug déjà corrigé. j'ai testé là 9.3.11
En tout cas j'attends la prochaine version avec impatience
cha0s
Messages : 681
Inscription : sam. 05/mars/2005 16:09

Message par cha0s »

le précompilateur étant totalement fonctionnel je suis en train de stabiliser le produits pour une béta. Si j'ai le temps la béta devrait être dispo cette aprem ou demain. Je suis justement a la création de projet que je vait remanier un peu.
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Message par Thyphoon »

cha0s a écrit :le précompilateur étant totalement fonctionnel je suis en train de stabiliser le produits pour une béta. Si j'ai le temps la béta devrait être dispo cette aprem ou demain. Je suis justement a la création de projet que je vait remanier un peu.
excellent ! j'ai hate de tester ça !!
Répondre