Module für PureBasic 5.2x LTS

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Module für PureBasic 5.2x LTS

Beitrag von ts-soft »

Probs.pbi (ts-soft / Fred)
Windows / Linux / MacOS

Code: Alles auswählen

  Declare.i GetProp(Gadget, Name.s)             ; Get a property from the given #Gadget. Returns 0 if the property does not exist
  Declare.s GetPropStr(Gadget, Name.s)          ; Get a propertystring from the given #Gadget. Returns "" if the property does not exist
  Declare   SetProp(Gadget, Name.s, Value)      ; Set a property on the given #Gadget
  Declare   SetPropStr(Gadget, Name.s, Value.s) ; Set a propertystring on the given #Gadget
  Declare   RemoveProp(Gadget, Name.s)          ; Remove a property from the given #Gadget (if it exists)
  Declare   RemoveAllProps(Gadget)              ; Remove all properties (and the map) from a given #Gadget.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Module für PureBasic 5.2x LTS

Beitrag von ts-soft »

Unrar 5.pbi (ts-soft)
Windows Only

Code: Alles auswählen

Declare RARUnpackArchiv(FileName.s, DestPath.s = "", Password.s = "", *Callback = 0)
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Module für PureBasic 5.2x LTS

Beitrag von ts-soft »

FileMap.pbi ts-soft)
Windows Only

Code: Alles auswählen

DeclareModule FileMap
  Declare Create(Name.s, Size.i)
  Declare Open(Name.s)
  Declare Close(*Mem)
EndDeclareModule
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Module für PureBasic 5.2x LTS

Beitrag von ts-soft »

OwnGadget.pbi (ts-soft/edel)
Windows / Linux / MacOS

Code: Alles auswählen

  Declare RegisterGadget(ID.i, hWnd.i, *vt.GadgetVT = 0)
  CompilerSelect #PB_Compiler_OS
    CompilerCase #PB_OS_Windows
      Declare CreateGadget(ID.i, ClassName.s, Text.s, Style.l, x.i, y.i, w.i, h.i, ExStyle.l = 0, *vt.GadgetVT = 0)
  CompilerEndSelect
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Module für PureBasic 5.2x LTS

Beitrag von ts-soft »

PBDATA.pbi (ts-soft)
Windows Only

Code: Alles auswählen

DeclareModule PBDATA
  Interface IPBDATA
    Free()                          ; close the resfile and releases the object.
    AddMem.i(ResID, *mem, size = 0) ; add the memory with resid to the resourcefile.
    AddFile.i(ResID, FileName.s)    ; load the file in to memory and add the memory with resid to the resourcefile.
  EndInterface
 
  Declare New(ResFile.s)            ; create object and open or create resfile. result is object.
  Declare Get(ResID, hModule = 0)   ; load the resource with resid in to memory. result is memoryaddress or 0 on error.
EndDeclareModule
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Module für PureBasic 5.2x LTS

Beitrag von ts-soft »

TaskBarProgress.pbi (ts-soft)
Windows Only

Code: Alles auswählen

DeclareModule TaskBarProgress
  #TBPF_NOPROGRESS    = $0
  #TBPF_INDETERMINATE = $1
  #TBPF_NORMAL        = $2
  #TBPF_ERROR         = $4
  #TBPF_PAUSED        = $8

  Interface TaskBarProgress
    GetState.i()
    GetValue.i()
    SetState(state.i)
    SetValue(value.i)
    Destroy()
  EndInterface
 
  Declare TBP_New(hWnd.i, min.q = 0, max.q = 100)
EndDeclareModule
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Thorsten1867
Beiträge: 1359
Registriert: 04.02.2005 15:40
Computerausstattung: [Windows 10 x64] [PB V5.7x]
Wohnort: Kaufbeuren
Kontaktdaten:

Re: Module für PureBasic 5.2x LTS

Beitrag von Thorsten1867 »

CopyFilesEx.pbi (ts-soft)
Windows / Linux / MacOS

Dateien kopieren mit Fortschrittsanzeige
Der Code dient dem Kopieren von Dateien (nicht Verzeichnissen) mit Fortschritt!
Wer Verzeichnisse Kopieren möchte, sollte die Dateien der Verzeichnisse nacheinander
kopieren. Alles andere macht auch nicht so viel Sinn, da der Zugriff durch mehrere
Threads auf dieselbe Festplatte eher Performanceeinbussen als Gewinn bringt!
Zuletzt geändert von Thorsten1867 am 09.03.2014 11:06, insgesamt 1-mal geändert.
Download of PureBasic - Module
Download of PureBasic - Programmes

[Windows 11 x64] [PB V6]

Bild
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8675
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken
Kontaktdaten:

Re: Module für PureBasic 5.2x LTS

Beitrag von NicTheQuick »

CMinPackWrapper.pbi (NicTheQuick)
Linux Only

Automatisches Fitting von beliebigen Funktionen.
Die Funktionen helfen aus n Datenpunkten (x,y) eine Funktion mit m <= n Parametern anzugleichen. Die Library, die dafür genutzt wird, ist MINPACK.

Code: Alles auswählen

DeclareModule CMinPack
   UseModule CMinPackType

   PrototypeC.l cminpack_func_nn(*p, n.l, *x.RealArray, *fvec.RealArray, iflag.l)
   PrototypeC.l cminpack_funcder_nn(*p, n.l, *x.RealArray, *fvec.RealArray, *fjac.RealArray, ldfjac.l, iflag.l)
   PrototypeC.l cminpack_func_mn(*p, m.l, n.l, *x.RealArray, *fvec.RealArray, iflag.l)
   PrototypeC.l cminpack_funcder_mn(*p, m.l, n.l, *x.RealArray, *fvec.RealArray, *fjac.RealArray, ldfjac.l, iflag.l)
   PrototypeC.l cminpack_funcderstr_mn(*p, m.l, n.l, *x.RealArray, *fvec.RealArray, *fjrow.RealArray, iflag.l)
   Declare.l func(hybrd1)(*fcn_nn.cminpack_func_nn, *p, n.l, *x.RealArray, *fvec.RealArray, tol.r, *wa.RealArray, lwa.l)
   Declare.l func(hybrd)(*fcn_nn.cminpack_func_nn, *p, n.l, *x.RealArray, *fvec.RealArray, xtol.r, maxfev.l, ml.l, mu.l,
              epsfcn.r, *diag.RealArray, mode.l, factor.r, nprint.l, *nfev.Long, *fjac.RealArray,
              ldfjac.l, *r.RealArray, lr.l, *qtf.Real, *wa1.RealArray, *wa2.RealArray, *wa3.RealArray, *wa4.RealArray)
   Declare.l func(hybrj1)(*fcnder_nn.cminpack_funcder_nn, *p, n.l, *x.RealArray, *fvec.RealArray, *fjac.RealArray, ldfjac.l,
            tol.l, *wa.RealArray, lwa.l)
   Declare.l func(hybrj)(*fcnder_nn.cminpack_funcder_nn, *p, n.l, *x.RealArray, *fvec.RealArray, *fjac.RealArray, ldfjac.l,
            xtol.r, maxfev.l, *diag.RealArray, mode.l, factor.r, nprint.l, *nfev.Long, *njev.Long,
            *r.RealArray, lr.l, *qtf.RealArray, *wa1.RealArray, *wa2.RealArray, *wa3.RealArray, *wa4.RealArray)
   Declare.l func(lmdif1)(*fcn_mn.cminpack_func_mn, *p, m.l, n.l, *x.RealArray, *fvec.RealArray, tol.r,
            *iwa.Long, *wa.RealArray, lwa.l)
   Declare.l func(lmdif)(*fcn_mn.cminpack_func_mn, *p, m.l, n.l, *x.RealArray, *fvec.RealArray, ftol.r,
            xtol.r, gtol.r, maxfev.l, epsfcn.r, *diag.RealArray, mode.l, factor.r,
            nprint.l, *nfev.Long, *fjac.RealArray, ldfjac.l, *ipvt.Long, *qtf.RealArray,
            *wa1.RealArray, *wa2.RealArray, *wa3.RealArray, *wa4.RealArray)
   Declare.l func(lmder1)(*fcnder_mn.cminpack_funcder_mn, *p, m.l, n.l, *x.RealArray, *fvec.RealArray, *fjac.RealArray,
            ldfjac.l, tol.r, *ipvt.Long, *wa.RealArray, lwa.l)
   Declare.l func(lmder)(*fcnder_mn.cminpack_funcder_mn, *p, m.l, n.l, *x.RealArray, *fvec.RealArray, *fjac.RealArray,
            ldfjac.l, ftol.r, xtol.r, gtol.r, macfev.l, *diag.RealArray, mode.l, factor.r,
            nprint.l, *nfev.Long, *njev.Long, *ipvt.Long, *qtf.RealArray, *wa1.RealArray,
            *wa2.RealArray, *wa3.RealArray, *wa4.RealArray)
   Declare.l func(lmstr1)(*fcnderstr_mn.cminpack_funcderstr_mn, *p, m.l, n.l, *x.RealArray,*fvec.RealArray, *fjac.RealArray,
            ldfjac.l, tol.r, *ipvt.Long, *wa.RealArray, lwa.l)
   Declare.l func(lmstr)(*fcnderstr_mn.cminpack_funcderstr_mn, *p, m.l, n.l, *x.RealArray, *fvec.RealArray, *fjac.RealArray,
            ldfjac.l, ftol.r, xtol.r, gtol.r, maxfev.l, *diag.RealArray, mode.l, factor.r,
            nprint.l, *nfev.Long, *njev.Long, *ipvt.Long, *qtf.RealArray, *wa1.RealArray,
            *wa2.RealArray, *wa3.RealArray, *wa4.RealArray)
   Declare func(chkder)(m.l, n.l, *x.RealArray, *fvec.RealArray, ldfjac.l, *xp.RealArray, *fvecp.RealArray,
            mode.l, *err.RealArray)
   Declare.r func(dpmpar)(i.l)
   Declare.r func(enorm)(n.l, *x.RealArray)
   Declare.l func(fdjac2)(*fcn_mn.cminpack_func_mn, *p, m.l, n.l, *x.RealArray, *fvec.RealArray, *fjac.RealArray,
            ldfjac.l, epsfcn.r, *wa.RealArray)
   Declare.l func(fdjac1)(*fcn_mn.cminpack_func_nn, *p, n.l, *x.RealArray, *fvec.RealArray, *fjac.RealArray,
            ldfjac.l, ml.l, mu.l, epsfcn.r, *wa1.RealArray, *wa2.RealArray)
   Declare func(covar)(n.l, *r.RealArray, ldr.l, *ipvt.RealArray, tol.r, *wa.RealArray)
   Declare.l func(covar1)(m.l, n.l, fsumq.r, *r.RealArray, ldr.l, *ipvt.RealArray, tol.r, *wa.RealArray)
EndDeclareModule

DeclareModule CMinPackWrapper
   UseModule CMinPackType
   
   Prototype.r fittingFunction(x.r, *coeff.RealArray)
   
   Structure ValuePair
      x.r
      y.r
   EndStructure
   
   Declare.i fit_lmdif(*fittingFunction.fittingFunction, Array observedValues.ValuePair(1), Array coeffs.r(1), tolerance.r, *quit.Integer = 0)
EndDeclareModule
Bild
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Module für PureBasic 5.2x LTS

Beitrag von ts-soft »

CopyDirEx.pbi (ts-soft)
Windows / Linux / MacOS

Die Funktion dieses Moduls ähnelt dem CopyDirectory() von PB (die ersten 3 Parameter sind gleich),
aber bietet die Möglichkeit einen Fortschritt anzuzeigen, sowie den Abbruch.
Das Kopieren geschieht Rekursiv (hierfür hab ich mir eine Funktion von STARGÅTE ausgeliehen und für meine
Bedürfnisse überarbeitet, danke). Dateiattribute werden autom. wiederhergestellt.

Code: Alles auswählen

DeclareModule CopyDirEx
  
  EnableExplicit

  Prototype.i CopyDirExCB(File.s, Dir.s, Sum.i, Procent.i)
  
  Declare CopyDirectoryEx(SourceDirectory.s,
                          DestinationDirectory.s,
                          Pattern.s = "",
                          BufferSize.l = 4096,
                          CustomEvent.l = #PB_Event_FirstCustomValue, ; This event is fired after Copying finished or canceld (SignalStop).
                          Callback.i = 0)                             ; See Prototype CopyDirExCB.
  Declare SignalStop() ; send a signal to stop copying after actual file!
  
EndDeclareModule
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Module für PureBasic 5.2x LTS

Beitrag von RSBasic »

Monitor.pbi (NicTheQuick)

Monitor mit ConditionVariable als Erweiterung für Mutex.
Allgemeine Informationen bezüglich Monitor: http://de.wikipedia.org/wiki/Monitor_%28Informatik%29

Code: Alles auswählen

DeclareModule Monitor
   EnableExplicit
   
   CompilerIf Not #PB_Compiler_Thread
      CompilerError "Please activate the thread safe option!"
   CompilerEndIf
   
   Interface ConditionVariable
      free()
      wait()
      signal()
      broadcast.i()
   EndInterface
   
   Interface Mutex
      free()
      acquire()
      release()
      newConditionVariable.i()
   EndInterface
   
   Declare.i newMutex()
EndDeclareModule
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Antworten