PureObject - PureBasic OOP Unterstützung

Anwendungen, Tools, Userlibs und anderes nützliches.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

lass mich mal wild raten:
du hast eine Proc declared, die du nirgens tatsächlich "erzeugst"
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
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 »

Ich würde sagen der Rückgabe Type der Procedure und Declaration
unterscheiden sich.
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
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

>> (die letzte leere Zeile...)

deswegen sage ich, die Procedure ist nicht vorhanden, sonst müßte ihm die Fehlermeldung ja die Zeile der Procedure rausrücken.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
X0r
Beiträge: 2770
Registriert: 15.03.2007 21:47
Kontaktdaten:

Beitrag von X0r »

>deswegen sage ich, die Procedure ist nicht vorhanden, sonst müßte ihm die Fehlermeldung ja die Zeile der Procedure rausrücken.

Mit PB 4.1 läuft alles glatt. Deklarieren tu ich die Prozeduren bzw. Methoden ja lediglich in den Klassen. Wenn es da ein Problem geben würde, müsste PureObject nen Error melden. Leider es aber nicht, sondern PB.

Edit:
Selbst dieser code hier verursacht den selbigen Fehler:

Code: Alles auswählen

Class TEST
TEST()

EndClass

Procedure TEST.TEST()

EndProcedure
Scheint ein bug von PureObject zu sein.
Benutzeravatar
X0r
Beiträge: 2770
Registriert: 15.03.2007 21:47
Kontaktdaten:

Beitrag von X0r »

Und da hab ich den Fehler schon gefunden.
Ausgabe von PureObject:

Code: Alles auswählen

Interface TEST
  TEST()
  
  Release() : EndInterface : Structure sTEST : *vt : EndStructure : Declare.l ConstructTEST() : Declare.l TEST_Release(*this): Global _VT_TEST

Procedure TEST_TEST(*this.sTEST ) : Protected *thisM.TEST = *this
  
EndProcedure

; ------------------------------- OOP Constructors, etc. -------------------------------

Procedure ConstructTEST()
  Protected *this.sTEST = AllocateMemory(SizeOf(sTEST))
  Protected *thisM.TEST = *this
  If Not *this : ProcedureReturn #False : EndIf
  If Not _VT_TEST And SizeOf(TEST)
    _VT_TEST = AllocateMemory(SizeOf(TEST)) ; Global virtual table
    CompilerIf Defined(TEST_TEST, #PB_Procedure)
      PokeL(_VT_TEST + OffsetOf(TEST\TEST()), @TEST_TEST())
    CompilerEndIf
    CompilerIf Defined(TEST_Release, #PB_Procedure)
      PokeL(_VT_TEST + OffsetOf(TEST\Release()), @TEST_Release())
    CompilerEndIf
  EndIf
  *this\vt = _VT_TEST
  CompilerIf Defined(TEST_TEST, #PB_Procedure) = #True
    TEST_TEST(*this)
  CompilerEndIf
  ProcedureReturn *this
EndProcedure


Procedure TEST_Release(*this)
EndProcedure 

Man schaue sich diesen Abschnitt an:

Code: Alles auswählen

Release() : EndInterface : Structure sTEST : *vt : EndStructure : Declare.l ConstructTEST() : Declare.l TEST_Release(*this): Global _VT_TEST
Die Funktionen sind als long deklariert. Allerdings geben sie nen int Wert zurück.

Könntest du das bitte so schnell wie möglich fixen? Sonst muss ich leider umsteigen.
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 ich also doch recht gehabt :mrgreen:
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
X0r
Beiträge: 2770
Registriert: 15.03.2007 21:47
Kontaktdaten:

Beitrag von X0r »

>Hab ich also doch recht gehabt Mr. Green

Jo.
War aber nicht mein Fehler, sonst hätt ich den sofort gefunden. :mrgreen:
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

> Mit PB 4.1 läuft alles glatt.

tja, es wird eben erst neuerdings geprüft, ob Declare und tatsächliche Proc übereinstimmen.

wundert mich halt nur, dass du keine saubere Zeilenangabe bekommst,
aber das hängt womöglich mit dem Preparser zusammen.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
X0r
Beiträge: 2770
Registriert: 15.03.2007 21:47
Kontaktdaten:

Beitrag von X0r »

Und an solchen Tagen träumt man wieder vom OOP-Support in PB.
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 »

Schick dem Inc eine PN und dann sollte er das ja innerhalb kürzester Zeit
beheben können.
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