Seite 4 von 6
Verfasst: 26.05.2009 18:58
von Kaeru Gaman
lass mich mal wild raten:
du hast eine Proc declared, die du nirgens tatsächlich "erzeugst"
Verfasst: 26.05.2009 19:00
von ts-soft
Ich würde sagen der Rückgabe Type der Procedure und Declaration
unterscheiden sich.
Verfasst: 26.05.2009 19:14
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.
Verfasst: 26.05.2009 19:39
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.
Verfasst: 26.05.2009 19:50
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.
Verfasst: 26.05.2009 19:53
von ts-soft
Hab ich also doch recht gehabt

Verfasst: 26.05.2009 19:54
von X0r
>Hab ich also doch recht gehabt Mr. Green
Jo.
War aber nicht mein Fehler, sonst hätt ich den sofort gefunden.

Verfasst: 26.05.2009 21:07
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.
Verfasst: 26.05.2009 21:37
von X0r
Und an solchen Tagen träumt man wieder vom OOP-Support in PB.
Verfasst: 26.05.2009 21:44
von ts-soft
Schick dem Inc eine PN und dann sollte er das ja innerhalb kürzester Zeit
beheben können.