❤ Unterstütze jetzt das LIBREOFFICE-Forum ❤

Redim von Objekt-Arrays

Alles zur Programmierung im LibreOffice.
Antworten
Magier
Beiträge: 2
Registriert: Do 13. Feb 2020, 08:37

Redim von Objekt-Arrays

Beitrag von Magier » Do 13. Feb 2020, 09:45

Hallo

ich möchte ein Globales Array von Objekten vergrößern, das klappt aber nicht.
Hier ein Beispiel:

Code: Alles auswählen

REM  *****  BASIC  *****
Type obj_A
	str_A As String
	int_A As Integer
End Type

Dim arr_A(1) As obj_A

Sub Main
	Dim int_Count As Integer
	int_Count = F_Anzahl()
	MsgBox  UBound(arr_A)
	Redim arr_A(int_Count) As obj_A
	MsgBox  UBound(arr_A)
End Sub

Function F_Anzahl()As Integer
	F_Anzahl = 10
End Function
Also zum Verständnis.
Ich habe ein Globales Array von Objekten A und möchte es später ändern.
Ich habe das arr_A als
  • Public
  • Global
definiert. Habe auch mit New rumgespielt....
Nur geht das nicht, egal was ich versuche die Größe des Arrays ist immer 1.

Kann mir da jemand helfen oder einen Tipp geben?
Mit freundlichen Grüßen und schon mal Danke!
Magier
P.S. Benutze LibreOffic Version: 5.4.5.1 (x64) unter Windows

mikele
Beiträge: 1063
Registriert: Mo 1. Aug 2011, 20:51

Re: Redim von Objekt-Arrays

Beitrag von mikele » Do 13. Feb 2020, 16:54

Hallo,
deklariere das Array als Variant, sprich lass' As obj_A weg.
Gruß,
mikele

Magier
Beiträge: 2
Registriert: Do 13. Feb 2020, 08:37

Re: Redim von Objekt-Arrays

Beitrag von Magier » Do 13. Feb 2020, 18:48

Danke für die Antwort aber so richtig klappt das immer noch nicht.

Das hier funktioniert aber das Array arr_A ist dann kein Array von obj_A.

Code: Alles auswählen

Type obj_A
	str_A As String
	int_A As Integer
End Type

Dim arr_A(1)

Sub Main
	Dim int_Count As Integer
	int_Count = F_Anzahl()
	MsgBox  UBound(arr_A) REM <- 1
	Redim arr_A(int_Count)
	MsgBox  UBound(arr_A) REM <-10
End Sub

Function F_Anzahl()As Integer
	F_Anzahl = 10
End Function
So lässt sich der Code auch Übersetzten aber es ändert die Größe des Arrays nicht.

Code: Alles auswählen

REM  *****  BASIC  *****
Type obj_A
	str_A As String
	int_A As Integer
End Type

Dim arr_A(1) As obj_A

Sub Main
	Dim int_Count As Integer
	int_Count = F_Anzahl()
	MsgBox  UBound(arr_A) REM <- 1
	Redim arr_A(int_Count)
	MsgBox  UBound(arr_A) REM <- 1
End Sub

Function F_Anzahl()As Integer
	F_Anzahl = 10
End Function

mikele
Beiträge: 1063
Registriert: Mo 1. Aug 2011, 20:51

Re: Redim von Objekt-Arrays

Beitrag von mikele » Do 13. Feb 2020, 23:49

Hallo,
Das hier funktioniert aber das Array arr_A ist dann kein Array von obj_A.
Wo ist das Problem?
Es ist dann variant, kann also Elemente jeden Typs aufnehmen.
Gruß,
mikele

Antworten