Interface - Fragen

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Bisonte
Beiträge: 2427
Registriert: 01.04.2007 20:18

Re: Interface - Fragen

Beitrag von Bisonte »

Ok ... Als Lesezeichen schonmal notiert... Ich sehe... Ich sehe.... Ich sehe.... viel Zeit vergehen im Googlen von Ausdrücken wie Polymorphie ;)
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​​
Benutzeravatar
mk-soft
Beiträge: 3695
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: Interface - Fragen

Beitrag von mk-soft »

Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
GPI
Beiträge: 1511
Registriert: 29.08.2004 13:18
Kontaktdaten:

Re: Interface - Fragen

Beitrag von GPI »

mk-soft hat geschrieben:So fing ich mal an...
Link: http://www.purebasic.fr/german/viewtopic.php?f=8&t=7456
Die gute alte Zeit :) - Gabs damals schon Macros? Die haben eigentlich der ganzen OOP-Sache in PB imo etwas Schwung verliehen.

@bisonte
Der Text von TroaX dürfte - gerade auf hinblick auf PB - schon etwas Hardcore sein. Zumal viele Sachen in PB nicht unterstützt werden. Es gibt keine public/privat Sachen - alles ist Public wenn man so will (ok, die Member/Properties privat). Irgendwelche Operatoren kann man auch nicht überladen, Mehrfachvererbungen gehen auch nicht und so weiter und so fort. Wobei die Frage ist, ob sowas wirklich OOP ausmacht? Private Methoden kann man einfach mit einen Unterstrich markieren. Wer die dann außerhalb der Klasse benutzt, ist selbst Schuld.

Da du das ganze in PB ja manuell machst, siehst du zumindest sehr schön, was Technisch ein Objekt und Klasse tatsächlich ist. Böse ausgedrückt ist es eine Sammlung von Functionen, wo der erste Parameter immer das Objekt ist. Manche machen da ja Regelrechte Glaubenskriege draus, für mich ist das eher ein Werkzeug von vielen. Mal macht die klassische Programmierung mehr sinn, mal sehe ich OOP in Vorteil. Es kommt immer drauf an.
Wenn man sich bspw. eine Klasse für Dateizugriffe schreibst, dann hast du quasi immer eine Automatische Korrektur, ob du die richtigen Befehle benutzt. Bei der klassischen Programmierung kann man bspw. eine GadgetID versehentlich an eine Datei-Befehl als FileID weitergeben. Das ist bei OOP nicht mehr möglich. Zudem kann die IDE bei OOP die Methoden vorschlagen, praktisch, wenn man jetzt nicht mehr weis, ob es StringByteLength oder ByteLengthString heißt...

Wie schon mehrmals gesagt: Ich finds schade, das Fred keine gescheite Klassendefinition einbaut. Die Einzelteile sind ja vorhanden. Es fehlt nur der letzte Schritt und es wäre sauber implantiert.
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
Benutzeravatar
Bisonte
Beiträge: 2427
Registriert: 01.04.2007 20:18

Re: Interface - Fragen

Beitrag von Bisonte »

@mk: genau mit diesem Post hab ich angefangen zu experimentieren :allright:

Also das das nicht immer Sinn macht, ist klar. Aber gerade weil man nach dem eingeben des Pointers in der Autovervollständigung
der IDE sieht, was jetzt möglich ist, finde ich das etwas "flexibler" für Teamarbeiten. Wo der eine so ein Interface baut, der andere
gar nichts drüber wissen muss und diese Möglichkeiten gleich sieht.

Wie oft haperte es an so kleinen Dingen weil einem der Befehl nicht einfiel....
Besonders bei CustomGadgets oder ... womit ich experimentiert habe, für ein SQLite "Interface" ist das sehr praktisch. Deshalb
wollte ich das mal etwas vertiefen... Damit ich auch den letzten bei uns hier zu PB überredet kriege :D

Edit:
Und man muss ja nicht gleich ne Fremdwörterschlacht losreissen...
Solange ich weiss was da wo passiert und warum, sind mir die genauen
Bezeichnungen eigentlich schnuppe... die kommen schon noch ;)
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​​
Benutzeravatar
_JON_
Beiträge: 389
Registriert: 30.03.2010 15:24

Re: Interface - Fragen

Beitrag von _JON_ »

mk-soft hat geschrieben:Die BaseClass ist ein wenig gewachsen...
- Kompatible zu IUnknown
- Threadsafe
- Methodennamen für späte Bindung (IDispatch)
- Kapsel alles in Procedure weil sonst bei Modulen der Code als DLL abstürzt
- etc
Gibt es da irgendein Problem oder Bug mit Modulen in DLLs?
PureBasic 5.46 LTS (Windows x86/x64) | windows 10 x64 Oktober failure
GPI
Beiträge: 1511
Registriert: 29.08.2004 13:18
Kontaktdaten:

Re: Interface - Fragen

Beitrag von GPI »

Laut https://www.purebasic.com/german/docume ... e/dll.html
- Die Deklaration von Arrays, Listen bzw. Maps mittels Dim, NewList bzw. NewMap muss stets innerhalb der Prozedur AttachProcess erfolgen.
- Schreiben Sie keinen Programmcode außerhalb von Prozeduren. Als Ausnahmen erlaubt sind lediglich Variablen- oder Strukturen-Deklarationen.
- DirectX Initialisierungsroutinen dürfen nicht innerhalb der AttachProcess Prozedur geschrieben werden.
leider gibt der Compiler da keine Fehlermeldung aus, sondern die DLL schmiert einfach ab.
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
Benutzeravatar
mk-soft
Beiträge: 3695
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: Interface - Fragen

Beitrag von mk-soft »

Die Procedure InitModule() wir vor den Aufruf der Procedure AttachProcess(Instanse) bei Dll´s aufgerufen.
Funktioniert sicher.

Code: Alles auswählen

DeclareModule MyModule
  ;TODO
EndDeclareModule

Module MyModule
  
  Procedure InitModule()
    Debug "Init My Module!"
    ;TODO
  EndProcedure : InitModule()
  
EndModule
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
GPI
Beiträge: 1511
Registriert: 29.08.2004 13:18
Kontaktdaten:

Re: Interface - Fragen

Beitrag von GPI »

Öh, wo ist das denn beschrieben oO
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
Benutzeravatar
mk-soft
Beiträge: 3695
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: Interface - Fragen

Beitrag von mk-soft »

Steht nirgendwo...

Ist aber so seit es Module gibt.

P.S. Genauer gesagt wird alles in der internen Funktion PB_DllInit aufgerufen.
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
GPI
Beiträge: 1511
Registriert: 29.08.2004 13:18
Kontaktdaten:

Re: Interface - Fragen

Beitrag von GPI »

Sollte man vielleicht Fred drauf hinweisen, dass das Dokumentiert gehört.
Die Procedure wird übrigens auch ohne DLL-Erzeugung immer aufgerufen.
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
Antworten