Public deklariertes Struktur-Array redimensionieren

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Public deklariertes Struktur-Array redimensionieren

Re: Public deklariertes Struktur-Array redimensionieren

von DPunch » Do, 18.08.2011 21:08

Aloha
Bergkaffee hat geschrieben:Wie würde ich erreichen, dass das Array geleert wird?
Meines Wissens nach nur durch zunutze machen der ByReference Aufrufe mit einer extra Prozedur ala

Code: Alles auswählen

Sub RedimMyTypeArray(myArray, newDimension)
	Dim Dummy(newDimension) as New PunkteType
	myArray = Dummy
End Sub
und Verwendung ala

Code: Alles auswählen

sub PZ1berechnen
[...]
PunkteAnz = lst.getItemCount() + 4
RedimMyTypeArray(Punkte,PunkteAnz)
[...]
end sub
Ich habe allerdings selber nur ganz am Anfang, als ich das erste Mal über die User Defined Types gestolpert bin, ein wenig damit herumgespielt, in der praktischen Arbeit habe ich die nie verwendet. Sehr wahrscheinlich also, dass es da auch andere / bessere Wege für gibt.

Re: Public deklariertes Struktur-Array redimensionieren

von Bergkaffee » Do, 18.08.2011 20:51

Ah, sorry, da ist mir ein Fehler unterlaufen. Daten bleiben erhalten.
Wie würde ich erreichen, dass das Array geleert wird?

Re: Public deklariertes Struktur-Array redimensionieren

von DPunch » Do, 18.08.2011 20:07

Aloha
Bergkaffee hat geschrieben:Was ich jetzt nicht verstehe ist, dass ich Preserve bei Arrays immer dazu nutze (und ich habe gedacht, dies ist auch der Sinn) damit die Daten im Array erhalten bleiben.
Das ist normalerweise der Sinn, ja.
Bergkaffee hat geschrieben:Warum bewirkt es dann bei Typen, dass das Array geleert wird?
Bei mir wird das Array nicht geleert, sondern (wie gewünscht?) nur neu dimensioniert, vorhandene Einträge bleiben erhalten.

Re: Public deklariertes Struktur-Array redimensionieren

von Bergkaffee » Do, 18.08.2011 19:03

Vielen Dank, jetzt gibt es kein Problem mehr. Die Public-deklaration geschieht bereits am Anfang. Mit dem Zusatz Preserve funktioniert es jetzt. Was ich jetzt nicht verstehe ist, dass ich Preserve bei Arrays immer dazu nutze (und ich habe gedacht, dies ist auch der Sinn) damit die Daten im Array erhalten bleiben. Warum bewirkt es dann bei Typen, dass das Array geleert wird?

Re: Public deklariertes Struktur-Array redimensionieren

von DPunch » Do, 18.08.2011 12:34

Aloha

Bei User Defined Types benötigt es dazu das Stichwort "Preserve", also

Code: Alles auswählen

redim Preserve Punkte(PunkteAnz) as PunkteType

Re: Public deklariertes Struktur-Array redimensionieren

von balu » Do, 18.08.2011 12:15

Hallo Bergkaffee,

was hälst Du denn davon wenn Du die Public deklaration ganz am anfang des Moduls und zwar in den ersten Zeilen oberhalb der ersten Sub, anstatt mittendrin ausführst?

Ich weiß jetzt aber nicht auf die schnelle ob das dein Problem löst, da ungetestet.


Gruß
balu

Public deklariertes Struktur-Array redimensionieren

von Bergkaffee » Do, 18.08.2011 10:35

Hallo zusammen.

Ich möchte ein Array öffentlich deklarieren, damit ich dessen Daten in mehreren Makros eines Moduls verwenden kann.
Das Array ist allerdings auch als Struktur deklariert. Nun finde ich keine Möglichkeit dieses Array in einem Makro zu redimensionieren.

Code: Alles auswählen

Type PunkteType
	row  as Long
	Pnr  as Variant
	dRW  as Double
	dHW	 as Double
	cluster()
End Type

Public Punkte() as PunkteType

sub PZ1berechnen
[...]
PunkteAnz = lst.getItemCount() + 4
redim Punkte(PunkteAnz) as PunkteType
[...]
end sub
Kann mir jemand weiterhelfen wie ich das umsetzen kann bzw. wo mein Fehler liegt.

Nach oben