Wie Lib, exp, dll in PB einbinden? (eGrid Erweiterung)

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Kurzer
Beiträge: 1617
Registriert: 25.04.2006 17:29
Wohnort: Nähe Hamburg

Wie Lib, exp, dll in PB einbinden? (eGrid Erweiterung)

Beitrag von Kurzer »

Hallo,

Auf der Suche nach einem editierbaren GridGadget bin ich über das eGrid-light gestolpert.

Ich würde es gern ausprobieren, weiß aber nicht wie ich diese Erweiterung in PB einbinde.

Die Sache mit den userlibs leuchtet mir ein, aber eGrid liegt als .dll, .exp und .lib vor. Ein Dateiheader-Vergleich mit bereits installierten PB Userlibs läßt mich vermuten, daß es sich bei allen 3 Varianten nicht um PB Userlibs handelt.

Ähm, help, wo müssen die Daten hinkopiert werden, damit ich die eGrid-Funktionen in PB nutzen kann? :oops:

Markus
"Never run a changing system!" | "Unterhalten sich zwei Alleinunterhalter... Paradox, oder?"
PB 6.12 x64, OS: Win 11 24H2 x64, Desktopscaling: 150%, CPU: I7 12700 H, RAM: 32 GB, GPU: Intel(R) Iris(R) Xe Graphics | NVIDIA GeForce RTX 3070
Useralter in 2025: 57 Jahre.
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

Beitrag von ts-soft »

Du brauchst nur die DLL, kannst aber die DLL-Funktionen von der lib
importieren. Aber wenn Du damit nicht klarkommst, nutzte die DLL eben
direkt. Die *.exp ist nutzlos für Dich.
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
Kurzer
Beiträge: 1617
Registriert: 25.04.2006 17:29
Wohnort: Nähe Hamburg

Beitrag von Kurzer »

Okay, nur was muß ich mit den Dateien eGrid-light_ansi.dll und eGrid-light_ansi.lib tun, damit PB Notiz davon nimmt und ich die Befehle der eGrid Hilfe im Source nutzen kann?

Sorry, is mir echt peinlich, aber mit Dlls habe ich irgendwie noch nie gearbeitet.

Markus
"Never run a changing system!" | "Unterhalten sich zwei Alleinunterhalter... Paradox, oder?"
PB 6.12 x64, OS: Win 11 24H2 x64, Desktopscaling: 150%, CPU: I7 12700 H, RAM: 32 GB, GPU: Intel(R) Iris(R) Xe Graphics | NVIDIA GeForce RTX 3070
Useralter in 2025: 57 Jahre.
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

Da ist doch ne Demo dabei , oder nicht ?
Zuletzt geändert von edel am 26.06.2007 23:10, insgesamt 1-mal geändert.
Benutzeravatar
Kurzer
Beiträge: 1617
Registriert: 25.04.2006 17:29
Wohnort: Nähe Hamburg

Beitrag von Kurzer »

edel hat geschrieben:Da ist doch ne Demo dabei , oder nicht ?
Edel, Du hast Recht.
Ich ging davon aus, daß man die dll vorher in ein PB-Verzeichnis kopieren muß - also die eGrid-Erweiterung "installieren" muß.
Es reicht aber scheinbar, wenn ich die Dateien in das Projektverzeichnis kopiere. Danke!

Allerdings includiert die eGrid Demo noch eine PB Datei, in der einige Festlegungen vorgenommen werden (s.u.)

Wie läuft das denn, wenn man eine PB-fremde Dll nutzen möchte?
Da gibt es dann ja keinen Deklarationscode für PB?

Code: Alles auswählen

;******************************************************************************************
;'egrid' editable grid control. By Stephen Rodriguez.
;******************************************************************************************
  CompilerIf #PB_Compiler_Unicode 
    Import "egrid-lite_unicode.lib" 
  CompilerElse 
    Import "egrid-lite_ansi.lib" 
  CompilerEndIf

  egrid_AddColumn(id.l, column.l, text.s, width.l) As "_egrid_AddColumn@16"
  egrid_AddRows(id.l,row.l, numrows.l) As "_egrid_AddRows@12"
  egrid_AppendCells(id.l,column.l) As "_egrid_AppendCells@8"
  egrid_ClearRows(id.l) As "_egrid_ClearRows@4"
  egrid_CopyCells(id.l,column.l, row.l, xcols.l, yrows.l) As "_egrid_CopyCells@20"
  egrid_CreateGrid(id.l,x, y, width, height, rowheight, windowstyles, furtherstyles, hWndParent) As "_egrid_CreateGrid@36"
[...usw...]
  egrid_x(id.l) As "_egrid_x@4"
  egrid_y(id.l) As "_egrid_y@4"
EndImport


;******************************************************************************************
;'egrid' editable grid control. By Stephen Rodriguez.
;******************************************************************************************

Enumeration ;Egrid styles.
  #egrid_NoHeaderButtons=32768
  #egrid_HeaderDragDrop=268435456
  #egrid_AlwaysShowSelection = 8
EndEnumeration
Enumeration ;egrid extended styles.
  #egrid_ResizeColumnsFalse=0 ;Default.
  #egrid_ResizeColumnsTrue=1
  #egrid_StandardHeader=2 ;Default.
  #egrid_CustomHeader=4
  #egrid_SingleLineText=8 ;Default.
  #egrid_MultiLineText=16
  #egrid_VirtualGrid=32 ;Not used at present.
  #egrid_GridLines=64
EndEnumeration
Enumeration ;Options which can be set for an individual egrid.
  #egrid_HeaderBorderColour=1
  #egrid_SelectionBorderColour
  #egrid_SelectionBorderWidth
  #egrid_SelectedCellsColour
  #egrid_GridLineColour
  #egrid_EraseColour
EndEnumeration

"Never run a changing system!" | "Unterhalten sich zwei Alleinunterhalter... Paradox, oder?"
PB 6.12 x64, OS: Win 11 24H2 x64, Desktopscaling: 150%, CPU: I7 12700 H, RAM: 32 GB, GPU: Intel(R) Iris(R) Xe Graphics | NVIDIA GeForce RTX 3070
Useralter in 2025: 57 Jahre.
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

Beitrag von ts-soft »

Hab mir mal die lite geladen.
Du benötigst die egrid.pbi, die dll und lib, für das was du erstellt, also unicode
oder ansi im namen, oder alle

In der Hilfe findeste alle funktionen, genauso wie in der ImportSektion der
egrid.pbi.

Und ein demo ist auch bei. Mit Deiner Anwendung mußte nur die DLL ausliefern.

Damit solltest Du eigentlich klarkommen können :wink:

// Nachtrag wegen Überschneidung:
Der Importteil ist die deklaration, einfach die Funktionen nutzen, nachdem
Du die egrid.pbi mit XInclude eingebunden hast.
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
a14xerus
Beiträge: 1440
Registriert: 14.12.2005 15:51
Wohnort: Aachen

Beitrag von a14xerus »

@Kurzer
>Wie läuft das denn, wenn man eine PB-fremde Dll nutzen möchte?
>Da gibt es dann ja keinen Deklarationscode für PB?

Du kannst ja jede dll mit PB ansprechen.
Und bei jeder DLL sollte auch eine Übersicht der Funktionen und deren Parameter angegeben sein.
dann benutzt du einfach CallFunction(...) (sieh dir dazu auch das Kapitel in der PB Hilfe an)
Bei komplexeren DLLs muss du dann leider auch die Konstantendeklaration und die Strukturen selber schreiben.
Benutzeravatar
Kurzer
Beiträge: 1617
Registriert: 25.04.2006 17:29
Wohnort: Nähe Hamburg

Beitrag von Kurzer »

Danke Euch! So langsam schnagglts bei mir. :allright:

Habe mir jetzt noch mal die Hilfe zu Import und EndIport angesehen.
PB kommt einem da ja richtig entgegen (wobei ich allerdings keinen Vergleich zu anderen Sprachen habe was die Nutzung von Dlls angeht)
"Never run a changing system!" | "Unterhalten sich zwei Alleinunterhalter... Paradox, oder?"
PB 6.12 x64, OS: Win 11 24H2 x64, Desktopscaling: 150%, CPU: I7 12700 H, RAM: 32 GB, GPU: Intel(R) Iris(R) Xe Graphics | NVIDIA GeForce RTX 3070
Useralter in 2025: 57 Jahre.
a14xerus
Beiträge: 1440
Registriert: 14.12.2005 15:51
Wohnort: Aachen

Beitrag von a14xerus »

Ja solange einem die lib Datei zur Verfügung steht wird einem da schon ein bisschen was abgenommen.
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

Beitrag von ts-soft »

Import aus lib extrahieren geht auch hiermit:
http://www.purebasic.fr/english/viewtop ... b2pbimport
Dann haste Deine Import-Datei, nur noch ein bissel nacharbeiten.
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
Antworten