FRAGE: Arbeitsaufwand verwendung dll oder lib v(WIN) ?

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
mk-soft
Beiträge: 3875
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: FRAGE: Arbeitsaufwand verwendung dll oder lib v(WIN) ?

Beitrag von mk-soft »

Eine lib kann den Code beinhalten (Statik LIB) oder nur den verweis auf die Funktionen der DLL.
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
ChrigiGee
Beiträge: 133
Registriert: 18.07.2024 12:14
Computerausstattung: Lenovo ThinkPad i7, 32GB Ram, 1TB SSD
PB 6.11 LTS, proGUI, IceDesigner
Wohnort: Bern

Re: FRAGE: Arbeitsaufwand verwendung dll oder lib v(WIN) ?

Beitrag von ChrigiGee »

Hallo mk-soft,

dann mache ich wirklich einen Überlegung-Fehler, muss also die in der lib vorhanden obj extrahieren.

Daraus müsste es dann doch möglich sein, eine Liste der Funktionen zu erhalten
oder mache ich hier bereits wieder einen Gedankenfehler?

Nach einem Tag an Arbeit daran bin ich nun doch nicht mehr so Aufnahme fähig, wenn ich eher Falsch liege.
Auch natürlich da ich Euch nur gerade sehr wenig Code Präsentieren kann, wo ich über meine eigenen Füße falle.

Habe noch etwas gearbeitet am Source, aber ich bin noch nicht Fertig, höchstens eine kleine Erweiterung.

Herzlichen Dank und beste Wünsche für das Wochenende

Chris

Code: Alles auswählen

;- Top
; -----------------------------------------------------------------------------
;           Name:
;    Description:
;         Author:
;           Date: 2026-01-17
;        Version:
;     PB-Version:
;             OS:
;         Credit:
;          Forum:
;     Created by: csc
; -----------------------------------------------------------------------------

CompilerIf #PB_Compiler_IsMainFile
  EnableExplicit
CompilerEndIf

;- Global
Global Window_0
Global MainMenu
Global ToolBar
Global StatusBar

Global Combo_1, Cont_1, ListIcon_1

Global File$
Global dat$
Global zeile$

; Save TXT File from ListIconGadget
Global  LvInhaltSpeichern
Global pbnr
Global anzspalten
Global anzahlzeilen
Global j
Global k


#dnr2 = 1
#Gadget_1 = 0 
#maxspalten = 6

;- Lade Bilder
UsePNGImageDecoder()

;- Declare
Declare Event_Cont_1()
Declare Menu_Window_0()
Declare ToolBar_Window_0()
Declare StatusBar_Window_0()


  DataSection
    ToolBarIcon_New:  			: IncludeBinary #PB_Compiler_Home + "examples/sources/Data/ToolBar/New.png"
    ToolBarIcon_Open: 			: IncludeBinary #PB_Compiler_Home + "examples/sources/Data/ToolBar/Open.png"
    ToolBarIcon_Save: 			: IncludeBinary #PB_Compiler_Home + "examples/sources/Data/ToolBar/Save.png"
    ToolBarIcon_Properties: : IncludeBinary #PB_Compiler_Home + "examples/sources/Data/ToolBar/Properties.png"
    ToolBarIcon_Help1: 			: IncludeBinary #PB_Compiler_Home + "examples/sources/Data/ToolBar/Help.png"
    ToolBarIcon_Close: 			: IncludeBinary "icon\Icon 2\Log-Out-16x16x32.png"
  EndDataSection

  
Procedure StatusBar_Window_0()
  StatusBar = CreateStatusBar(#PB_Any, WindowID(Window_0))
  If StatusBar
    AddStatusBarField(120)
    AddStatusBarField(150)
    AddStatusBarField(#PB_Ignore)
    StatusBarText(StatusBar, 0, "Statusleiste")
    StatusBarText(StatusBar, 1, "Zentrum", #PB_StatusBar_BorderLess | #PB_StatusBar_Center)
    StatusBarText(StatusBar, 2, "Rechts", #PB_StatusBar_Right | #PB_StatusBar_Raised)
  EndIf
EndProcedure

Procedure LvInhaltSpeichern (dat$,pbnr,anzspalten)

  anzahlzeilen = CountGadgetItems(pbnr)
  If CreateFile(#dnr2, dat$)

      For j = 1 To anzahlzeilen
      
        zeile$ = ""
        For k = 0 To #maxspalten
          zeile$ + GetGadgetItemText(pbnr, j-1, k) + #LF$
        Next
        
        Debug zeile$
        WriteStringN(#dnr2,zeile$)      
      
      Next
      CloseFile(#dnr2)

  EndIf
EndProcedure


Procedure Menu_Window_0()
  MainMenu = CreateMenu(#PB_Any, WindowID(Window_0))
  If MainMenu
    MenuTitle("Datei")
    MenuItem(1, "Öffnen...")
    MenuItem(2, "Speichern")
    MenuBar()
    MenuItem(3, "&Beenden")
    MenuTitle("?")
    MenuItem(4, "Über")
  EndIf
EndProcedure


Procedure ToolBar_Window_0()
  Protected Image
  ToolBar = CreateToolBar(#PB_Any, WindowID(Window_0), #PB_ToolBar_Large | #PB_ToolBar_Text)
  If ToolBar
    Image = CatchImage(#PB_Any, ?ToolBarIcon_Open)
    ToolBarImageButton(1, ImageID(Image), #PB_ToolBar_Normal, "Öffnen...")
    FreeImage(Image)
    Image = CatchImage(#PB_Any, ?ToolBarIcon_Save)
    ToolBarImageButton(2, ImageID(Image), #PB_ToolBar_Normal, "Speichern")
    FreeImage(Image)
    ToolBarSeparator()
    
    Image = CatchImage(#PB_Any, ?ToolBarIcon_Close)
    ToolBarImageButton(3, ImageID(Image), #PB_ToolBar_Normal, "Beenden...")
    FreeImage(Image)
    ToolBarSeparator()
    
  EndIf
 EndProcedure
 
  Procedure Open_Window_0(X = 0, Y = 0, Width = 870, Height = 470)
  Window_0 = OpenWindow(#PB_Any, X, Y, Width, Height, "Title", #PB_Window_SystemMenu | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered)
  If Window_0

    Menu_Window_0()
    ToolBar_Window_0()
    StatusBar_Window_0()

    ListIcon_1 = ListIconGadget(#PB_Any, 0, 52, 870, 320, "Funktions Name", 120, #PB_ListIcon_CheckBoxes | #PB_ListIcon_ThreeState | #PB_ListIcon_GridLines | #PB_ListIcon_FullRowSelect | #PB_ListIcon_HeaderDragDrop)
      AddGadgetColumn(ListIcon_1, 1, "Parameter", 100)
      AddGadgetColumn(ListIcon_1, 2, "Variable", 100)
      AddGadgetColumn(ListIcon_1, 3, "Prozedur", 50)
      AddGadgetColumn(ListIcon_1, 4, "Komentare", 50)
      
      AddGadgetItem(ListIcon_1, -1, "ListIcon_1")
      
    Cont_1 = ContainerGadget(#PB_Any, 0, 372, 870, 50, #PB_Container_Raised)
      Combo_1 = ComboBoxGadget(#PB_Any, 0, 10, 170, 24)
        AddGadgetItem(Combo_1, -1, "STDCALL")
        AddGadgetItem(Combo_1, -1, "CDECL")
        AddGadgetItem(Combo_1, -1, "FASTCALL")        
        SetGadgetState(Combo_1, 0)
     CloseGadgetList()   ; Cont_1        
;    CloseGadgetList()   ; Cont_1

;    BindGadgetEvent(Cont_1, @Event_Cont_1())
    PostEvent(#PB_Event_SizeWindow, Window_0, 0)
    ProcedureReturn #True
  EndIf
EndProcedure


CompilerIf #PB_Compiler_IsMainFile
;- Hauptprogramm
If Open_Window_0()
 
  ;IceKeepEventLoop
  Repeat
    Select WaitWindowEvent()
      Case #PB_Event_CloseWindow
        Break

        ;-> Event Menu
      Case #PB_Event_Menu
        Select EventMenu()
        
          Case 1   ;Open
             File$ = OpenFileRequester("Library - Open", "Pure.lib", "Library (*.lib)|*.lib", 0)
             If File$+File$
              MessageRequester("Information", "Selected File: "+File$, 0);
              
              OpenLibrary(#PB_Any,"File$")
              IsLibrary(#PB_Any)
               ExamineLibraryFunctions(#PB_Any)
    				EndIf


    				
          Case 2   ;Save
             dat$ = SaveFileRequester("Library Function - Save", "Pure.txt", "Library Funktion (*.txt)|*.txt", 0)
             If dat$+dat$
              MessageRequester("Information", "Selected File: "+dat$, 0);
    				
LvInhaltSpeichern ("dat$", ListIcon_1, #maxspalten)
EndIf

    				
    				
    				
          Case 3   ;Quit
            Break
          Default
;            MessageRequester("Information", "ToolBar oder Menu ID : " + Str(EventMenu()) +#CRLF$+#CRLF$+ "Text : " + GetMenuItemText(MainMenu, EventMenu()), 0)
        EndSelect

        ;-> Event Gadget
      Case #PB_Event_Gadget
        Select EventGadget()
        EndSelect

    EndSelect
  ForEver
  ;EndIceKeepEventLoop
EndIf
CompilerEndIf
CloseLibrary(#PB_All)
Wer nicht fragt, der nichts lernt.
Wer keine Fehler macht, kann sich nicht verbessern.
Das Mysterium, ein wandelndes Lexikon. :mrgreen:

Wer Fragen zu meinem Textstil hat oder sich wundert über mich,
der darf seelenruhig mich direkt ansprechen. Ich beiße noch nicht.
Axolotl
Beiträge: 311
Registriert: 31.12.2008 16:34

Re: FRAGE: Arbeitsaufwand verwendung dll oder lib v(WIN) ?

Beitrag von Axolotl »

Moin,
ich kann dir leider nicht helfen, weil ich dein Problem / deine Fragen nicht verstehe....
Dafür habe ich mal kurz in deinen Code geschaut und dabei bin ich über einige 'Fehler' gestolpert.

Kopierte Beispielzeilen, die (glaube ich) so nicht funktionieren / oder eine sehr kreative Lösung darstellen...

Code: Alles auswählen

; .....
  File$ = OpenFileRequester("Library - Open", "Pure.lib", "Library (*.lib)|*.lib", 0)
  If File$+File$
; .....
  OpenLibrary(#PB_Any,"File$")
; .....
  IsLibrary(#PB_Any)
Using PureBasic latest stable version and current alpha/beta (x64) on Windows 11 Home
Benutzeravatar
H.Brill
Beiträge: 519
Registriert: 15.10.2004 17:42
Wohnort: 66557 Neunkirchen

Re: FRAGE: Arbeitsaufwand verwendung dll oder lib v(WIN) ?

Beitrag von H.Brill »

Gibt es da keine Info-Datei dazu, die die Funktionen beschreibt ?
Und auch die Namen der Funktionen nutzen ja nichts, wenn man die Parameter für die einzelnen
Funktionen nicht kennt.
PB 6.10
Antworten