einmalige Variable in Superklasse [ERLEDIGT]

Klassen, Objekte, Methoden, Instanzen

Moderator: Moderatoren

Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

einmalige Variable in Superklasse [ERLEDIGT]

Beitrag von Manfred »

Hi,

mir fällt kein besserer Titel ein.

Ich komme nicht weiter, weil ich mich sicherlich wieder zu sehr verbissen habe in das Problem.

Ich habe meine "berühmte" Datenbankklasse, von der jedes Objekt erbt, wie eine Datenbank zu behandeln ist (kurzgefasst)

Jetzt ist es ja eine feine Sache, jedes erzeugte Objekt in ein Array zu schreiben, um dann über Aeval das Array zu durchlaufen und z.B. dann alle Objekte dazu zu bewegen, ihre Db zu öffnen, oder zu schließen.

So, bis hierher ist alles kein Problem. Jetzt habe ich mir Gedanken darüber gemacht, dass es ja wesentlich einfacher sein könnte innerhalb der Superklasse, beim Öffnen einer DB auch direkt das entsprechende Objekt in ein Array zu schreiben, damit ich es nicht jedesmal im Standardquelltext machen muß.

Leider kriege ich es jetzt nicht auf die Reihe, eine Var als Array in der Superklasse zu erzeugen, die nur 1x deklariert wird, wenn die Superklasse das 1. Mal aufgerufen wird um dann bei jedem DB Öffnen das jeweilige Objekt in das Array zu schreiben.

Das müßte doch irgendwie gehen?

Ich habe immer nur eine Var vom Array, für jedes Objekt, dass ich bilde und in dem steht nur das jeweilige Objekt. Ich brauche aber alle Objekte um sie an zentraler Stelle 1x aufzurufen, wenn es erforderlich ist.

Wo liegt mein Knick in der Hirnwindung?

Ach so, mit CLASS VAR und CLASS METHOD initclass habe ich es ausprobiert, aber es klappt nicht.
Zuletzt geändert von Manfred am Fr, 12. Mär 2010 17:24, insgesamt 1-mal geändert.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16508
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Moin Manfred,
ich weiß nicht, ob ich Dich mal wieder nicht verstehe...
Aber mit CLASS VAR muß es klappen - zumindest hast Du dann eine Variable (z.B. Dein Array), das in allen Subklassen identische Werte enthält!

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Beitrag von Manfred »

Hi Martin,

hatte ich ja auch so gedacht. Aber irgendwie ist dem nicht so. Ich finde aber meinen Denkfehler nicht.

Hier ein paar Zeilen, vielleicht siehst DU ja schon was?

Code: Alles auswählen

CLASS datenbank
           CLASS VAR aDb
           CLASS METHOD initclass
ENDCLASS
********************
METHOD CLASS datenbank:initclass()
             ::aDb := {}
RETURN self

CLASS test FROM datenbank
ENDCLASS

CLASS test2 FROM datenbank
ENDCLASS

objekt1 := test():new()
objekt2 := test():new()

objekt3 := test2():new()
bei der Instanziierung von objekt1 und objekt2, ist das der Fall. Es wird nur einmal die initclass aufgerufen.

Wenn ich dann aadd(::adb, self) mach in der datenbankklasse, dann sind beide drin. (natürlich als {Test,test})

Wenn ich nun aber objekt3 erzeuge, dann wird aDb wieder initialisiert und somit geleert und danach steht dann über Aadd() nur das Objekt3 drin und nicht 1+2+3
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16508
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Jaha! Kein Wunder, objekt1 und objekt2 sind Subklassen von Test und objekt3 ist eine Subklasse von Test2.
Somit kennen objekt1 und objekt2 eine gemeinsame Variable und objekt3 eine andere.
Würden alle drei Objekte von datenbank direkt abstammen (oder von test bzw. test2), dann würden alle auf einer Variablen arbeiten.
Da ist eine Hierarchieebene "zu viel" drin - würde ich jetzt mal sagen...
Was passiert denn, wenn Du test2 von test ableitest?

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Beitrag von Manfred »

Hi Martin,

dass hatte ich mir auch schon gedacht. Aber es muß doch irgendeine Möglichkeit geben, mein Vorhaben zu realisieren. Naja, ich kann das Array in eine Systemklasse platzieren, die in jedem Programm vorhanden ist. Ich dachte halt nur, dass die DAtenbankklasse es ja eigentlich wissen müßte und somit dafür geeignet wäre. Gibt es da einen anderen Trick?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16508
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Hallo Manfred,
wie gesagt - lass' Deine Klasse test2 nicht von datenbank erben, sondern von test.

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Beitrag von Manfred »

Hi Martin,

ich sage mal so ganz locker: Das geht nicht. Ich bekomme sonst alle Werte, die test hat auch in test2. Und das kann ich nicht gebrauchen.

Außerdem sind es viele Klassen. Und nicht alle werden immer benötigt. somit müßte schon ganz zu Anfang feststehen, welche immer benötigt wird und das ist sehr umständlich.

Ich wollte auch nur wissen, ob ich irgendwas falsch gemacht habe. Ich werde die Systemklasse nehmen und das Array da rein bauen.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16508
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Hallo Manfred,
'türlich geht das! Du setzt die Werte doch jetzt auch in test und in test2!
Test2 hat erst mal die Werte von test - aber die kannst Du doch anpassen!

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Beitrag von Manfred »

Hm,

ich denke ich weiß was Du meinst. Ich lasse eine Klasse von Datenbank erben und dann alle anderen von der einen Klasse, die von Datenbank geerbt hat. Jedesmal wenn ich eine Klasse erzeuge, dann überschreibe ich auch die Werte, die in der "Hauptklasse" stehen, die von Datenbank erbt. Somit wäre es dann so, als wenn jede Klasse getrennt von Datenbank erbt.

Habe ich das so richtig verstanden? Also wäre das dann die Mehrfachvererbung....

Das hieße dann aber auch, ich bräuchte Werte, die in jeder Klasse neu gesetzt werden und die auch noch innerhalb jeder Klasse gleich sind auch nur 1x in der "Hauptklasse" zu setzen.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16508
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Hallo Manfred,
Manfred hat geschrieben:Habe ich das so richtig verstanden?
Ja!
Manfred hat geschrieben:Also wäre das dann die Mehrfachvererbung....
Nein! Mehrfachvererbung ist, wenn eine Klasse von zwei (oder noch mehr Klassen) erbt...
Manfred hat geschrieben:Das hieße dann aber auch, ich bräuchte Werte, die in jeder Klasse neu gesetzt werden und die auch noch innerhalb jeder Klasse gleich sind auch nur 1x in der "Hauptklasse" zu setzen.
Ja.

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Beitrag von Manfred »

Hi,

also Mehrfachvererbung wäre nicht:

Code: Alles auswählen

class test from haupt
endclass

class test from test
endclass
sondern

Code: Alles auswählen

class test
endclass

class test2 from test, haupt
endclass
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
stevie
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 417
Registriert: Mo, 17. Sep 2007 18:20
Wohnort: Senftenberg
Kontaktdaten:

Beitrag von stevie »

Manfred hat geschrieben:Hi Martin,

dass hatte ich mir auch schon gedacht. Aber es muß doch irgendeine Möglichkeit geben, mein Vorhaben zu realisieren. Naja, ich kann das Array in eine Systemklasse platzieren, die in jedem Programm vorhanden ist. Ich dachte halt nur, dass die DAtenbankklasse es ja eigentlich wissen müßte und somit dafür geeignet wäre. Gibt es da einen anderen Trick?
Bau dir doch eine Klasse, in der du bei Init alle Klassenstrukturen des Programms übergibst und als Datenbankserver öffnest. Alle Server werden in ::aDb gespeichert. noch eine Methode, die dir das Serverobject zurückgibt . Die Klasse legst du global ab und dann läuft die Sache ohne 150 Unterklassen.
Viele Grüße
Stevie
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Beitrag von Manfred »

Hi,

ist wohl noch etwas früh am Tag. Ich verstehe zwar was Du meinst, aber nicht wie es gemacht werden sollte.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
stevie
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 417
Registriert: Mo, 17. Sep 2007 18:20
Wohnort: Senftenberg
Kontaktdaten:

Beitrag von stevie »

Manfred hat geschrieben:Hi,

ist wohl noch etwas früh am Tag. Ich verstehe zwar was Du meinst, aber nicht wie es gemacht werden sollte.
Na gut, so geht das unter Xclass.
Aber bei Xbase hatten wir das so, dass wir alles nötige (Name,Index und sowas) an die Klasse übergeben haben (ein Array mit allen Datenbanken) und dann in unserer open_db sämtliche angegebenen geöffnet. Aber ich denk mal, wenn man das ein wenig anpasst, sollte das auch gehen.
Viele Grüße
Stevie
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Beitrag von Manfred »

Im MOment regel ich das so, dass ich eine DAtenbankklasse habe, die weiß wie man öffnet, schließt, Felder einliest/speichert usw.

Dann gibt es für jede unterschiedliche DB eine Extraklasse, in der dann die Dateistruktur, die Indexstruktur usw. steht. Ich wüßte jetzt nicht wie das zu vereinfachen ginge, ohne den Überblock zu verlieren. Zumal es m.E. den Vorteil bringt, die DAtenbankklasse bleobt für alle gleich, aber von projekt zu Projekt müssen nur die EInzelnen DB Klassen getauscht werden.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
hschmidt
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 164
Registriert: Mo, 09. Jan 2006 17:06
Wohnort: Paderborn
Hat sich bedankt: 2 Mal
Kontaktdaten:

Beitrag von hschmidt »

Hallo Manfred,

ich habe zwar noch nie mit classvars und initclass() gearbeitet, hab' mir das aber mal in der Doku angesehen:
Hinweis: ist :initClass() in einer Subklasse nicht deklariert, so wird implizit die :initClass() Methode der Superklasse ausgeführt, sobald das Klassenobjekt der Subklasse erzeugt ist. Falls :initClass() deklariert und implementiert ist, muß darin die :initClass() Methode der Superklasse aufgerufen werden.
Wenn ich das richtig verstehe, wird also die initClass-Methode der Superklasse aufgerufen, wenn ein Objekt der Subklasse das erste mal neu erzeugt wird. Das bedeutet, dass in Deinem Beispiel das ::aDB - Array beim test2():nwew() in datenbank:initclass() wieder leer gemacht wird.
Ich würde mal folgendes versuchen:

Code: Alles auswählen

METHOD CLASS datenbank:initclass() 
    IF ::aDb == NIL
             ::aDb := {} 
    ENDIF
RETURN self 
Hans
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Hallo Manfred,

wenn ich dich bisher richtig verstanden habe, hast du eine DBF Basisklasse von der du Instanzen erzeugst, die jeweils eine offene DBF representieren. Somit müsste doch aDB für jede DBF einmalig in jeder INSTANZ sein oder ?

Wenn du aber eine CLASS VAR nutzt, hast du ein aDB für alle Instanzen deiner Klasse - und wie im obigen Beispiel auch noch Nebenwirkungen :wink:

Willst du wirklich genau ein aDB mit immer gleichem Inhalt für alle Instanzen (DBFs) deiner Klasse haben ?
Gruß
Hubert
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Beitrag von Manfred »

Hi,
brandelh hat geschrieben:Hallo Manfred,

wenn ich dich bisher richtig verstanden habe, hast du eine DBF Basisklasse von der du Instanzen erzeugst, die jeweils eine offene DBF representieren. Somit müsste doch aDB für jede DBF einmalig in jeder INSTANZ sein oder ?
Ja, so sieht es aus.
Wenn du aber eine CLASS VAR nutzt, hast du ein aDB für alle Instanzen deiner Klasse - und wie im obigen Beispiel auch noch Nebenwirkungen :wink:
Ja, so ist es, aber das will ich auch noch nicht haben. Wobei ich jetzt die Aussage: Nebenwirkung nicht ganz einsortieren kann.
Willst du wirklich genau ein aDB mit immer gleichem Inhalt für alle Instanzen (DBFs) deiner Klasse haben ?
Nein, ich möchte ein aDb haben, in dem ALLE Objekte stehen, die von der Basisklasse erben. Das ist aber nicht der Fall. Wenn ich z.B. X verschiedene Instanzen bilde, dann habe ich auch X verschiedene aDb mit jeweils 1 Objekt. Das bringt mich nicht weiter.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: einmalige Variable in Superklasse

Beitrag von AUGE_OHR »

hi,
Manfred hat geschrieben: Leider kriege ich es jetzt nicht auf die Reihe, eine Var als Array in der Superklasse zu erzeugen, die nur 1x deklariert wird, wenn die Superklasse das 1. Mal aufgerufen wird um dann bei jedem DB Öffnen
zusammen mit der letzten Antwort von Hans denke ich nun :

dir fehlt eine :AddItem Methode / Class

üblicherweise, wenn man von einem XbPart ausgeht, ist es ja als einzelnes
Object gedacht. Eine XbpPushbutton Class erzeugt einen Pushbutton.

Wenn du aber eine Gruppe von Pushbutton hättes z.b. in einer Listbox
dann müsstes du also eine Class haben für alle deine einzelnen Buttons.
Diese Class hat nun eine Methode :AddItem die ein neuen Button :create()
und verwaltet nun in seiner Class in einen Array alle deine "SubClass"en.
gruss by OHR
Jimmy
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Beitrag von Manfred »

Hi Jimmy,

also eine Extraklasse, die die Objekte aufnimmt?

Das hatte ich auch vermutet. Ich dachte nur es ginge auch anders. Ich hatte die Sache mit dem MDI Fenster zählen, in einem anderen Thread, aber da war es ja so, das immer wieder die gleiche Klasse aufgerufen wird. Und dann habe ich die Möglichkeit eine Var zu nutzen, die nur 1x initialisiert aber immer wieder gefüllt wird. Aber bei verschiedenen DB Klassen, geht das so nicht. Naja, man kann nicht immer gewinnen.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Hallo Manfred,

jetzt verstehe ich, du willst alle Instanzen in dem Array sammeln.
Martin hat dir einen Hinweis gegeben, ob der reicht weiß ich aber nicht.
In der INIT CLASS darfst du nicht einfach:

Code: Alles auswählen

aDB := {}  // immer neu erzeugen
sondern per Abfrage sicherstellen, dass es nur einmal zugewiesen wird:

Code: Alles auswählen

if aDB == NIL
   aDB := {}
endif   
zusätzlich musst du sicherstellen, dass immer das gleiche aDB genutzt wird, da bin ich jetzt überfragt, ob die obige Lösung reicht, wahrscheinlich musst du auch grundsätzlich die gleiche Basisklasse verwenden, oder immer auf das Objekt von dieser zugreifen ... probieren ;-)

Außerdem musst du natürlich eine Methode einbauen, die das aktuelle SELF in aDB einträgt, das meinte Jimmy. Ähnlich wie du ein Menüeintrag in das Menü hängst.

Hier würde sich sicher eine CLASS METHOD AddDBF oder AddSelf etc. anbieten.

Code: Alles auswählen

CLASS METHOD ...:AddDBF(oSelf)
if 0=ascan(::aDB,oSelf)
   aadd(::aDB,oSelf)
endif

...

METHOD AbgeleiteteClasse:INIT(...)
      ::super:...:...:AddDBF(Self)
...
Gruß
Hubert
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Beitrag von Manfred »

Hi Hubert,

werde ich mir mal zu Gemüte führen.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
stevie
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 417
Registriert: Mo, 17. Sep 2007 18:20
Wohnort: Senftenberg
Kontaktdaten:

Beitrag von stevie »

Manfred hat geschrieben:Ich wüßte jetzt nicht wie das zu vereinfachen ginge, ohne den Überblock zu verlieren.
Ich schon.
Du übergibst der KLasse beim Initialisieren ein zweidimensionales Array.
aDb:={;
{"Dbfname1","Indexname",;
{;
{"Feld1",Feldstruktur},;
{"Feld2",Feldstruktur};
},;
{Indexeinstellungen};
},;
{"Dbfname2","Indexname",;
{;
{"Feld1",Feldstruktur},;
{"Feld2",Feldstruktur};
},;
{Indexeinstellungen};
};
}
Übersichtlich und sicher
Viele Grüße
Stevie
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Beitrag von AUGE_OHR »

hi,
Manfred hat geschrieben: also eine Extraklasse, die die Objekte aufnimmt?
Ja genau das meine ich. Du nimmst deine beiden Class(en) und machst
daraus eine "Ober Class" und fügst eine Methode :AddDBF ein. Jedes
der :AddDBF Item nimmst du dann in eine Array als Element auf und
greifst nun "von oben" auf deine beiden Class(en) zu.

Aus diesem Grund sollten die beiden "unteren" Class(en) auch nur die
"Grundeigenschaften" haben damit man die später auch noch für andere
solchte Construktionen nutzen kann was ja das schöne an OOP ist.
gruss by OHR
Jimmy
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Beitrag von Manfred »

Hi,

das hatte ich aber anders geplant. Mit Deiner Oberklasse habe ich aber noch Verständnisschwierigkeiten. Hilf mir bitte kurz auf die Sprünge, wie das auszusehen hat.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Antworten