Seite 1 von 1

Von DataObject vererben

Verfasst: Mi, 13. Jun 2018 11:57
von andreas
Hallo,

ich möchte gerne eine neue Klasse erstellen, die von DataObject erbt und zus. Methoden und Eigenschaften hat. Leider funktioniert es nicht und die Initialisierung des Objektes bringt das Programm zum Absturz.

Hier ein Beispiel:

Code: Alles auswählen

CLASS Test FROM DataObject

   EXPORTED:

      METHOD Init
      METHOD SetField

ENDCLASS

METHOD Test:Init()

   SUPER:Init()

RETURN SELF

METHOD Test:SetField()

RETURN
Geht das Überhaupt?

Re: Von DataObject vererben

Verfasst: Mi, 13. Jun 2018 11:59
von andreas
Hier noch die Fehlermeldung:
oError:args :
-> VALTYPE: O CLASS: Test
-> VALTYPE: N VALUE: 3
-> VALTYPE: N VALUE: 3
oError:canDefault : N
oError:canRetry : N
oError:canSubstitute: J
oError:cargo : NIL
oError:description : Interne Datenstrukturen besch„digt
oError:filename :
oError:genCode : 41
oError:operation : classDescribe
oError:osCode : 0
oError:severity : 2
oError:subCode : 5
oError:subSystem : BASE
oError:thread : 1
oError:tries : 0

Re: Von DataObject vererben

Verfasst: Mi, 13. Jun 2018 12:00
von Manfred
bekomme ich auch.
Da bin ich ja mal gespannt.....

Re: Von DataObject vererben

Verfasst: Mi, 13. Jun 2018 13:06
von Tom
Das widerspricht nach meinem Gefühl dem Konzept der DataObjects. Sie sind dynamisch, auch zur Laufzeit, weshalb Vererbung nur wenig Sinn hat.

Re: Von DataObject vererben

Verfasst: Mi, 13. Jun 2018 13:17
von Werner_Bayern
Servus,

ich meine irgendwo gelesen zu haben, dass das generell nicht geht, Klassen können nicht von DataObjects erben.

Re: Von DataObject vererben

Verfasst: Mi, 13. Jun 2018 13:31
von andreas
Das ist schade!

Also bleibt nichts über, als eine Funktion zu schreiben, die einen DataObject mit zus. Methoden (DefineMethod über Funktionen) erzeugt und zurück gibt!

Re: Von DataObject vererben

Verfasst: Mi, 13. Jun 2018 13:52
von Jan
Man muß bei DataObjects auch immer im Hinterkopf behalten, die wie Arrays per Referenz arbeiten. Könnte das eventuell zu dem Klassen-Problem führen? Sorry für die vielleicht blöde Frage, aber Ihr wisst ja: Ich und Klassen, zwei Welten prallen aufeinander.

Jan

Re: Von DataObject vererben

Verfasst: Mi, 13. Jun 2018 14:02
von brandelh
Oder man schreibt sich eine Klasse, die intern ein DataObject erzeugt und dieses benutzt und auch zurückgeben kann.

Re: Von DataObject vererben

Verfasst: Mi, 13. Jun 2018 14:47
von Tom
DataObjects sind dynamisch und verändern ihre Struktur (Methoden und Instanzen) zur Laufzeit. Das ist ihre primäre Eigenschaft.

Mit oDataObject:Copy() erzeugt man eine Kopie des jeweiligen Objekts, leitet also quasi direkt ab. Diese Kopie kann man dann wieder zur Laufzeit ergänzen.