Créer des constantes, des type de fichier etc.

Sujets variés concernant le développement en PureBasic
wolfjeremy
Messages : 1202
Inscription : sam. 31/déc./2005 23:52

Créer des constantes, des type de fichier etc.

Message par wolfjeremy »

Salut,

C'est bien beau de savoir faire des programmes avec PB, mais je me demande (pas de moquerie s'il vous plait :lol: ) comment on peut créer ces propre constante ? c'est propre format ? etc.
Car ce limiter a se qui est disponible dans l'aide c'est un peut peut je pense et en quelque sorte le programme ou le jeu que l'on fait n'est pas vraiment inventé de toute pièce...

Merci d'avance pour votre réponse.
AWEAR
Messages : 264
Inscription : ven. 28/oct./2005 8:20
Localisation : Mayotte ( 976 ), Océan Indien, France

Message par AWEAR »

Ben pour les constantes tu fais #nom_de_la_constante = 5 par exemple, je ne saisi pa bien ce que tu veux dire :?
Pour créer ton propre format, tu fais ton fichier avec l'extension que tu désire, tu vas bidouiller le registre (cherche sur le forum, ya la réponse), et tu associes ton logiciel avec le type de format.
Quand tu dis, "se limiter a ce qui est disponible dans l'aide", je ne comprends pas bien, si tu n'utilise pas ce qui est dans l'aide, je vois mal comment tu pourrais faire un programme ?
Tu as forcément besoin de fonction native, mais ce n'est pas pour autant que ton programme ne sera pas inventé de toute pièce, vu que tu en es le créateur, et que le mérite de la création t'en reviens :?
Exemple : Tu fais un jeu de poker (woaw bravo, moi j'ai pas réussi :lol:), qui fonctionne, super perfectionné, qui fonctionne en réseau et tout le tsoin-tsoin, pourquoi dirais-tu qu'il n'a pas été inventé de tout pièce, c'est bien toi qui l'aurais codé, non ?
La vie est une rose dont il faut accepter les épines, mais la mienne est fannée, arrosée par le goût de mes larmes. (Soprano)
wolfjeremy
Messages : 1202
Inscription : sam. 31/déc./2005 23:52

Message par wolfjeremy »

Oui...

mais les constante qui son d'origine dans pb ne se sont pas inventé toute seul, je voulais donc tout simplement savoir si il était possible d'inventer ces propre fonction... j'arrive pas vraiment a dire se que je veu la lol
Par exemple créer un moteur physique complet... les constante de pb ne sont pas suffisante si ont veu créer son propre moteur (ce n'est que un exemple hein, j'ai pas l'intention de le faire sa serai fou je pense... :lol: )
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

tu parles de créer une bibliothèque ? une lib en anglais ?

Le plus simple c'est d'utiliser Tailbite.
A moins que tu n'aies envie de le faire en C ou en Assembleur ? il y a des exemples dans le répertoire Library SDK :)

Méthode avec Tailbite :
Tu écris ta fonction normalement ,tu la testes ,et quand ça fonctionne tu lances Tailbite pour créer ta lib.

Exemple tu veux faire une fonction qui additionne deux nombres entiers

Code : Tout sélectionner

Procedure Addition(a.l, b.l)
  ProcedureReturn a+b
EndProcedure
Pour faire une lib il faut changer la procedure ainsi :

Code : Tout sélectionner

ProcedureDll Addition(a.l, b.l)
  ProcedureReturn a+b
EndProcedure
Tu peux aussi créer des fichiers résidents avec tailbite ou en utilisant PBCompiler.Exe /RESIDENT "Fichier"

Un fichier résident , c'est un fichier qui contient les fameuses constantes que tu affectionnes tant :)
Tu peux aussi ajouter des structures , etc .
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
wolfjeremy
Messages : 1202
Inscription : sam. 31/déc./2005 23:52

Message par wolfjeremy »

Ok merci :wink:
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

Sinon petit hors sujet
Pour comprendre ce que t'écris je suis obligé de le lire a voix haute. C'est même plus des fautes d'orthographe mais carrément des homonymes.

Dri -_-
wolfjeremy
Messages : 1202
Inscription : sam. 31/déc./2005 23:52

Message par wolfjeremy »

Oui excuse... j'ai un peut dure a m'exprimer parfois sur les forum :?
Patrick88
Messages : 1564
Inscription : mer. 21/janv./2004 18:24

Message par Patrick88 »

va voir là, ça s'appelle : Creating your own custom constants file

http://www.purebasic.fr/english/viewtop ... highlight=
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

Dr. Dri a écrit :Sinon petit hors sujet
Pour comprendre ce que t'écris je suis obligé de le lire a voix haute. C'est même plus des fautes d'orthographe mais carrément des homonymes.

Dri -_-
:lol: :lol: je sens que je vais faire un "wolfjeremytiseur" :lol: :lol:

(Ref: "Scarabetiseur" :wink: )
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

Et bah justement KCC est tombé sur ce POST super interessant, avant de tomber sur celui-ci 8)

Et il a créé une petite procedure qui s'appuie sur cette super mega combine

Si ça interesse "quinquin" :D

Code : Tout sélectionner

; ResidentCreator créé par KCC grace a la super combine de PB
; http://www.purebasic.fr/english/viewtopic.php?p=120641#120641

Procedure CreationFichierResident(CheminFichier.s)
  
 NomFichier.s = ReplaceString(GetFilePart(CheminFichier), ".pb", "")
  
 If FileSize(#PB_Compiler_Home + "Residents\" + NomFichier + ".res") <> - 1 
    
  ReponseEcraser = MessageRequester("ResidentCreator", "Le fichier ''" + NomFichier + "'' éxiste déjà, désirez vous l'écraser ?", 4) 
     
  If ReponseEcraser <> 6
   ProcedureReturn 0
  EndIf
  
  DeleteFile(#PB_Compiler_Home + "Residents\" + NomFichier + ".res")   
     
 EndIf
  
 If RunProgram(#PB_Compiler_Home + "Compilers\pbcompiler.exe", CheminFichier + " /resident " + NomFichier + ".res /IGNORERESIDENT", #PB_Compiler_Home + "Compilers\", #PB_Program_Wait|#PB_Program_Hide)

 While FileSize(#PB_Compiler_Home + "Compilers\" + NomFichier + ".res") = - 1
   Delay(10)
  Wend

  CopyFile(#PB_Compiler_Home + "Compilers\" + NomFichier + ".res", #PB_Compiler_Home + "Residents\" + NomFichier + ".res") 
  DeleteFile(#PB_Compiler_Home + "Compilers\" + NomFichier + ".res")
  MessageRequester("ResidentCreator", "Le nouveau fichier résident ''" + NomFichier + ".res'', viens d'etre créé dans le répertoire des résidents de PureBasic" + Chr(13) + "Veuillez relancer l'editeur pour qu'il soit pris en compte.")
 EndIf 
 
EndProcedure

FichierChoisi$ = OpenFileRequester("Veuillez choisir le fichier source PB, contenant vos constantes", "c:\", "Resident PB|*.pb", 0)

If Trim(FichierChoisi$) <> ""
 CreationFichierResident(FichierChoisi$)
EndIf
 
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

Et j'ai fait aussi ce petit code qui créé un fichier PB sous la racine du C
Ce fichier permet de verifier dans l'IDE si toutes les constantes sont bien prises en compte

1/ Creer son RES avec le code au dessus
2/ Redemarrer l'IDE
3/ Charger a nouveau le meme fichier PB qui a permis de creer le RES
4/ Charger le "c:\TestResidents.pb" qui viens d'etre créé dans l'IDE
5/ Le lancer et il vous donne la liste et la valeur de toutes vos constantes que vous venez de creer

Code : Tout sélectionner

Procedure ControleListeResident(SourceResident.s)
  
 ReadFile(1, SourceResident)    
 
 If FileSize("c:\TestResidents.pb") <> - 1
  DeleteFile("c:\TestResidents.pb")
 EndIf
  
 CreateFile(2 , "c:\TestResidents.pb")
 
 Repeat
  
  Donnee$ = ReadString(1)
  
  If Left(Trim(Donnee$), 1) = "#"
   
   NomConstante$ = StringField(Donnee$, 1, "=")
   
   If FindString(Donnee$, Chr(34), 1)
    WriteStringN(2, "Debug " + Chr(34) + NomConstante$ + " = " + Chr(34) + " + " + NomConstante$)
   Else
    WriteStringN(2, "Debug " + Chr(34) + NomConstante$ + " = " + Chr(34) + " + Str(" + NomConstante$ + ")")
   EndIf
    
  EndIf
  
 Until Eof(1) <> 0
 
 CloseFile(1)
 CloseFile(2)
 MessageRequester("ResidentControlor", "Le fichier ''c:\TestResidents'' viens d'etre créé, veuillez le charger dans l'IDE et le lancer pour controler l'intégralité des constantes.")
 
EndProcedure

FichierChoisi$ = OpenFileRequester("Veuillez choisir le fichier source PB, contenant vos constantes", "c:\", "Resident PB|*.pb", 0)

If Trim(FichierChoisi$) <> ""
 ControleListeResident(FichierChoisi$)
EndIf

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

Message par Progi1984 »

Pas besoin de redémarrer l'IDE, simplement redemarrer le compilateur.
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

Merci PROGI 8)

Peut etre meme que je peut le faire par le code ???? :roll:

Dans le deuxieme code, y'aurait pas moyen de faire le DEBUG direct, sans avoir a creer un fichier ????
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Message par Progi1984 »

Kwai chang caine a écrit :Merci PROGI 8)

Peut etre meme que je peut le faire par le code ???? :roll:

Dans le deuxieme code, y'aurait pas moyen de faire le DEBUG direct, sans avoir a creer un fichier ????
Regarde dans le code de tailbite !
Normalement, il y a une fonction pour redémarrer le compiler.

Pour le DEBUG direct, essaie debug avec un compilerif #PB_Compiler_Debugger = #true sinon écris dans le fichier.
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

Merci beaucoup Maitre PROGI de ton aide 8)
Maitre PROGI a écrit :Pas besoin de redémarrer l'IDE, simplement redemarrer le compilateur.
Je viens de m'apercevoir que tu as moitié raison :lol:
En fait tu as raison dans le fait que y'a juste besoin de redemarrer le debugger, mais par contre le visualiseur de constantes ne les a pas intégrée. :roll:

Pour lire les variables, le probleme c'est que ma variable contient le nom de la constante et que moi je voudrais obtenir la valeur du nom de cette constante.

Par exemple si je fais ta combine qui marche nikel

Code : Tout sélectionner

CompilerIf #PB_Compiler_Debugger = #False
   
    If FindString(Donnee$, Chr(34), 1)
     WriteStringN(2, "Debug " + Chr(34) + NomConstante$ + " = " + Chr(34) + " + " + NomConstante$)
    Else
     WriteStringN(2, "Debug " + Chr(34) + NomConstante$ + " = " + Chr(34) + " + Str(" + NomConstante$ + ")")
    EndIf
   
   CompilerElse
    
    Debug NomConstante$
    
   CompilerEndIf  
J'obtiens bien le nom de cette constante :D

Exemple pour ces constantes :
NomConstante$ = #True

NomConstante$ = #False
etc ...

Dans le debugger j'obtiens bien le nom des constantes :
#True
#False


Mais il faut que j'arrive a avoir leur valeur qui sont on le sait tous les deux :lol: 1 et 0

Comment faire pour les obtenir ???

Il faut bien les ecrire dans un code source le charger et le lancer ???

Ou alors pouvoir demander par code au debugger la valeur d'une constante :roll:
Répondre