:new() ohne :create()

Klassen, Objekte, Methoden, Instanzen

Moderator: Moderatoren

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

:new() ohne :create()

Beitrag von Manfred »

Hi,

wenn ich nur eine Instanz benötige und diese nur mit :new() erzeuge, aber ohne :create(), muß ich dann irgendwas beachten, wenn ich diese Instanz nicht mehr benötige, oder killt die der Garbage Collector ohne Probleme? Weiß das einer?
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
Rolf Ramacher
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1930
Registriert: Do, 09. Nov 2006 10:33
Wohnort: Bergheim
Danksagung erhalten: 3 Mal
Kontaktdaten:

Beitrag von Rolf Ramacher »

Hi Manfred,

geht das denn überhaupt ?? :new() ohne ein späteres :create()
Gruß Rolf

Mitglied der Gruppe XUG-Cologne
www.xug-cologne.de
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21192
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Beitrag von Manfred »

Hi Rolf,

ja das geht. Ich benötige nur das Objekt, oder wie man den Zustand nennt. Warum das so geht, habe ich auch nicht ganz kapiert.

Code: Alles auswählen

oSteuer:oBez          := XbpSle():new()
oSteuer:oBez:datalink := { |x| IIf( x==NIL, LTrim(oSteuer:Bez), NIL) }
ich brauche oSteuer:oBez um da was reinzuschreiben, wegen einer Pauschalroutine. Aber ich kann das SLE nicht gebrauchen am Bildschirm. Zuerst habe ich es versteckt, aber dann habe ich aus Neugier das :create weggelassen. Es klappt für meine Zwecke.
Ob es jetzt DIE Lösung ist, kann ich nicht sagen. Es klappt aber.
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: 15696
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Hallo,

:New() ruft intern die :Init() Methode (falls vorhanden) auf und gibt somit ein Objekt zurück. Normalerweise kann so ein Objekt keine Mehtoden ausführen, aber oXbpPrinter():New():List() zeigt dass es Ausnahmen gibt ;-)

:Create() dient bei 'normalen' XbParts dazu Systemresourcen mit dem jeweiligen Objekt zu verbinden. Bei eigenen Klassen, die lediglich Speicher benötigen, braucht man auch kein :Create() eigene Methoden müssten dennoch aufrufbar sein, solange diese keine Systemresourcen benötigen, das habe ich aber noch nicht probiert.
Solange du nur Variablen brauchst ist das aber überhaupt kein Problem und diese werden auch wieder sauber vom GC entfernt.
Gruß
Hubert
Antworten