Linked List inklusive Struktur an Modul übergeben ?

Anfängerfragen zum Programmieren mit PureBasic.
Micha122
Beiträge: 248
Registriert: 02.10.2011 14:45
Wohnort: Sinzig
Kontaktdaten:

Linked List inklusive Struktur an Modul übergeben ?

Beitrag von Micha122 »

Hallo Leute,
verzweifle gerade etwas. :cry:
Wie es der Titel schon aussagt, ich möchte eine Linked List (NewList) + Struktur an eine Prozedur eines Moduls übergeben.

Okay, die Struktur muss dem Modul bekannt sein, soweit bin ich schon mal gekommen.
Aber wie weiter?
Ein kurzer Beispielcode währe klasse. :praise:

Grüße
Barcodes for PureBasic - http://micha122.bplaced.net/
Benutzeravatar
mk-soft
Beiträge: 3695
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: Linked List inklusive Struktur an Modul übergeben ?

Beitrag von mk-soft »

Der Trick besteht darin ein gemeinsame Modul (Common) zu erstellen und darin die Strukturen anzulegen
und im Main-Programm oder in den Modul mit 'UseModule Common' bekannt zu geben.
Dazu gehören auch Konstanten und Variablen die du Global in allen Modulen verwenden möchtest.

Code: Alles auswählen

;-TOP

; -------------------------------------------------------------------

DeclareModule Common
  
  Structure udtMyData
    index.i
    text.s
  EndStructure
  
EndDeclareModule

Module Common
  ; Nothing
EndModule

; -------------------------------------------------------------------

DeclareModule MyModul
  
  UseModule Common
  
  Declare MyShowData(List MyData.udtMyData())
  
EndDeclareModule

Module MyModul
  
  UseModule Common
  
  Procedure InitModule()
    ; Hier alles rein packen was bein starten von Programm im Module verledigt werden soll
  EndProcedure : InitModule()
  
  Procedure MyShowData(List MyData.udtMyData())
    With MyData()
      ForEach MyData()
        Debug "" + \index + ": " + \text
      Next
    EndWith
  EndProcedure
  
EndModule

; -------------------------------------------------------------------

;-Text

UseModule Common

Global NewList MyData.udtMyData()

AddElement(MyData())
MyData()\index = 1
MyData()\text = "Hallo"

AddElement(MyData())
MyData()\index = 2
MyData()\text = "Welt"

MyModul::MyShowData(MyData())
Zuletzt geändert von mk-soft am 11.02.2018 19:24, insgesamt 3-mal geändert.
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
Bisonte
Beiträge: 2427
Registriert: 01.04.2007 20:18

Re: Linked List inklusive Struktur an Modul übergeben ?

Beitrag von Bisonte »

oder so wie ohne modul :

Code: Alles auswählen

DeclareModule mymod
  
  Structure s_struct
    Text.s
    Wert.i
  EndStructure
  
  Declare AddList(List MyList.s_struct(), Text.s, Wert)
  
EndDeclareModule
Module mymod
  
  Procedure AddList(List MyList.s_struct(), Text.s, Wert)
    AddElement(MyList())
    MyList()\Text = Text
    MyList()\Wert = Wert
  EndProcedure
  
EndModule


UseModule mymod

NewList Cool.s_struct()

AddList(Cool(), "Hey", 1)
AddList(Cool(), "huhu", 21)

ForEach Cool()
  Debug Cool()\Text
Next
edit: ein paar sekunden zu spät ;)
PureBasic 6.04 LTS (Windows x86/x64) | Windows10 Pro x64 | Asus TUF X570 Gaming Plus | R9 5900X | 64GB RAM | GeForce RTX 3080 TI iChill X4 | HAF XF Evo | build by vannicom​​
Micha122
Beiträge: 248
Registriert: 02.10.2011 14:45
Wohnort: Sinzig
Kontaktdaten:

Re: Linked List inklusive Struktur an Modul übergeben ?

Beitrag von Micha122 »

Danke @mk-soft. :allright:
Genau das habe ich gesucht! :D
Ganz nebenbei hat dieses "Common-Modul" den Vorteil, das Strukturen nur einmal definiert werden müssen und von weiteren Modulen genutzt werden können.

Danke @Bisonte. :allright:
Dein Vorgehen ist etwas anders, aber auch dafür habe ich Verwendung. :D
Es fehlt allerdings ein Debug- Befehl in deinem Code:

Code: Alles auswählen

ForEach Cool()
  Debug Cool()\Text
  Debug Cool()\Wert
Next
Vielen Dank :allright:
Barcodes for PureBasic - http://micha122.bplaced.net/
Antworten