BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das LibreOffice Forum zu erhalten!

❤️ DANKE >><< DANKE ❤️

> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.
🤗 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
Beiträge: 1642
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
Beiträge: 1642
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 nutzen:


Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das Jahr 2024.
Einfach per Kreditkarte oder PayPal.
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.

❤️ Vielen lieben Dank für Ihre Unterstützung ❤️

Antworten