PBOSL PB Libraries ab 4.30 nurnoch Includes
-
- Beiträge: 6267
- Registriert: 29.08.2004 08:37
- Computerausstattung: Hoffentlich bald keine mehr
- Kontaktdaten:
PBOSL PB Libraries ab 4.30 nurnoch Includes
Hallo,
Ein großer Teil der PureBasic OpenSource Libraries (Alle Tailbite Bibliotheken) wird ab der nächsten Version nurnoch als Include ausgeliefert, damit man nicht mit jeder Version von PureBasic die ganzen Libraries neu kompillieren muss. Außerdem wird die Lizenz geändert.
Wenn jemand der Bibliotheksautoren (PB3.94 Libraries werden wieder hinzugefügt) das hier liest kann er uns gerne Kontaktieren, falls ihm die Lizenzänderungen nicht gefallen und er seine Bibliothek lieber entfernen möchte oder derartiges.
MfG,
Daniel.
Ein großer Teil der PureBasic OpenSource Libraries (Alle Tailbite Bibliotheken) wird ab der nächsten Version nurnoch als Include ausgeliefert, damit man nicht mit jeder Version von PureBasic die ganzen Libraries neu kompillieren muss. Außerdem wird die Lizenz geändert.
Wenn jemand der Bibliotheksautoren (PB3.94 Libraries werden wieder hinzugefügt) das hier liest kann er uns gerne Kontaktieren, falls ihm die Lizenzänderungen nicht gefallen und er seine Bibliothek lieber entfernen möchte oder derartiges.
MfG,
Daniel.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
-
- Beiträge: 6267
- Registriert: 29.08.2004 08:37
- Computerausstattung: Hoffentlich bald keine mehr
- Kontaktdaten:
Was meinst du genau mit Geschmiere?edel hat geschrieben:Ja, ich hab was dagegen ... weniger wegen der Lizenz, vielmehr stoert
mich das Geschmiere. Also bitte entfernen, zumindest bis jemand es
neu und vor allem sauber schreibt. Danke.
Betrifft die CreateGadget Lib.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
-
- Beiträge: 6267
- Registriert: 29.08.2004 08:37
- Computerausstattung: Hoffentlich bald keine mehr
- Kontaktdaten:
Hmm... naja, da geht der doch noch (Hab schlimmere Codes gesehen, z.B. von T**as Instr***nts):Kaeru Gaman hat geschrieben:wahrscheinlich, dass keiner seinen schlecht strukturierten code sehen soll...
Code: Alles auswählen
;-----------------------------------------------------------------------------
; (c) 2006 Sebastian S. aka edel & Thomas Schulz aka ts-soft
;
; This library is free software; you can redistribute it and/or
; modify it under the terms of the GNU Lesser General Public
; License as published by the Free Software Foundation; either
; version 2.1 of the License, Or (at your option) any later version.
;
; This library is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY Or FITNESS For A PARTICULAR PURPOSE. See the GNU
; Lesser General Public License For more details.
;-----------------------------------------------------------------------------
!EXTRN _PB_Object_GetOrAllocateID@8
!EXTRN _PB_Gadget_RegisterGadget@16
!EXTRN _PB_Gadget_RegisterGadget_UNICODE@16
!EXTRN _PB_Gadget_Objects
CompilerIf Defined(PB_GadgetVT, #PB_Structure) = #False
Structure PB_GadgetVT
GadgetType.l
SizeOf.l
GadgetCallback.l
FreeGadget.l
GetGadgetState.l
SetGadgetState.l
GetGadgetText.l
SetGadgetText.l
AddGadgetItem2.l
AddGadgetItem3.l
RemoveGadgetItem.l
ClearGadgetItemList.l
ResizeGadget.l
CountGadgetItems.l
GetGadgetItemState.l
SetGadgetItemState.l
GetGadgetItemText.l
SetGadgetItemText.l
OpenGadgetList2.l
GadgetX.l
GadgetY.l
GadgetWidth.l
GadgetHeight.l
HideGadget.l
AddGadgetColumn.l
RemoveGadgetColumn.l
GetGadgetAttribute.l
SetGadgetAttribute.l
GetGadgetItemAttribute2.l
SetGadgetItemAttribute2.l
SetGadgetColor.l
GetGadgetColor.l
SetGadgetItemColor2.l
GetGadgetItemColor2.l
SetGadgetItemData.l
GetGadgetItemData.l
EndStructure
CompilerEndIf
CompilerIf Defined(PB_Gadget, #PB_Structure) = #False
Structure PB_Gadget
Gadget.l
*VT.PB_GadgetVT
UserData.l
OldCallback.l
Daten.l[4]
EndStructure
CompilerEndIf
;GetGadgetParent
;
; Rueckgabe : Parent Handle
;
Procedure GetGadgetParent()
!EXTRN _PB_Object_GetThreadMemory@4
!EXTRN _PB_Gadget_Globals
!MOV Eax,[_PB_Gadget_Globals]
!push eax
!call _PB_Object_GetThreadMemory@4
!MOV Eax,[Eax]
ProcedureReturn
CreateGadgetList(0)
EndProcedure
Structure Gadget_Info
OldCallback.l
DestroyProc.l
PBID.l
EndStructure
Procedure RegGadget_Callback(hwnd, msg, wparam, lparam)
Protected *Gadget_Info.Gadget_Info = GetProp_(hwnd, "GadgetInfo")
Protected OldProc = *Gadget_Info\OldCallback
If msg = #WM_NCDESTROY
If *Gadget_Info
If *Gadget_Info\DestroyProc
CallFunctionFast(*Gadget_Info\DestroyProc, *Gadget_Info\pbid)
EndIf
EndIf
RemoveProp_(hwnd, "GadgetInfo")
FreeMemory(*Gadget_Info)
EndIf
ProcedureReturn CallWindowProc_(OldProc, hwnd, msg, wparam, lparam)
EndProcedure
;RegisterGadget
; hwnd.l ; Handle des Controls
; ID.l ; PB_ID
; DestroyProc.l=0 ; Proc zum aufraeumen , kann null sein
; *vt.PB_GadgetVT = 0 ; Gadget VT , kann null sein
; unicode ; 1 = unicode , 0 = ascii
; Rueckgabe : wenn ID = -1 / PB_Any = PB_ID
; sonst Handle des Controls
Global PBOSL_CreateGadget_temphwnd.l
Global PBOSL_CreateGadget_tempid.l
Procedure RegisterGadget(hwnd.l, ID.l, DestroyProc.l , *vttemp.PB_GadgetVT ,unicode)
Protected *Gadget_Info.Gadget_Info
Protected OldCallback.l
Protected *vt.PB_GadgetVT
If ((hwnd = 0) Or (id < #PB_Any))
ProcedureReturn 0
EndIf
*vt = AllocateMemory(SizeOf(PB_GadgetVT))
If *vttemp <> 0
CopyMemory(*vttemp,*vt,SizeOf(PB_GadgetVT))
EndIf
PBOSL_CreateGadget_temphwnd = hwnd
PBOSL_CreateGadget_tempid = Id
!MOV esi,dword[v_PBOSL_CreateGadget_tempid]
!MOV edi,[v_PBOSL_CreateGadget_temphwnd]
!PUSH dword[v_PBOSL_CreateGadget_tempid]
!PUSH dword [_PB_Gadget_Objects]
!CALL _PB_Object_GetOrAllocateID@8
!PUSH dword[p.p_vt] ; vt
!PUSH edi ; hwnd
!PUSH eax ; *gadget
!PUSH esi ; ID
If Not unicode
!CALL _PB_Gadget_RegisterGadget@16
Else
!CALL _PB_Gadget_RegisterGadget_UNICODE@16
EndIf
!mov [p.v_hwnd],eax
If DestroyProc
*Gadget_Info = AllocateMemory(SizeOf(Gadget_Info))
If id = #PB_Any
*Gadget_Info\PBID = hwnd
Else
*Gadget_Info\PBID = ID
EndIf
*Gadget_Info\DestroyProc = DestroyProc
*Gadget_Info\OldCallback = SetWindowLong_(GadgetID(*Gadget_Info\PBID), #GWL_WNDPROC, @RegGadget_Callback())
SetProp_(GadgetID(*Gadget_Info\PBID), "GadgetInfo", *Gadget_Info)
EndIf
ProcedureReturn hwnd
EndProcedure
; CreateGadget
; Id.l ; Gadget, kann auch #PB_Any sein!
; ClassName.s ; Windows-Klassenname (muss Windows bekannt sein)
; Text.s ; ggf. Text/Ãœberschrift
; Style.l ; Stil
; X.l, Y.l ; linke, obere Ecke des Gadgets auf dem Fenster
; DX.l, DY.l ; Größe des Gadgets
; Optional:
; ExStyle.l ; erweiterter Stil
; DestroyProc.l ; Procedure-Adresse, einer Procedure zum Aufräumen
; *vt.PB_GadgetVT ; Pointer zu einer gefüllten Structurevariable mit GadgetFunktionen!
;
; Rückgabe: hWnd oder ID (bei #PB_Any)
ProcedureDLL CreateGadget(Id.l, ClassName.s, Text.s, Style.l, X.l, Y.l, CX.l, CY.l, ExStyle.l = 0, DestroyProc.l = 0, *vt.PB_GadgetVT = 0)
Protected hwnd.l
Protected Parent.l = GetGadgetParent()
Protected hInstance.l = GetModuleHandle_(0)
hwnd = CreateWindowEx_(ExStyle, ClassName, Text, Style, X, Y, CX, CY, Parent, 0, hInstance, 0)
SendMessage_(hWnd, #WM_SETFONT, GetGadgetFont(#PB_Default), 1);
If hwnd = #False : ProcedureReturn #False : EndIf
ProcedureReturn RegisterGadget(hwnd, ID, DestroyProc, *vt,0)
EndProcedure
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
- 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
Code der für eine Lib geschrieben wurde ist ja auch nicht unbedingt geeignet
als Include.
Der globale Variablenscope der Lib wird zum globalen Variablenscope des
Sources. Meine RFile Lib ist OOP, als Include macht die auch keinen Sinn,
die Methoden sind nicht mehr gekapselt.
Also einfach als Include raushauen wird wohl nicht hinhauen
als Include.
Der globale Variablenscope der Lib wird zum globalen Variablenscope des
Sources. Meine RFile Lib ist OOP, als Include macht die auch keinen Sinn,
die Methoden sind nicht mehr gekapselt.
Also einfach als Include raushauen wird wohl nicht hinhauen
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.
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
-
- Beiträge: 6267
- Registriert: 29.08.2004 08:37
- Computerausstattung: Hoffentlich bald keine mehr
- Kontaktdaten:
Desshalb hab ich die letzte Woche alle Globalen/Shared Variablen mit PBOSL_LibraryName_* ersetzt.ts-soft hat geschrieben:Code der für eine Lib geschrieben wurde ist ja auch nicht unbedingt geeignet
als Include.
Der globale Variablenscope der Lib wird zum globalen Variablenscope des
Sources. Meine RFile Lib ist OOP, als Include macht die auch keinen Sinn,
die Methoden sind nicht mehr gekapselt.
Also einfach als Include raushauen wird wohl nicht hinhauen
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
- 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
Das hab ich mir gedacht / gehofft. Aber bei meiner Klasse reicht das auchDarkDragon hat geschrieben: Desshalb hab ich die letzte Woche alle Globalen/Shared Variablen mit PBOSL_LibraryName_* ersetzt.
nicht. Die Methoden mit lauter ___ schreiben mag ich nicht, und bringts auch
nicht.
Aber es wird wohl das beste sein, bis PB vielleicht mal sowas von Hause
kann. Ich hab mir ja schon vor langer Zeit div. Includes angelegt, statt Libs
draus zu machen.
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.
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
-
- Beiträge: 6267
- Registriert: 29.08.2004 08:37
- Computerausstattung: Hoffentlich bald keine mehr
- Kontaktdaten:
Die Methoden sind auch egal. Ich glaube niemand wird deine RFile... Methoden jemals neu deklarieren wenn er die Includes benutzt.ts-soft hat geschrieben:Das hab ich mir gedacht / gehofft. Aber bei meiner Klasse reicht das auchDarkDragon hat geschrieben: Desshalb hab ich die letzte Woche alle Globalen/Shared Variablen mit PBOSL_LibraryName_* ersetzt.
nicht. Die Methoden mit lauter ___ schreiben mag ich nicht, und bringts auch
nicht.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
- 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
Wenn Du möchtest kannste meine SQLite3 Include mit aufnehmen:
http://www.purebasic.fr/english/viewtop ... 368#260368
Beispiele sind da im Thread verstreut
Hab alle Beispiele auch mit 64-Bit getestet, und merkwürdiger Weise
funktioniert das sogar
Gruß
Thomas
http://www.purebasic.fr/english/viewtop ... 368#260368
Beispiele sind da im Thread verstreut
Hab alle Beispiele auch mit 64-Bit getestet, und merkwürdiger Weise
funktioniert das sogar
Gruß
Thomas
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.
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.