Bonjour à toutes et à tous.
Je me fabrique une librairie disons..."outils"...
Je créé ma lib avec taillebit sans aucun pb...
Seulement voilà dans ma lib avant mes fonction
ProcedureDLL machin()
...
EndProcedure
je déclare quelques constantes...
#BIDULE_01 = 0
#BIDULE_02 = 1
etc...
Seulement voilà dans une utilisation de ma "Lib" PB ne reconnait pas mes constantes....
Y a t-il une syntaxe particulière pour les exporter ou ai-je omis quelque chose lors de la création de ma lib??
Merci pour votre aide
Fred
export des constantes dans une userlib
export des constantes dans une userlib
OLDCHOOLRESISTANCE pour faire revivre les années 80 !
- Progi1984
- Messages : 2659
- Inscription : mar. 14/déc./2004 13:56
- Localisation : France > Rennes
- Contact :
Re: export des constantes dans une suerlib
Librairies & Applications : https://www.purebasic.fr/french/viewtop ... f=8&t=6220
Site Web : https://rootslabs.net
Site Web : https://rootslabs.net
Re: export des constantes dans une suerlib
Merci Progi1984 !
en réalité j'ai essayé aussi Moebus.
J'ai créé une user lib et ça fait pareil.
Ceci dit je n'ai pas regardé du coté des residents....
Je vais voir ça.
Merci pour l'info!
Fred
en réalité j'ai essayé aussi Moebus.
J'ai créé une user lib et ça fait pareil.
Ceci dit je n'ai pas regardé du coté des residents....
Je vais voir ça.
Merci pour l'info!
Fred
OLDCHOOLRESISTANCE pour faire revivre les années 80 !
Re: export des constantes dans une suerlib
Du coup je me pose une question...
Quelle est la différence entre une userlib et un resident ?
Quelle est la différence entre une userlib et un resident ?
OLDCHOOLRESISTANCE pour faire revivre les années 80 !
Re: export des constantes dans une suerlib
Y'a pas de code dans un resident, juste des declarations de structures et de constantes.
Re: export des constantes dans une userlib
Merci pour toutes ces précisions !
Fred
Fred
OLDCHOOLRESISTANCE pour faire revivre les années 80 !
Re: export des constantes dans une userlib
Bonjour à tous
Structures, Constantes, Interfaces et Macros aussi sont dans les résidents,
Ici un petit prg pour les compiler dans un fichier type *.res du répertoire Residents
exemple de macros à compiler dans un fichier type *.res du répertoire Residents
Une petite question à Fred peut-on connaître la structure ERUP ...N° 5 des fichiers *.res dans le répertoire Residents ?
Chacune des entités Structures, Constantes, Interfaces et Macros ont une structure particulière enfin je crois.
A+
Structures, Constantes, Interfaces et Macros aussi sont dans les résidents,
Ici un petit prg pour les compiler dans un fichier type *.res du répertoire Residents
Code : Tout sélectionner
;{- Enumerations / DataSections
;{ Windows
Enumeration
#Window_0
EndEnumeration
;}
;{ Gadgets
Enumeration
#String_0
#String_2
#String_5
#Text_0
#Text_2
#Text_5
#Button_0
#Button_2
#Button_5
#Editor_41
#Button_11
#Button_12
#Button_13
EndEnumeration
Dim fic${256}(20)
Dim res${256}(20)
;}
Define.l Event,EventWindow,EventGadget,EventType,EventMenu
;}
Procedure OpenWindow_Window_0()
If OpenWindow(#Window_0,398,69,800,446,"Aide pour créer un résident",#PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_MinimizeGadget | #PB_Window_TitleBar)
StringGadget(#String_0,145,20,520,25,"")
StringGadget(#String_2,145,65,520,25,"")
StringGadget(#String_5,145,115,520,25,"")
TextGadget(#Text_0,10,20,125,25," Nom de la librairie",#PB_Text_Center | #SS_CENTERIMAGE)
TextGadget(#Text_2, 10, 65, 125, 25, "Nom de la source", #PB_Text_Center|#SS_CENTERIMAGE)
TextGadget(#Text_5, 10, 115, 125, 25, "Path et nom du résident", #PB_Text_Center|#SS_CENTERIMAGE)
ButtonGadget(#Button_0, 690, 20, 100, 25, "Parcourir")
ButtonGadget(#Button_2, 690, 65, 100, 25, "Parcourir")
ButtonGadget(#Button_5, 690, 110, 100, 25, "Parcourir")
EditorGadget(#Editor_41, 20, 205, 760, 235)
; Font1 = LoadFont(#PB_Any, "Courier New" , 8, #PB_Font_Bold )
Font1 = LoadFont(#PB_Any, "Courier New" , 8)
SetGadgetFont(#Editor_41, FontID(Font1))
ButtonGadget(#Button_11, 180, 155, 150, 30, "Création du Batch")
ButtonGadget(#Button_12, 360, 155, 100, 30, "OK Créez")
ButtonGadget(#Button_13, 690, 155, 100, 30, "Terminer")
GadgetToolTip(#String_0,"Donnez ou cherchez le nom du dossier où se troube purebasic.exe")
GadgetToolTip(#Button_0,"Donnez ou cherchez le nom du dossier où se troube purebasic.exe")
GadgetToolTip(#String_2,"Donnez ou cherchez le nom du fichier source en *.pbx")
GadgetToolTip(#Button_2,"Donnez ou cherchez le nom du fichier source en *.pbx")
GadgetToolTip(#String_5,"Donnez ou cherchez le nom du fichier dans le repertoire RESIDENT en *.res")
GadgetToolTip(#Button_5,"Donnez ou cherchez le nom du fichier dans le repertoire RESIDENT en *.res")
EndIf
EndProcedure
OpenWindow_Window_0()
;{- Event loop
Repeat
Event = WaitWindowEvent()
Select Event
; ///////////////////
Case #PB_Event_Gadget
EventGadget = EventGadget()
EventType = EventType()
If EventGadget = #String_0
ElseIf EventGadget = #String_2
ElseIf EventGadget = #String_5
PathFil_Res$=GetGadgetText(#String_5)
ElseIf EventGadget = #Text_0
ElseIf EventGadget = #Text_2
ElseIf EventGadget = #Text_5
;************************************************************** BOUTON Parcourir LIB PB ***********************************************************
ElseIf EventGadget = #Button_0 ; bouton recherche chemin principal de PB
Path_lib$ = PathRequester("Donnez la librairie PureBasic", "L:\program Files\purebasic")
SetGadgetText(#String_0, Path_lib$)
SetGadgetText(#String_2, Path_lib$)
SetGadgetText(#String_5, Path_lib$+"RESIDENTS\")
;****************************************************** BOUTON Parcourir du prg.pb qui va faire un résident ********************************
ElseIf EventGadget = #Button_2 ; recherche prg.pb qui va faire un résident
; FichierParDefaut$ = "L:\program files\PB431\"; Répertoire et fichier par défaut qui seront affichés
FichierParDefaut$ = Path_lib$; Répertoire et fichier par défaut qui seront affichés
; Avec la chaîne suivante nous allons définir les filtres ("|" comme séparateur) pour l'affichage de fichier :
; 1er : "Texte (*.txt)" comme nom, ".txt" et ".bat" comme extension autorisée
; 2ème : "PureBasic (*.pb)" comme nom, ".pb" comme extension autorisée
; 3ème : "Tous les fichiers (*.*)" comme nom, "*.*" comme extension autorisée, valide pour tous les fichiers
Filtre$ = "PureBasic (*.pb)|*.pb|Tous les fichiers (*.*)|*.*"
Filtre = 0 ; utiliser par défaut le premier des trois filtres possibles
Path_Src$ = OpenFileRequester("Choisissez un fichier source", FichierParDefaut$, Filtre$, Filtre)
SetGadgetText(#String_2, Path_Src$)
;****************************************************** BOUTON Parcourir pour donner le nom du résident ********************************
ElseIf EventGadget = #Button_5
; Path_Res$ = PathRequester("Donnez le Chemin et dans la zone ,le nom du résident ", GetGadgetText(#String_5))
FichierParDefaut$ = Path_lib$+"RESIDENTS\defaut.res"; Répertoire et fichier par défaut qui seront affichés
Filtre$ = "Pb résident (*.res)|*.res |Tous les fichiers (*.*)|*.*"
Path_Res$ = OpenFileRequester("Donnez le Nom d'un résident existant ou pas ", FichierParDefaut$, Filtre$, Filtre)
SetGadgetText(#String_5, Path_Res$)
PathFil_Res$=GetGadgetText(#String_5)
; If FileSize(PathFil_Res$)>0
; If MessageRequester("ATTENTION LE FICHIER EXISTE DEJA ", "Voulez vous l'écraser", #PB_MessageRequester_YesNo) = #PB_MessageRequester_Yes
; Else
; PathFil_Res$=""
; EndIf
; EndIf
ElseIf EventGadget = #Editor_41
; Debug event
;************************************************************** BOUTON Création du Batch ***********************************************************
ElseIf EventGadget = #Button_11
; If FileSize(PathFil_Res$)>0
; If MessageRequester("ATTENTION FICHIER "+pathfil_res$+" EXISTE DEJA ", "Voulez vous l'écraser", #PB_MessageRequester_YesNo) = #PB_MessageRequester_Yes
; Else
; PathFil_Res$=""
; SetGadgetText(#String_5, Path_lib$+"RESIDENTS\")
; EndIf
; EndIf
If Path_lib$<>"" And Path_Src$<>"" And GetFilePart(PathFil_Res$)<>""
ft$=Space(255)
mask$="%YY"+Str(DayOfYear(Date()))
fp$="PB"+FormatDate(mask$,Date())
fb$=Path_lib$+fp$+".BAT"
; GetTempFileName_(@U$,@fp$,000,@ft$)
asci$ = Space($FFF)
ASCII$="ECHO off"+Chr(10)
; ASCII$+"pushd "+Chr(34)+path_lib$+Chr(34)+Chr(10)
; ASCII$+"If (%2+CHR(10)==() Goto erreurf")
ASCII$+"If exist "+Chr(34)+PathFil_Res$+Chr(34)+ " del "+Chr(34)+ PathFil_Res$+Chr(34)+Chr(10)
ASCII$+ Chr(34)+Path_lib$+"compilers\pbcompiler"+Chr(34)+" "+Chr(34)+Path_Src$+Chr(34) + " /RESIDENT " +Chr(34)+ PathFil_Res$+Chr(34)+Chr(10)
ClearGadgetItems(#Editor_41)
AddGadgetItem(#Editor_41,-1,"REM Fichier "+fb$)
AddGadgetItem(#Editor_41,-1, ASCII$)
AddGadgetItem(#Editor_41,-1, "ECHO TAPEZ EXIT TAPEZ EXIT TAPEZ EXIT TAPEZ EXIT TAPEZ EXIT TAPEZ EXIT TAPEZ EXIT TAPEZ EXIT")
Else
MessageRequester("ATTENTION l'une de ces zones n'est pas correcte ", "Lib="+Path_lib$+Chr(10)+"Source="+Path_Src$+Chr(10)+"Resident="+PathFil_Res$)
EndIf
;************************************************************** BOUTON OK ***********************************************************
ElseIf EventGadget = #Button_12 ; Bouton OK
Texte$ = GetGadgetText(#Editor_41)
For k=1 To 20
fic$(k)=StringField(Texte$, k, Chr(34))
If Len(fic$)=0
mf=k
EndIf
If RTrim(LTrim(UCase(fic$(k-1))))="DEL"
fic2$=fic$(k)
EndIf
If RTrim(LTrim(UCase(fic$(k-1))))="/RESIDENT"
fic3$=fic$(k)
EndIf
Next
fic2$=RTrim(LTrim(fic2$))
fic3$=RTrim(LTrim(fic3$))
; Debug f_s(fic2$)+f_s(fic3$)
If FileSize(fic2$)>0
If fic2$=fic3$
If MessageRequester("ATTENTION FICHIER "+fic2$+" EXISTE DEJA ", "Voulez vous l'écraser", #PB_MessageRequester_YesNo) = #PB_MessageRequester_Yes
Else
PathFil_Res$=""
EndIf
Else
If MessageRequester("ATTENTION FICHIER "+fic2$+" EXISTE DEJA ", "Voulez vous le supprimer"+Chr(10)+"et créer "+fic3$, #PB_MessageRequester_YesNo) = #PB_MessageRequester_Yes
Else
PathFil_Res$=""
EndIf
EndIf
EndIf
Texte$ = GetGadgetText(#Editor_41)
If Texte$<>"" And PathFil_Res$<>""
FB.l=CreateFile(#PB_Any,fb$)
WriteData(FB, @Texte$, Len(Texte$))
CloseFile(FB)
prg=RunProgram("cmd"," /C "+ Chr(34)+fb$+Chr(34) ,"",30)
If prg
AddGadgetItem(#Editor_41,-1,"******************************** R E S U L T A T S *******************************************")
s_ascii$=ReadProgramString(prg)
Texte$=s_ascii$
OemToChar_(@s_ascii$,@s_ascii$)
texte2$=s_acii$+Chr(10)
Resultat=AddGadgetItem(#Editor_41,-1,s_ansi$)
While ProgramRunning(prg)
s_ascii$=ReadProgramString(prg)
OemToChar_(@s_ascii$,@s_ascii$)
Resultat=AddGadgetItem(#Editor_41,-1,s_ascii$)
texte2$+s_ascii$+Chr(10)
Wend
EndIf
; Debug texte2$
; Debug Len(texte2$)
For k=1 To 20
res$(k)=StringField(texte2$,k,Chr(10))
p_r=FindString(UCase(res$(k)),"RESIDENT",1)
p_c=FindString(UCase(res$(k)),"CREATED",1)
If p_r<>0
mp_r=p_r
If p_c<>0
mp_c=p_c
mk=k
EndIf
EndIf
Next
EndIf
ElseIf EventGadget=#Button_13
If mk>0 And mp_r>0 And mp_c>0
Resultat=DeleteFile(fb$)
CloseWindow(#Window_0)
Break
Else
If MessageRequester("Vous n'avez pas réussi à créer "+Chr(10)+"Le résident ="+PathFil_Res$,"Voulez-vous continuer ? Oui ou Non",#PB_MessageRequester_YesNo)=#PB_MessageRequester_Yes
Else
Resultat=DeleteFile(fb$)
CloseWindow(#Window_0)
Break
EndIf
EndIf
EndIf
; ////////////////////////
Case #PB_Event_CloseWindow
EventWindow = EventWindow()
If EventWindow = #Window_0
CloseWindow(#Window_0)
Break
EndIf
EndSelect
ForEver
;
Code : Tout sélectionner
; <<<<<<<<<<<<<<<<<<<<<
; <<<<< Cosecante <<<<<
Macro Cosec(Angle)
(1/Sin(Angle))
EndMacro
; <<<<<<<<<<<<<<<<<<<
; <<<<< Secante <<<<<
Macro Sec(Angle)
(1/Cos(Angle))
EndMacro
; <<<<<<<<<<<<<<<<<<<<<<
; <<<<< Cotangente <<<<<
Macro Cotan(Angle)
(Cos(Angle)/Sin(Angle))
EndMacro
; <<<<<<<<<<<<<<<<<<<<<<
; <<<<< Sin hyperbolique <<<<<
Macro SinH(Angle)
((Pow(#E, Angle) - Pow(#E, -Angle)))/2
EndMacro
; <<<<<<<<<<<<<<<<<<<<<<
; <<<<< Cos hyperbolique <<<<<
Macro CosH(Angle)
((Pow(#E, Angle) + Pow(#E, -Angle)))/2
EndMacro
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< CoTangente Hyperbolique <<<<<
Macro CotanH(Angle)
(((Pow(#E, Angle) + Pow(#E, -Angle))) / ((Pow(#E, Angle) - Pow(#E, -Angle))))
EndMacro
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Tangente Hyperbolique <<<<<
Macro TanH(Angle)
(((Pow(#E, Angle) - Pow(2.71828182846, -Angle))) / ((Pow(#E, Angle) + Pow(#E, -Angle))))
EndMacro
Chacune des entités Structures, Constantes, Interfaces et Macros ont une structure particulière enfin je crois.
A+
Il est fort peu probable que les mêmes causes ne produisent pas les mêmes effets.(Einstein)
Et en logique positive cela donne.
Il est très fortement probable que les mêmes causes produisent les mêmes effets.
Et en logique positive cela donne.
Il est très fortement probable que les mêmes causes produisent les mêmes effets.