Correspondance entre Pascal et PureBasic ?

Sujets variés concernant le développement en PureBasic
Avatar de l’utilisateur
wood51
Messages : 122
Inscription : ven. 05/juin/2009 13:04
Localisation : orléans

Correspondance entre Pascal et PureBasic ?

Message par wood51 »

Bonsoir ,

J'ai besoin de traduire un bout de code Pascal (enregistrement avec variantes ??? ) en PureBasic mais j'avoue que là je pèche !

Code : Tout sélectionner

TYPE date RECORD 
               jours:integer
               mois:integer
               ans:interger
               END;

VAR date1:date

date1.jours = 11
date1.mois = 1
date.ans = 2013
pourrais ce traduire ainsi (enfin je pense)

Code : Tout sélectionner

Structure date
  jours.i
  mois.i
  ans.i
EndStructure

date1.date

date1\jours = 11
date1\mois = 1
date1\ans = 2013
Mon problème est ce genre de code :

Code : Tout sélectionner

TYPE statut=(celibataire,marie,divorce,veuf);
          perso=RECORD
                nom:string[20];
                CASE situation:statut OF
                  celibataire:();
                  marie:(enfants:0..10);
                  divorce,veuf:(enfants:0..10;remarie:boolean)
                END;

Ce code à l'air de sélectionner une structure différente suivant "status" qui fais partie de ??? Enfin bref je vois pas , Si vous connaissez peut-être pourriez vous éclairer ma lanterne . Sur Google je trouve que d'autre truc en Pascal et franchement çà m'avance pas des masses .

@+ Wood51
Compétences : Bricoleur PureBasic du dimanche
Crâmage de cerveau en cours 100% :D
Projet en cours : http://purepicbasic.frenchboard.com/
stombretrooper
Messages : 117
Inscription : dim. 21/déc./2008 18:39

Re: Correspondance entre Pascal et PureBasic ?

Message par stombretrooper »

Pour ta première traduction, tout à fait.

Pour la seconde, en PureBasic je ferais comme ça :

Code : Tout sélectionner

Structure Statut
nom.s{20}
situation.a
EndStructure

Structure StatutMarie Extends Statut
array enfants.?[10]
EndStructure

Structure StatutDivorce Extends Statut
Array enfants.?[10]
Remarie.a
EndStructure

En sachant que StatutVeuf, c'est la même structure que StatutDivorce. Et StatutCelibataire est la même structure que Statut. De plus, je ne savais pas le type de "Enfants". Sûrement un pointeur sur le même genre de structure ;
Array *Enfants.Statut[10]

A++
http://www.purebasicstreet.com/ - Site dédié à purebasic.
Avatar de l’utilisateur
wood51
Messages : 122
Inscription : ven. 05/juin/2009 13:04
Localisation : orléans

Re: Correspondance entre Pascal et PureBasic ?

Message par wood51 »

Merci pour la réponse :D

Le seul hic c'est que je ne vois pas comment "switcher" sur telle ou telle structure .

Dans le code suivant :

Code : Tout sélectionner

TYPE statut=(celibataire,marie,divorce,veuf);
	perso=RECORD
		  nom:string[20];
		  CASE situation:statut OF
			celibataire:();
			marie:(enfants:0..10);
			divorce,veuf:(enfants:0..10;remarie:boolean)
		  END;
Si j'ai bien compris , je déclare une variable ("x") de type "perso" . J'ai accès au champ "nom" dans tous les cas .
Si je fait "X.situation = marie" alors je ne peux accéder qu'aux champs "nom" et "enfants"
Si je fait "X.situation = veuf" alors je ne peux accéder qu'aux champs "nom" ,"enfants","remarie"
Si je fait "X.situation = celibataire" alors je ne peux accéder qu'au champ "nom"

C'est bizarre comme truc :roll: .

En tout cas merci de la réponse , je vais creuser ;-)
Compétences : Bricoleur PureBasic du dimanche
Crâmage de cerveau en cours 100% :D
Projet en cours : http://purepicbasic.frenchboard.com/
stombretrooper
Messages : 117
Inscription : dim. 21/déc./2008 18:39

Re: Correspondance entre Pascal et PureBasic ?

Message par stombretrooper »

Je te complète un peu ma réponse, avec l'utilisation d'un tel code ;
Avec la variable situation de la structure Statut, tu peux savoir si tu as à faire à un marié, divorcé, ou autre (vie une valeur, suffit de dire 0 = marié, 1 = divorcé...)

Ensuite, il te suffit de faire un code de ce genre là pour manipuler les structures ;

Code : Tout sélectionner

; *exemple.Statut déclaré avant ;
Select *exemple\situation
case #StatutMariage; Mariage
*exemple_mariage.StatutMarie = *exemple
... actions ...
case #StatutDivorce ; Divorcé
*exemple_divorcé.StatutDivorce = *exemple
... actions ...
EndSelect
Note que si tu accèdes à une structure divorce par exemple, alors que tu l'as déclaré comme veuf au préalable, tu vas avoir des invalid memory access... On mélange pas les choux et les carottes.

L'usage est d'utilisé des constantes à la place des nombres, sinon bonjour les erreurs ;

Code : Tout sélectionner

Enumeration
#StatutMariage
#StatutDivorce
#StatutCelibataire
#StatutVeuf
EndEnumeration
http://www.purebasicstreet.com/ - Site dédié à purebasic.
Avatar de l’utilisateur
wood51
Messages : 122
Inscription : ven. 05/juin/2009 13:04
Localisation : orléans

Correspondance entre Pascal et PureBasic ?

Message par wood51 »

Salut ! J'essaie ça dès que possible . Un grand merci
Compétences : Bricoleur PureBasic du dimanche
Crâmage de cerveau en cours 100% :D
Projet en cours : http://purepicbasic.frenchboard.com/
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Correspondance entre Pascal et PureBasic ?

Message par Backup »

Le plus simple c'est de le refaire en Purebasic

voici un exemple de Structures
avec Creation de Fiches , et Recherche Dans ces Fiches suivant différents Critères

Code : Tout sélectionner


Structure date ; sous_structure de Fiche
	jours.c
	mois.c
	ans.i
EndStructure
date.date

Structure Fiche Extends Date
	Nom.s
	Statut.s ; "celibataire","marie","divorce","veuf"  , on peut remplacer par une variable numérique bien sur
	Enfant.c
EndStructure

Dim Fiche.fiche(255) ; 255 fiches possible



; Remplir une fiche
i=0
fiche(i)\jours.c=1
fiche(i)\mois.c=12
fiche(i)\ans.i=2012
fiche(i)\nom.s="Dupont"
fiche(i)\statut.s="celibataire"   ; "celibataire","marie","divorce","veuf" 
fiche(i)\Enfant.c=1

; Remplir une autre fiche
i=1
fiche(i)\jours.c=2
fiche(i)\mois.c=12
fiche(i)\ans.i=2012
fiche(i)\nom.s="Durand" 
fiche(i)\statut.s="marie"  ; "celibataire","marie","divorce","veuf" 
fiche(i)\Enfant.c=5


; Remplir une autre fiche
i=2
fiche(i)\jours.c=8
fiche(i)\mois.c=01
fiche(i)\ans.i=2013
fiche(i)\nom.s="Duchmol" 
fiche(i)\statut.s="veuf"  ; "celibataire","marie","divorce","veuf" 
fiche(i)\Enfant.c=0

; Remplir une autre fiche
i=3
fiche(i)\jours.c=5
fiche(i)\mois.c=5
fiche(i)\ans.i=2012
fiche(i)\nom.s="trucMuch" 
fiche(i)\statut.s="divorce"  ; "celibataire","marie","divorce","veuf" 
fiche(i)\Enfant.c=0


; *********** recherche sur fiches **************
; qui a des enfants ? 
debug "Qui a des Enfants ?"
Debug " *****************************************"
for i= 0 to 254
	if fiche(i)\Enfant.c>0 ; regarde si le nombre d'enfant est superieur a zero
		debug "Mr "+fiche(i)\nom.s+" a "+str(fiche(i)\Enfant.c)+" Enfant(s)" ; oui, alors on affiche le nom de la Fiche
	endif
next i
Debug " *****************************************"
Debug ""

; qui est celibataire ?
Debug "qui est celibataire ?"
Debug " *****************************************"
for i= 0 to 254
	if fiche(i)\statut.s ="celibataire"; regarde si le statut correspond a Celibataire
		debug "Mr "+fiche(i)\nom.s+" est "+fiche(i)\statut.s ; oui , alors on affiche le nom de la fiche
	endif
next i
Debug " *****************************************"
Debug ""


; qui est Veuf ?
Debug "qui est Veuf ?"
Debug " *****************************************"
for i= 0 to 254
	if fiche(i)\statut.s ="veuf"; regarde si le Statut correspond a "Veuf"
		debug "Mr "+fiche(i)\nom.s+" est "+fiche(i)\statut.s ; oui alors on affiche le nom de la fiche
	endif
next i
Debug " *****************************************"

; etc ... 


; EPB
Avatar de l’utilisateur
wood51
Messages : 122
Inscription : ven. 05/juin/2009 13:04
Localisation : orléans

Re: Correspondance entre Pascal et PureBasic ?

Message par wood51 »

Merci de vos réponses :D , je penses que je vais pouvoir me débrouiller :P :P :P ...
Merci bcp .

@+ wood51
Compétences : Bricoleur PureBasic du dimanche
Crâmage de cerveau en cours 100% :D
Projet en cours : http://purepicbasic.frenchboard.com/
Répondre