| Betreff | Klasse/ UDT |
| Von | Theo Beutekamp |
| Datum | 09.11.2009 16:47:08 |
Nochmal eine Frage:
Ich muss eine "Struktur" laden, die so aussiehen "müsste":
Eine Klasse namens "clsBox" mit den Mitgliedern
Public m_cBoxTop As clsBox
Public m_cBoxLeft As clsBox
Public m_cBoxRight As clsBox
Public m_cBoxBottom As clsBox
Public m_sContents As String
Das funktioniert auch genauso, wie ich es möchte, aber nach ein paar
zehntausend Instanzen dieser Klasse verbraucht das Ding schon wirklich
viel Arbeitsspeicher.
Gibt es eine Möglichkeit, wie ich das umschreiben kann, bzw. eine
"kostengüntstige" Alternative?
Ich dachte erst, ich könnte ja auch ein UDT machen (in der Hoffnung,
dass dies weniger Arbeitsspeicher verbraucht), aber bei diesem Versuch
meldet die IDE "Wechselseitige Abhängigkeit von Modulen":
Public Type udtBox
BoxTop As udtBox
BoxLeft As udtBox
BoxRight As udtBox
BoxBottom As udtBox
Contents As String
End Type
| Betreff | Re: Klasse/ UDT |
| Von | =?iso-8859-1?Q?Heinz-Mario_Fr=FChbeis?= |
| Datum | 09.11.2009 17:44:54 |
"Theo Beutekamp"
news:OfhGnPVYKHA.3720@TK2MSFTNGP02.phx.gbl...
> Eine Klasse namens "clsBox"
> Das funktioniert auch genauso, wie ich es möchte, aber nach ein paar
> zehntausend Instanzen dieser Klasse verbraucht das Ding schon wirklich
> viel Arbeitsspeicher.
Was beinhaltet denn die Klasse -->
etwas eine PictureBox?
, die du dann (durch die Klasse "vermehrst") oben rechts unten links
anordnest?
, deren Events du dann nutzen möchtest?
viele Grüße
Heinz-Mario
| Betreff | Re: Klasse/ UDT |
| Von | Theo Beutekamp |
| Datum | 09.11.2009 19:34:16 |
Es ist eine abstrukte Klasse mit lauter Werten, durch die ich mich
hangeln muss.
Kompliziert zu erklären...
Am einfachsten wäre folgender Vergleich:
Klasse clsPerson
Public Mutter As clsPerson
Public Vater As clsPerson
Public EigenerName As String
Ich sage dann in meinem Code:
Dim nMutter As New clsPerson
nMutter.EigenerName = "Rita"
Dim nSohn As New clsPerson
nSohn.EigenerName = "Peter"
Set nSohn.Mutter = nMutter
Ich weiß keinen anderen Weg, als alles in den Arbeitsspeicher zu
schieben, wenn ich mich schnell da durchhangeln will und mit den
einzelnen Instanzen arbeiten will.
Du?
Heinz-Mario Frühbeis schrieb:
>
> "Theo Beutekamp"
> news:OfhGnPVYKHA.3720@TK2MSFTNGP02.phx.gbl...
>
>> Eine Klasse namens "clsBox"
>
>> Das funktioniert auch genauso, wie ich es möchte, aber nach ein paar
>> zehntausend Instanzen dieser Klasse verbraucht das Ding schon wirklich
>> viel Arbeitsspeicher.
>
> Was beinhaltet denn die Klasse -->
> etwas eine PictureBox?
> , die du dann (durch die Klasse "vermehrst") oben rechts unten links
> anordnest?
> , deren Events du dann nutzen möchtest?
>
> viele Grüße
> Heinz-Mario
>
| Betreff | Re: Klasse/ UDT |
| Von | =?iso-8859-1?Q?Heinz-Mario_Fr=FChbeis?= |
| Datum | 09.11.2009 20:19:58 |
Hallo!
Jetzt ! nehme ich mal an das du Daten aus einer Datenbank holst und dir mit
den Klassen ein Abbild
der Db. schaffen möchtest.
viele Grüße
Heinz-Mario
"Theo Beutekamp"
news:u$OEAtWYKHA.1520@TK2MSFTNGP04.phx.gbl...
> Es ist eine abstrukte Klasse mit lauter Werten, durch die ich mich hangeln
> muss.
> Kompliziert zu erklären...
> Am einfachsten wäre folgender Vergleich:
>
> Klasse clsPerson
> Public Mutter As clsPerson
> Public Vater As clsPerson
> Public EigenerName As String
>
> Ich sage dann in meinem Code:
>
> Dim nMutter As New clsPerson
> nMutter.EigenerName = "Rita"
>
> Dim nSohn As New clsPerson
> nSohn.EigenerName = "Peter"
>
> Set nSohn.Mutter = nMutter
>
> Ich weiß keinen anderen Weg, als alles in den Arbeitsspeicher zu schieben,
> wenn ich mich schnell da durchhangeln will und mit den einzelnen Instanzen
> arbeiten will.
>
> Du?
>
> Heinz-Mario Frühbeis schrieb:
>>
>> "Theo Beutekamp"
>> news:OfhGnPVYKHA.3720@TK2MSFTNGP02.phx.gbl...
>>
>>> Eine Klasse namens "clsBox"
>>
>>> Das funktioniert auch genauso, wie ich es möchte, aber nach ein paar
>>> zehntausend Instanzen dieser Klasse verbraucht das Ding schon wirklich
>>> viel Arbeitsspeicher.
>>
>> Was beinhaltet denn die Klasse -->
>> etwas eine PictureBox?
>> , die du dann (durch die Klasse "vermehrst") oben rechts unten links
>> anordnest?
>> , deren Events du dann nutzen möchtest?
>>
>> viele Grüße
>> Heinz-Mario
>>
| Betreff | Re: Klasse/ UDT |
| Von | Theo Beutekamp |
| Datum | 09.11.2009 21:18:43 |
Ja genau!
Gibt es eine standardisierte Methode, wie man am Besten solche Bäume
erzeugt, bzw. sich da durchhangelt?
Wenn nicht, dann freue ich mich auch über alternative Ideen.
Heinz-Mario Frühbeis schrieb:
> Hallo!
>
> Jetzt ! nehme ich mal an das du Daten aus einer Datenbank holst und dir
> mit den Klassen ein Abbild
> der Db. schaffen möchtest.
>
> viele Grüße
> Heinz-Mario
>
> "Theo Beutekamp"
> news:u$OEAtWYKHA.1520@TK2MSFTNGP04.phx.gbl...
>> Es ist eine abstrukte Klasse mit lauter Werten, durch die ich mich
>> hangeln muss.
>> Kompliziert zu erklären...
>> Am einfachsten wäre folgender Vergleich:
>>
>> Klasse clsPerson
>> Public Mutter As clsPerson
>> Public Vater As clsPerson
>> Public EigenerName As String
>>
>> Ich sage dann in meinem Code:
>>
>> Dim nMutter As New clsPerson
>> nMutter.EigenerName = "Rita"
>>
>> Dim nSohn As New clsPerson
>> nSohn.EigenerName = "Peter"
>>
>> Set nSohn.Mutter = nMutter
>>
>> Ich weiß keinen anderen Weg, als alles in den Arbeitsspeicher zu
>> schieben, wenn ich mich schnell da durchhangeln will und mit den
>> einzelnen Instanzen arbeiten will.
>>
>> Du?
>>
>> Heinz-Mario Frühbeis schrieb:
>>>
>>> "Theo Beutekamp"
>>> news:OfhGnPVYKHA.3720@TK2MSFTNGP02.phx.gbl...
>>>
>>>> Eine Klasse namens "clsBox"
>>>
>>>> Das funktioniert auch genauso, wie ich es möchte, aber nach ein paar
>>>> zehntausend Instanzen dieser Klasse verbraucht das Ding schon
>>>> wirklich viel Arbeitsspeicher.
>>>
>>> Was beinhaltet denn die Klasse -->
>>> etwas eine PictureBox?
>>> , die du dann (durch die Klasse "vermehrst") oben rechts unten links
>>> anordnest?
>>> , deren Events du dann nutzen möchtest?
>>>
>>> viele Grüße
>>> Heinz-Mario
>>>
>
| Betreff | Re: Klasse/ UDT |
| Von | =?iso-8859-1?Q?Heinz-Mario_Fr=FChbeis?= |
| Datum | 09.11.2009 22:22:15 |
"Theo Beutekamp"
news:ePW6WnXYKHA.3696@TK2MSFTNGP02.phx.gbl...
> Gibt es eine standardisierte Methode, wie man am Besten solche Bäume
> erzeugt, bzw. sich da durchhangelt?
Wenn du mit VB-eigenem Werzeug arbeiten möchtest :
TreeView und ListView
RecordSet erstellen
TreeView-Knoten : Personen
TreeView-"Unter"-Knoten : Bezüge und Verweise
' Frei aus dem Gedächtnis
dim n as Node
For i = 0 to rec.Count -1
set n = TreeView1.nodes.add (Key )
next i
(Kannst ja dazu in der Hilfe schauen: Wie Knoten erstellt werden
(Parent,Child) ; oder googeln)
Alles anklickbar, Drag-Drop-bar, editierbar ...
ListView : Info's zu Personen
--> NodeClick -->
Dm li as ListItem
For i = 0 to rs.fields.count -1
set li = ListView1.additem(Key)
next i
(Kannst ja dazu in der Hilfe schauen: Wie ListItems erstellt werden ; oder
googeln)
Alles anklickbar, Drag-Drop-bar, editierbar ...
Wenn man' s einmal 'raus hat geht das Erstellen ratzfatz.
Und läuft auch sehr schnell.
viele Grüße
Heinz-Mario
| Betreff | Re: Klasse/ UDT |
| Von | "Thorsten Albers" |
| Datum | 09.11.2009 18:10:22 |
Theo Beutekamp
> aber nach ein paar
> zehntausend Instanzen dieser Klasse verbraucht das Ding schon wirklich
> viel Arbeitsspeicher.
Ich kann mir keinen Grund vorstellen, warum man 'ein paar zehntausend
Instanzen' gleichzeitig im Speicher halten muß...
> Public Type udtBox
> BoxTop As udtBox
> BoxLeft As udtBox
> BoxRight As udtBox
> BoxBottom As udtBox
> Contents As String
> End Type
Ist doch logisch, das eine Struktur nicht sich selbst enthalten kann. Zum
einen wird mit 'Public Type...End Type' hier die Struktur definiert, d.h.
innerhalb davon wäre 'udtBox' undefiniert; nur ein definierter Datentyp
kann Mitglied einer Struktur sein. Zum anderen wäre das eine
'Endlos-Definition', wenn eine Definition sich selbst als Teil der
Definition enthielte.
--
Thorsten Albers
albers (a) uni-freiburg.de
| Betreff | Re: Klasse/ UDT |
| Von | "Peter Götz" |
| Datum | 10.11.2009 11:59:40 |
Hallo Theo,
> Ich muss eine "Struktur" laden, die so aussiehen "müsste":
>
> Eine Klasse namens "clsBox" mit den Mitgliedern
>
> Public m_cBoxTop As clsBox
> Public m_cBoxLeft As clsBox
> Public m_cBoxRight As clsBox
> Public m_cBoxBottom As clsBox
> Public m_sContents As String
Wenn m_CBoxTop, m_cBoxLeft, m_cBoxRight und mcboxBottom
jeweils wieder ein Objekt vom Typ clsBox enthält und dieses in
seinen Eigenschaften wieder jeweils ein Objekt vom Typ
clsBox und diese wiederum usw., usw., usw., .... ,
dann wäre das ja eine endlose Kette von Objekten, für
die jeder Speicher zu klein wäre.
> Das funktioniert auch genauso, wie ich es möchte,
Ob das wirklich so ist, könnte man nur beurteilen, wenn
man u.a. auch den Konstruktor (Sub New) dieser Klasse
kennen würde.
> aber nach ein paar zehntausend Instanzen dieser Klasse verbraucht das Ding
> schon wirklich viel Arbeitsspeicher.
Wenn Du 10.000 solcher Klasseninstanzen hast, die
selbst dann jeweils wieder auf 4 solcher Klasseninstanzen
in ihren Eigenschaften m_CBoxTop ... mCBoxBottom
zeigen, bist Du insgesamt schon bei 50.000 Instanzen.
> Gibt es eine Möglichkeit, wie ich das umschreiben kann, bzw. eine
> "kostengüntstige" Alternative?
Um Alternativen zu erkennen, sollte man erst mal etwas
detailierter wissen, was genau Du da eigentlich vorhast.
>
> Ich dachte erst, ich könnte ja auch ein UDT machen (in der Hoffnung, dass
> dies weniger Arbeitsspeicher verbraucht), aber bei diesem Versuch meldet
> die IDE "Wechselseitige Abhängigkeit von Modulen":
> Public Type udtBox
> BoxTop As udtBox
> BoxLeft As udtBox
> BoxRight As udtBox
> BoxBottom As udtBox
> Contents As String
> End Type
Auch damit hast Du ganz schnell einen endlosen
Bandwurm, genau wie oben mit Deinen x-tausend
Klasseninstanzen.
Beschreibe mal Deine wirkliche Aufgabenstellung,
nur so kann man einen dafür praktikablen Weg
erkennen. Klassen oder oder UDTs, die sich selbst
enthalten, sind eher keine wirkliche Lösung.
Gruß aus St.Georgen
Peter Götz
www.gssg.de (mit VB-Tipps u. Beispielprogrammen)
Keine Kommentare:
Kommentar veröffentlichen