Seite 1 von 1

Array in Type

Verfasst: Mi 23. Mär 2022, 13:00
von Magier
Hallo

ich wollte ein Array von Objekten, die selber ein Array enthalten. Nur geht das nicht.

Code: Alles auswählen

REM  *****  BASIC  *****

Type obj_In
	int_ID As Integer
	str_Text_In As String
End Type

Type obj_Out
	int_ID As Integer
	str_Text As String
	arr_In(10) As obj_In
End Type

Global arr_A(10) As obj_Out

Sub Main
	S_Init()	
End Sub

Sub S_Init()
	Dim int_run_Out As Integer
	For int_run_Out = 0 to 9
		Dim int_run_In As Integer
		arr_A(int_run_Out).int_ID    = inr_run_Out
		arr_A(Int_run_Out).str_Text = "Test"
		For int_run_In = 0 to 9
			arr_A(int_run_Out).arr_In(int_run_In).int_ID = int_run_In
			arr_A(int_run_Out).arr_In(int_run_In).str_Text_In = ""
		Next int_run_In
	Next int_run_Out	
End Sub
Nun ist zur Laufzeit Array im Objekt "obj_Out", gar kein Array. So sieht es wenigstens im Debug aus.
Trotzdem geht ein Zugriff auf das Array im Objekt.

Code: Alles auswählen

arr_A(0).arr_In(0).int_ID    IST 9
arr_A(0).arr_In(6).int_ID    IST 9
arr_A(2).arr_In(6).int_ID    IST 9
Meine Frage ist jetzt. Geht das überhaupt? Ein Array in einem Typed-Objekt?

MfG und so

Magier

Re: Array in Type

Verfasst: Mi 23. Mär 2022, 22:09
von mikele
Hallo,
Meine Frage ist jetzt. Geht das überhaupt? Ein Array in einem Typed-Objekt?
Trotzdem geht ein Zugriff auf das Array im Objekt.
Leider nur scheinbar, den es dürfte ja nicht immer der Wert 9 erscheinen.
Mit einem kleinen Umweg geht trotzdem ein Array da hinein zu bekommen.

Code: Alles auswählen

Type obj_In
	int_ID As Integer
	str_Text_In As String
End Type

Type obj_Out
	int_ID As Integer
	str_Text As String
	arr_In As Variant
End Type

Global arr_A(10) As obj_Out



Sub S_Init()
	globalscope.basiclibraries.loadlibrary("MRILib")
	Dim int_run_Out As Integer
	dim tmp(10) as obj_In
	For int_run_Out = 0 to 9
		Dim int_run_In As Integer
		arr_A(int_run_Out).int_ID    = inr_run_Out
		arr_A(Int_run_Out).str_Text = "Test"
		
		For int_run_In = 0 to 10
			tmp(int_run_In).int_ID = int_run_In
			tmp(int_run_In).str_Text_In = "test" & int_run_In
		Next int_run_In
		arr_A(int_run_Out).arr_In=tmp
	Next int_run_Out

End Sub

Re: Array in Type

Verfasst: Do 24. Mär 2022, 11:41
von Magier
Hallo mikele

DANKE! So geht es.

Code: Alles auswählen

...As Variant
Da muss man erst mal drauf kommen. Schräger Weg....

DANKE!!!!!!!!!!!!!

Re: Array in Type

Verfasst: Fr 25. Mär 2022, 10:28
von mikele
Hallo,
der Tipp stammt von hier:
"BASIC-Makros für OpenOffice und LibreOffice" von Volker Lenhardt
https://www.uni-due.de/~abi070/ooo.html
Kapitel 3.3.8