Instanzen dynamisch erzeugen [erledigt]

Klassen, Objekte, Methoden, Instanzen

Moderator: Moderatoren

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

Instanzen dynamisch erzeugen [erledigt]

Beitrag von Manfred »

Ich möchte gerne Instanzen dynamisch erzeugen, damit es schön kompakt wird. Dazu habe ich mir folgendes ausgedacht:

Code: Alles auswählen

FOR nI := 1 TO Len(aDatenbanken)
                 objektname := aDatenbanken[nI,1]
                 objekt := &objektname():new() <--------
                 objekt:cDbank := aDatenbanken[nI,2]
                 objekt:db_oeffnen()
                 objekt:db_schliessen()
         NEXT
Das klappt aber nicht, weil xbase jedesmal zur Laufzeit versucht eine Funktion daraus zu machen. Die gibt es aber dann nicht.
Geht es überhaupt, wie ich es gerne möchte, oder mache ich hier nur einen Fehler?
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 kannste sein, Hauptsache pfiffig!!
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 19942
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 46 Mal
Danksagung erhalten: 29 Mal

Re: Instanzen dynamisch erzeugen

Beitrag von Manfred »

zur Verdeutlichung. So würde es aussehen, wenn es alles von hand programmiert würde

Code: Alles auswählen

oKlasse1 := antrieb():new()
oKlasse1:cdbank := "Klasse1"
oKlasse1:db_oeffnen()
oKlasse1:db_schliessen()

oKlasse1 := antrieb2():new()
oKlasse1:cdbank := "Klasse2"
oKlasse1:db_oeffnen()
oKlasse1:db_schliessen()

oKlasse1 := antrieb3():new()
oKlasse1:cdbank := "Klasse3"
oKlasse1:db_oeffnen()
oKlasse1:db_schliessen()
und dann eben ca 100 Stück davon.
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 kannste sein, Hauptsache pfiffig!!
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 8367
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 16 Mal
Danksagung erhalten: 68 Mal
Kontaktdaten:

Re: Instanzen dynamisch erzeugen

Beitrag von Tom »

Du musst klammern. Wenn das überhaupt so geht.
Herzlich,
Tom
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2697
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 33 Mal
Danksagung erhalten: 1 Mal

Re: Instanzen dynamisch erzeugen

Beitrag von georg »

Hallo, Manfred -


vorausgesetzt, es gibt die Klassen, könnte es so gehen:

Code: Alles auswählen

	cVar := "antrieb()"
	oClass := &cVar:new()
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 19942
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 46 Mal
Danksagung erhalten: 29 Mal

Re: Instanzen dynamisch erzeugen

Beitrag von Manfred »

ergibt auch eine unbekannte Funktion
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 kannste sein, Hauptsache pfiffig!!
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 8367
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 16 Mal
Danksagung erhalten: 68 Mal
Kontaktdaten:

Re: Instanzen dynamisch erzeugen

Beitrag von Tom »

Ich würde so klammern:

Code: Alles auswählen

(&cVar):new()
Herzlich,
Tom
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 19942
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 46 Mal
Danksagung erhalten: 29 Mal

Re: Instanzen dynamisch erzeugen

Beitrag von Manfred »

gleiches Problem. Hatte ich aber auch schonmal probiert.
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 kannste sein, Hauptsache pfiffig!!
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 8367
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 16 Mal
Danksagung erhalten: 68 Mal
Kontaktdaten:

Re: Instanzen dynamisch erzeugen

Beitrag von Tom »

&(cVar):New() ? Ich kann hier nicht ausprobieren.
Herzlich,
Tom
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 19942
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 46 Mal
Danksagung erhalten: 29 Mal

Re: Instanzen dynamisch erzeugen

Beitrag von Manfred »

auh man,
wieder was dazugelernt. Dank an Georg.
Durch die dynamische Routine, wurde die Zusatz DLL gar nicht eingebunden, in der die Klassen stehen. Das ist mir überhaupt nicht in den Sinn gekommen. Das Zauberwort heißt dann REQUEST Funktionsname. Jetzt wird eingebunden und jetzt klapp es genau so:

Code: Alles auswählen

FOR nI := 1 TO Len(aDatenbanken)
                            objektname := aDatenbanken[nI,1] + "()"
                            IF ! Empty(aDatenbanken[nI,2])
                               cDbank := aDatenbanken[nI,2]
                            ELSE
                               cDbank := aDatenbanken[nI,1]
                            ENDIF
                            objekt     := &objektname:new()
                            objekt:db_oeffnen()
                            objekt:db_schliessen()
                            objekt := NIL
                        NEXT
Da wäre ich niemals drauf gekommen. Ich hatte das zwar schonmal gehört, das nicht benutzte DLL auch nicht eingebunden werden, habe es aber eher für ein gerücht gehalten, weil mir noch nie sowas unterkam.
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 kannste sein, Hauptsache pfiffig!!
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 19942
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 46 Mal
Danksagung erhalten: 29 Mal

Re: Instanzen dynamisch erzeugen [erledigt]

Beitrag von Manfred »

das war jedesmal eine Arbeit für Doofe. Ich hatte dann zum Testen den Klassennamen direkt genommen und dann klappte es. Klar, dann wurde die DLL ja auch eingebunden. Als ich es aber im Livebetrieb über die Kommandozeile getippt habe, war sie nicht vorhanden. Und dann fiel mir im Projektmanager auf, das unter Modulen die DLL gar nicht drin war.
Wieder 2 Stunden für nix verbraten.... :banghead:
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 kannste sein, Hauptsache pfiffig!!
Antworten