Klassen, Objekte, Methoden, Instanzen
Moderator: Moderatoren
andreas
Der Entwickler von "Deep Thought"
Beiträge: 1902 Registriert: Mi, 28. Sep 2005 10:53
Wohnort: Osnabrück
Hat sich bedankt: 4 Mal
Kontaktdaten:
Beitrag
von andreas » Mi, 13. Jun 2018 11:57
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?
andreas
Der Entwickler von "Deep Thought"
Beiträge: 1902 Registriert: Mi, 28. Sep 2005 10:53
Wohnort: Osnabrück
Hat sich bedankt: 4 Mal
Kontaktdaten:
Beitrag
von andreas » Mi, 13. Jun 2018 11:59
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
Manfred
Foren-Administrator
Beiträge: 21224 Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal
Beitrag
von Manfred » Mi, 13. Jun 2018 12:00
bekomme ich auch.
Da bin ich ja mal gespannt.....
Tom
Der Entwickler von "Deep Thought"
Beiträge: 9394 Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 104 Mal
Danksagung erhalten: 364 Mal
Kontaktdaten:
Beitrag
von Tom » Mi, 13. Jun 2018 13:06
Das widerspricht nach meinem Gefühl dem Konzept der DataObjects. Sie sind dynamisch, auch zur Laufzeit, weshalb Vererbung nur wenig Sinn hat.
Herzlich,
Tom
Werner_Bayern
Der Entwickler von "Deep Thought"
Beiträge: 2128 Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 30 Mal
Danksagung erhalten: 75 Mal
Beitrag
von Werner_Bayern » Mi, 13. Jun 2018 13:17
Servus,
ich meine irgendwo gelesen zu haben, dass das generell nicht geht, Klassen können nicht von DataObjects erben.
es grüßt
Werner
<when the music is over, turn off the lights!>
andreas
Der Entwickler von "Deep Thought"
Beiträge: 1902 Registriert: Mi, 28. Sep 2005 10:53
Wohnort: Osnabrück
Hat sich bedankt: 4 Mal
Kontaktdaten:
Beitrag
von andreas » Mi, 13. Jun 2018 13:31
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!
Jan
Marvin
Beiträge: 14662 Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:
Beitrag
von Jan » Mi, 13. Jun 2018 13:52
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
brandelh
Foren-Moderator
Beiträge: 15706 Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 70 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:
Beitrag
von brandelh » Mi, 13. Jun 2018 14:02
Oder man schreibt sich eine Klasse, die intern ein DataObject erzeugt und dieses benutzt und auch zurückgeben kann.
Gruß
Hubert
Tom
Der Entwickler von "Deep Thought"
Beiträge: 9394 Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 104 Mal
Danksagung erhalten: 364 Mal
Kontaktdaten:
Beitrag
von Tom » Mi, 13. Jun 2018 14:47
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.
Herzlich,
Tom