🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Redim von Objekt-Arrays

Alles zur Programmierung im LibreOffice.
Antworten
Magier
Beiträge: 4
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
* LO-Experte *
Beiträge: 1932
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: 4
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
* LO-Experte *
Beiträge: 1932
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


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten