Désolé de te déranger encore une fois, J'ai bien viré la librairie Ldb comme tu me l'as suggéré, mais cette fois-ci le programme s'arrête sur LdbInit() qui ne semble pas avoir été incorporé à ta librairie. j'ai supprimé cette instruction de mon programme qui semble pour l'instant fonctionner sans elle. Mais en serat-il de même par la suite
Droopy's Lib
C'est encore moi 
 
Désolé de te déranger encore une fois, J'ai bien viré la librairie Ldb comme tu me l'as suggéré, mais cette fois-ci le programme s'arrête sur LdbInit() qui ne semble pas avoir été incorporé à ta librairie. j'ai supprimé cette instruction de mon programme qui semble pour l'instant fonctionner sans elle. Mais en serat-il de même par la suite
			
			
									
									
						Désolé de te déranger encore une fois, J'ai bien viré la librairie Ldb comme tu me l'as suggéré, mais cette fois-ci le programme s'arrête sur LdbInit() qui ne semble pas avoir été incorporé à ta librairie. j'ai supprimé cette instruction de mon programme qui semble pour l'instant fonctionner sans elle. Mais en serat-il de même par la suite
Qu'en pensez ?
			
			
									
									
						Code : Tout sélectionner
;Author : Dr Dri / lionel_om / Droopy
#GFP_Drive=1
#GFP_Path=2
#GFP_File=4
#GFP_Extension=8
Procedure.s GetPartOfFile(File.s, Part.l)
  
  Protected Temp.s
  
  ;/ Drive
  If Part & #GFP_Drive
    Temp+Left(File,2)
    If Part & #GFP_Path : Temp+"\":EndIf
  EndIf
  
   
  ;/ Path
  If Part & #GFP_Path
    Temp+Mid(GetPathPart(File),4,Len(GetPathPart(File))-4)
    If Part & #GFP_File : Temp+"\":EndIf
  EndIf
  
  
  ;/ File
  If Part & #GFP_File
    If Len(GetExtensionPart(File))
       Temp+Left(GetFilePart(File), Len(GetFilePart(File))-1-Len(GetExtensionPart(File))) 
    Else
      Temp+File
    EndIf
    If Part & #GFP_Extension : Temp+".":EndIf
  EndIf
  
  ;/ Extension
  If Part & #GFP_Extension
    Temp+GetExtensionPart(File)
  EndIf
  
  ProcedureReturn Temp
EndProcedure    
;/ Test
#file="C:\Directory\SubDirectory\File.exe"
MessageRequester("",GetPartOfFile(#file,#GFP_Drive))
MessageRequester("",GetPartOfFile(#file,#GFP_Path))
MessageRequester("",GetPartOfFile(#file,#GFP_File))
MessageRequester("",GetPartOfFile(#file,#GFP_Extension))
MessageRequester("",GetPartOfFile(#file,#GFP_Drive|#GFP_Path|#GFP_File|#GFP_Extension))
Dr. Dri a écrit :passe par des variables temporaires... les appels de fonctions à répétition ont tendance à ralentir...
Code : Tout sélectionner
;Author : Dr Dri / lionel_om / Droopy
#GFP_Drive=1
#GFP_Path=2
#GFP_File=4
#GFP_Extension=8
Procedure.s GetPartOfFile(File.s, Part.l)
  
  Protected Temp.s , TempPathPart.s , TempFilePart.s  , TempExtensionPart.s
  
  TempPathPart=GetPathPart(File)
  TempFilePart=GetFilePart(File)
  TempExtensionPart=GetExtensionPart(File)
  
  ;/ Drive
  If Part & #GFP_Drive
    Temp+Left(File,2)
    If Part & #GFP_Path : Temp+"":EndIf
  EndIf
  
   
  ;/ Path
  If Part & #GFP_Path
    Temp+Mid(TempPathPart,4,Len(TempPathPart)-4)
    If Part & #GFP_File : Temp+"":EndIf
  EndIf
  
  
  ;/ File
  If Part & #GFP_File
    If Len(TempExtensionPart)
       Temp+Left(TempFilePart, Len(TempFilePart)-1-Len(TempExtensionPart)) 
    Else
      Temp+File
    EndIf
    If Part & #GFP_Extension : Temp+".":EndIf
  EndIf
  
  ;/ Extension
  If Part & #GFP_Extension
    Temp+TempExtensionPart
  EndIf
  
  ProcedureReturn Temp
EndProcedure    
;/ Test
#file="C:\Directory\SubDirectory\File.exe"
MessageRequester("",GetPartOfFile(#file,#GFP_Drive))
MessageRequester("",GetPartOfFile(#file,#GFP_Path))
MessageRequester("",GetPartOfFile(#file,#GFP_File))
MessageRequester("",GetPartOfFile(#file,#GFP_Extension))
MessageRequester("",GetPartOfFile(#file,#GFP_Drive|#GFP_Path|#GFP_File|#GFP_Extension))- 
				lionel_om
 - Messages : 1500
 - Inscription : jeu. 25/mars/2004 11:23
 - Localisation : Sophia Antipolis (Nice)
 - Contact :
 
Oui c'est bon, moi ça me va.
Je le dl demain (j'au oublié ma clé USB aujourd8
 ) et je le teste dans les différents cas..  
			
			
									
									Je le dl demain (j'au oublié ma clé USB aujourd8
Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
						Participez à son extension: ajouter vos programmes et partagez vos codes !
Version 1.27 disponible  
 
Changelog :
			
			
									
									
						Changelog :
Wrap Fixed : NetUserAdd
Option Recurse Added for SearchFileInit
Function Added : GetPartOfFile
Function Added : LocaleDate
Function Added : NextDirectory
Function Changed : RunProgramAtStartup
Function Added : DelProgramAtStartup
Function Added : IsProgramRunAtStartup
Function Added : Week
Merci Droopy pour la nlle version.
Je vais me permettre de faire quelques petites remarques - c pas méchant - juste pour être constructif rassures toi.
 
1/ 66K la lib : ca commence à faire gros l'exe quand on utilise ne serait-ce qu'une seule fonction. Peut etre - vu le projet grandissant - qu'il faudra penser à la splitter en pls petites libs.
2/ BlockInput() & BlockInputW98() : pas pratique pour le programmeur, ne pourrais-tu pas faire le test toi-même dans la lib et appliquer la bonne procédure en fonction de l'OS ?
3/ ChangeLog : il est à l'envers, en principe, on met la der ver en haut.
4/ LocaleDate(Mask.s,Date.l,lang.l) : il faudrait utiliser le principe des parametres facultatifs proposés par TailBite.
- LocaleDate(Date.l) ; avec un masque par défaut donc, lang à 0
- LocaleDate(Date.l,Mask.s,)
- LocaleDate(Date.l,Mask.s,lang.b)
- LocaleDate(Date.l,Mask.s,lang.b,sublang.b)
remarques :
lang.b et sublang.b sont des .b
il faudra faire une procedure LCID privée pour supporter les sublang.b dont voici le source :
heu et pis c tout parceque le match commence à l'instant.  
			
			
									
									
						Je vais me permettre de faire quelques petites remarques - c pas méchant - juste pour être constructif rassures toi.
1/ 66K la lib : ca commence à faire gros l'exe quand on utilise ne serait-ce qu'une seule fonction. Peut etre - vu le projet grandissant - qu'il faudra penser à la splitter en pls petites libs.
2/ BlockInput() & BlockInputW98() : pas pratique pour le programmeur, ne pourrais-tu pas faire le test toi-même dans la lib et appliquer la bonne procédure en fonction de l'OS ?
3/ ChangeLog : il est à l'envers, en principe, on met la der ver en haut.
4/ LocaleDate(Mask.s,Date.l,lang.l) : il faudrait utiliser le principe des parametres facultatifs proposés par TailBite.
- LocaleDate(Date.l) ; avec un masque par défaut donc, lang à 0
- LocaleDate(Date.l,Mask.s,)
- LocaleDate(Date.l,Mask.s,lang.b)
- LocaleDate(Date.l,Mask.s,lang.b,sublang.b)
remarques :
lang.b et sublang.b sont des .b
il faudra faire une procedure LCID privée pour supporter les sublang.b dont voici le source :
Code : Tout sélectionner
Procedure.l LCID(lang.b,sublang.b) 
  
  ; Retourne une valeur LCID utilisable avec GetDateFormat() par ex. 
  
  Protected lang.b, sublang.b, lRes.l 
  
  lRes = (#SORT_DEFAULT<<16) | ( (sublang<<10) | lang ) 
  
  ProcedureReturn lRes 
  
EndProcedure1°) Une Lib créée avec TailBite n’inclus dans l’exe que la fonction de la lib qui est utilisée !
2°) Sera modifié dans la prochaine version avec le code suivant :
3°) Je savais pas, je vais le mettre à l’endroit dans la prochaine version.
4°) Les procédures créés avec les paramètres facultatifs dans tailbite empêchent d’exécuter la procédure directement, et ne facile ensuite ni le débogage, ni l’apperçu du code source.
Donc je n’utilise pas cette possibilité .
5°) J'ai pas tout compris
Merci pour tes critiques, constructives
			
			
									
									
						2°) Sera modifié dans la prochaine version avec le code suivant :
Code : Tout sélectionner
; Inhibit keyboard & Mouse
; PureBasic 3.93
; 
; Windows 9x : 
; Caution : The keyboard And Mouse are disabled Until Next reboot
; State.l don't care / Return : Nothing
; 
; Other OS  :
; State.l = #True --> Locked / #False --> Unlocked
; Return 1 is sucess / 0 If error Or always Locked
  
ProcedureDLL BlockInput(State.l)
  
  If NTCore() ;/ NT Core
  
  If State.l=#True
    retour=BlockInput_(#True)
    
  EndIf
  
  If State.l=#False
    retour=BlockInput_(#False)
  EndIf
  
  If retour <>0 : retour =1 : EndIf
  
Else ;/ Windows 9x
  
  RunProgram("RunDll32.exe","MOUSE,DISABLE","")
  RunProgram("RunDll32.exe","KEYBOARD,DISABLE","")
  
EndIf
  
  ProcedureReturn retour
  
EndProcedure
 
;/ Test
If NTCore()
  MessageRequester("Info","10 seconds with keyboard & Mouse locked")
  BlockInput(#True)
  Delay(10000)
  BlockInput(#False)
  MessageRequester("Keyboard & Mouse","Are Unlocked")
Else
  BlockInput(1)
  MessageRequester("Keyboard & Mouse disable","You must Reset !")
EndIf4°) Les procédures créés avec les paramètres facultatifs dans tailbite empêchent d’exécuter la procédure directement, et ne facile ensuite ni le débogage, ni l’apperçu du code source.
Donc je n’utilise pas cette possibilité .
5°) J'ai pas tout compris
Merci pour tes critiques, constructives
- Progi1984
 - Messages : 2659
 - Inscription : mar. 14/déc./2004 13:56
 - Localisation : France > Rennes
 - Contact :
 
Concernant ton 1°, si la fonction dépend d'une autre fonction, est ce que les deux fonctions sont inclues ?
			
			
									
									Librairies & Applications : https://www.purebasic.fr/french/viewtop ... f=8&t=6220
Site Web : https://rootslabs.net
						Site Web : https://rootslabs.net
coool je savais pas.Droopy a écrit :1°) Une Lib créée avec TailBite n’inclus dans l’exe que la fonction de la lib qui est utilisée !
vraiment dommage !4°) Les procédures créés avec les paramètres facultatifs dans tailbite empêchent d’exécuter la procédure directement, et ne facile ensuite ni le débogage, ni l’apperçu du code source.
Donc je n’utilise pas cette possibilité .
5°) je vais tenter de t'expliquer : ce que dit la doc microsoft
Code : Tout sélectionner
int GetDateFormat(
  LCID Locale,               // locale
  DWORD dwFlags,             // options
  CONST SYSTEMTIME *lpDate,  // date
  LPCTSTR lpFormat,          // date format
  LPTSTR lpDateStr,          // formatted string buffer
  int cchDate                // size of buffer
);toujours dans la doc msdn:
Code : Tout sélectionner
This parameter can be a locale identifier created by the MAKELCID macro, or one of the following predefined values.donc pour une fonction un petit peu plus complete :
Code : Tout sélectionner
Procedure.l LCID(lang.b,sublang.b) 
  
  ; Retourne une valeur LCID utilisable avec GetDateFormat() par ex. 
  
  Protected lang.b, sublang.b, lRes.l 
  
  lRes = (#SORT_DEFAULT<<16) | ( (sublang<<10) | lang ) 
  
  ProcedureReturn lRes 
  
EndProcedure 
Procedure.s LocaleDate(Mask.s,date.l,lang.l,sublang.l) 
  
  ; Retourne une date formatée par l'API Win32. 
  
  Protected Mask.s, date.l, lang.l, sublang.l, sRes.s, a.SYSTEMTIME 
  
  a\wYear  = Year(date) 
  a\wMonth = Month(date) 
  a\wDay   = Day(date) 
  
  sRes = Space(255) 
  GetDateFormat_(LCID(lang,sublang),0,a,Mask,sRes,255) 
  
  ProcedureReturn sRes 
  
EndProcedurePour le point 4 je poste ici la doc de TailBite :
Sinon merci pour le point 5, je matte ça  
 
A+
			
			
									
									
						Code : Tout sélectionner
You can make your function accept variable arguments. To do so, you must include two or more ProcedureDLL's with the same name and an index number:
   ProcedureDLL MyFunction(arg1, arg2)
     result = Pow(arg1, arg2)
     ProcedureReturn result
   EndProcedure
   ProcedureDLL MyFunction2(arg1, arg2, arg3)
     result = Pow(arg1, arg2)/arg3
     ProcedureReturn result
   EndProcedure
   
To be considered as different versions of the same function with different argument number, the arguments names and types must coincide between them; otherwise, both functions will be considered different functions and processed that way.
After the library is made, and the compiler restarted from the PureBasic editor, if you type MyFunction( in the PureBasic editor, the status window will show:
MyFunction (arg1, arg2 [, arg3])
And you'll be able to call the function with two or three arguments. You can make as many versions as you want, with a different number of arguments, as long as you follow the mentioned rules.A+
tu sais ma proposition de sous langage ne servira à rien si tu ne rends pas le parametre 'sublang' facultatif. en effet, çà va devenir contraignant de préciser à chaque fois un sous langage si on en a pas besoin. quoiqu'on peut mettre '0' et çà marchera aussi ou faire un LocaleDate2()....  
 
que veux tu me dire en mettant la doc TailBite ? que c'est contraignant à faire ? tu fais comme tu veux droopy mais moi je trouve çà au contraire génial.
 
 
			
			
									
									
						que veux tu me dire en mettant la doc TailBite ? que c'est contraignant à faire ? tu fais comme tu veux droopy mais moi je trouve çà au contraire génial.
Code : Tout sélectionner
Procedure.l LocaleDate_LCID(lang.b,sublang.b) 
  
  ; Retourne une valeur LCID utilisable avec GetDateFormat() par ex. 
  
  Protected lang.b, sublang.b, lRes.l 
  
  lRes = (#SORT_DEFAULT<<16) | ( (sublang<<10) | lang ) 
  
  ProcedureReturn lRes 
  
EndProcedure 
ProcedureDLL.s LocaleDate(Mask.s,Date.l,lang.l) 
  
  Protected Date.l, lang.l, lcid.l, sRes.s, st.SYSTEMTIME 
  
  st\wYear   = Year(Date) 
  st\wMonth  = Month(Date) 
  st\wDay    = Day(Date) 
  st\wHour   = Hour(Date) 
  st\wMinute = Minute(Date) 
  st\wSecond = Second(Date) 
  
  sRes = Space(255) 
  GetDateFormat_(lang,0,st,Mask,sRes,255) 
  
  ProcedureReturn sRes 
  
EndProcedure 
ProcedureDLL.s LocaleDate2(Mask.s,Date.l,lang.l,sublang.l) 
  
  Protected Mask.s, Date.l, lang.l, sublang.l, sRes.s, a.SYSTEMTIME 
  
  a\wYear  = Year(Date) 
  a\wMonth = Month(Date) 
  a\wDay   = Day(Date) 
  
  sRes = Space(255) 
  GetDateFormat_(LocaleDate_LCID(lang,sublang),0,a,Mask,sRes,255) 
  
  ProcedureReturn sRes 
  
EndProcedure
;/ Test
Temp.s="Italian : "+LocaleDate("dddd d MMMM yyyy gg",Date(),#LANG_ITALIAN)+#CRLF$
Temp.s+"Spanish : "+LocaleDate("dddd d MMMM yyyy gg",Date(),#LANG_SPANISH)+#CRLF$
Temp.s+"Local : "+LocaleDate("dddd d MMMM yyyy gg",Date(),0)+#CRLF$+#CRLF$
 
Temp.s+"Uzbek (Latin) : "+LocaleDate("dddd d MMMM yyyy gg",Date(),$43,1)+#CRLF$
Temp.s+"Uzbek (Cyrillic) : "+LocaleDate("dddd d MMMM yyyy gg",Date(),$43,2)
 
MessageRequester("Locale Date",Temp)Qu'en pense tu ?