Interface - Fragen

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

Re: Interface - Fragen

Beitrag von mk-soft »

Die Verwendung von Modulen in Dll´s sind nicht gestattet, da..
- Die Deklaration von Arrays, Listen bzw. Maps mittels Dim, NewList bzw. NewMap muss stets innerhalb der Prozedur AttachProcess erfolgen.

Code: Alles auswählen

DeclareModule MyModule
  Global name.s
  
  Global NewList Teste.s()
  Global Dim Daten.i(1000)
  
EndDeclareModule

Module MyModule
  
  Global NewList iData.i()
...  
Versuche mal eine offizielle Antwort zu kommen.
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
Josh
Beiträge: 1028
Registriert: 04.08.2009 17:24

Re: Interface - Fragen

Beitrag von Josh »

GPI hat geschrieben:Was nicht dokumentiert ist, das PB die Befehle bei einer DLL außerhalb von Proceduren sammelt und dann in die ProcessAttach() packt. Also da wo es eigentlich hin gehört.
Hab ich da was verpasst? Glaube nicht, dass PB das in die AttachProcess() packt. Code außerhalb von Prozeduren wird einfach beim Laden der DLL ausgeführt. Genau das ist nach meiner Meinung das Problem, weil dem Hauptprogramm die Kontrolle weggenommen wird, wann Programmcode ausgeführt werden soll.

AttachProcess() & Co. ist ja keine Erfindung von PB, das sind Windows-Restriktionen, auch wenn sie in den APIs oder anderen Programmiersprachen anders heißen.
Benutzeravatar
mk-soft
Beiträge: 3695
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: Interface - Fragen

Beitrag von mk-soft »

Da rauf achtet schon der Compiler von Purebasic.

Es kommt für die DLL ein Process Attach. Dieser wird von der Compilercode ausgewertet ruft die Procedure PB_DllInit() auf und danach wenn vorhanden die Procedure AttachProcess(). Alles was der Compiler ausserhalb von Prozeduren findet, wird in die Funktion PB_DllInit() verfrachtet.

Mal schauen was im englischen Forum von der offiziellen Seite kommt.

P.S.
Somit ist der Aufruf vom Module 'Global NewList xyz()' auch in der Procedure PB_DllInit().
Das aber widerspricht die Regel das diese nur in der Procedure AttachProcess() erfolgen darf.
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Antworten