Autor Thema: Übergabe Array an Function  (Gelesen 3249 mal)

Offline skywook

  • Senior Mitglied
  • ****
  • Beiträge: 445
  • Ich liebe dieses Forum!
Übergabe Array an Function
« am: 08.11.18 - 13:22:01 »
Hallo,

ich möchte ein zweidimensionalen Array einer Function übergeben. Funktioniert das nicht? Bei einem eindimensionalen Array klappt es.

Die Function ist als Variant deklariert:

Function Ablauf(xx as string) as variant

Dim ar as variant
redim ar(10,3)
........

und die Übergabe sieht so aus
ablauf = a


Offline Gutierrez

  • Aktives Mitglied
  • ***
  • Beiträge: 112
Re: Übergabe Array an Function
« Antwort #1 am: 08.11.18 - 13:29:18 »
Moin,

Code
ablauf = a

das wäre ja falsch. Wenn, dann

Code
ablauf = ar

Hast du evtl. Tippfehler? Option Declare benutzt?

Beste Grüße
Gutierrez

Offline skywook

  • Senior Mitglied
  • ****
  • Beiträge: 445
  • Ich liebe dieses Forum!
Re: Übergabe Array an Function
« Antwort #2 am: 08.11.18 - 13:41:36 »
Sorry, meinte natürlich

ablauf = ar

Offline Gutierrez

  • Aktives Mitglied
  • ***
  • Beiträge: 112
Re: Übergabe Array an Function
« Antwort #3 am: 08.11.18 - 14:51:26 »
Moin,

aber das funktioniert doch so, wie du es beschreibst?!

Code
Option Public
Option Declare

Sub Initialize
	
	
	Dim r As Variant
	Dim i As Integer
	Dim j As Integer
	
	r = Func_a
	For i = 0 To Ubound(r)
		For j = 0 To Ubound(r, i+1)
			Print r(i, j)
		Next
	Next
	
End Sub

Function Func_a() As Variant
	
	
	Redim v(1, 1)
	
	v(0, 0) = "0/0"
	v(0, 1) = "0/1"
	v(1, 0) = "1/0"
	v(1, 1) = "1/1"
	
	
	Func_a = v
	
End Function

Beste Grüße
Gutierrez

Offline skywook

  • Senior Mitglied
  • ****
  • Beiträge: 445
  • Ich liebe dieses Forum!
Re: Übergabe Array an Function
« Antwort #4 am: 08.11.18 - 19:55:06 »
In der zweiten Dimension ist ein Array enthalten.
Bei der Übergabe zur Function kommt die Fehlermeldung: Type mismatch

Function Func_a() As Variant
   
   Dim a As Variant
   Redim a(3)
   a(0) = "1"
   a(1) = "11"
   a(2) = "12"
   a(3) = "13"
   
   Redim v(1, 1)
   
   v(0, 0) = "0/0"
   v(0, 1) = a
   v(1, 0) = "1/0"
   v(1, 1) = a
   
   ###### Hier kommt der Fehler #########
   Func_a = v
   
End Function




Offline Gutierrez

  • Aktives Mitglied
  • ***
  • Beiträge: 112
Re: Übergabe Array an Function
« Antwort #5 am: 08.11.18 - 21:07:14 »
Moin,

ich verstehe. Dann würde ich das alles in einem Objekt kapseln, wenn es so nicht funktioniert.


Code
Option Public
Option Declare

Class SimpleClass	

	Public v As Variant	

End Class

Sub Initialize
	
	Dim r As SimpleClass
	Dim i As Integer
	Dim j As Integer
	Dim k As Integer
	Dim t As Variant
	
	Set r = Func_a
	For i = 0 To Ubound(r.v)
		For j = 0 To Ubound(r.v, i+1)
			If Isarray(r.v(i, j)) Then				
				t = r.v(i, j)
				For k = 0 To Ubound(t)
					Print t(k)
				Next
			Else
				Print r.v(i, j)
			End If			
		Next
	Next
	
End Sub

Function Func_a() As SimpleClass
	
	Dim cObj As New SimpleClass
	
	Dim a As Variant
	Redim a(3)
	a(0) = "1"
	a(1) = "11"
	a(2) = "12"
	a(3) = "13"
	
	Redim cObj.v(1, 1)
	
	cObj.v(0, 0) = "0/0"
	cObj.v(0, 1) = a
	cObj.v(1, 0) = "1/0"
	cObj.v(1, 1) = a
	
	
	Set Func_a = cObj
	
	
End Function


Beste Grüße,
Gutierrez

Offline skywook

  • Senior Mitglied
  • ****
  • Beiträge: 445
  • Ich liebe dieses Forum!
Re: Übergabe Array an Function
« Antwort #6 am: 12.11.18 - 13:24:45 »
Super, funktioniert.

Übergebe jetzt ein Objekt. Aber jetzt habe ich noch ein Problem.

Wie funktioniert dann der arrayGetIndex wenn ich in dem Array z.B. nach "1/0" suchen möchte?

if isnull( arrayGetIndex( r.v, "1/0) ) then

funktioniert ja nicht.

Offline jBubbleBoy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.276
  • Geschlecht: Männlich
Re: Übergabe Array an Function
« Antwort #7 am: 12.11.18 - 14:29:49 »
deshalb?
https://www-01.ibm.com/support/docview.wss?uid=swg21456399

schreib dir eine Funktion die das behandelt, am besten gleich in der "SimpleClass"
Gruss Erik :: Freelancer :: Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.16
--
Nur ein toter Bug, ist ein guter Bug!

Offline skywook

  • Senior Mitglied
  • ****
  • Beiträge: 445
  • Ich liebe dieses Forum!
Re: Übergabe Array an Function
« Antwort #8 am: 12.11.18 - 15:04:18 »
Perfekt. Vielen Dank.

Noch eine Frage, die Suche hat nichts gebracht ..

Wenn ich den den Array (aus dem Objekt) wieder in einem "normalen" Array umwandeln möchte, muss ich den durchlaufen und zuordnen oder gibts hierfür einen einfachen convert-Befehl?

So auf die Art:

dim nArray as Variant
nArray = xxxx(r.v)

Offline jBubbleBoy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.276
  • Geschlecht: Männlich
Re: Übergabe Array an Function
« Antwort #9 am: 12.11.18 - 15:35:53 »
einer Variable vom Typ Variant kannst du es zuweisen, bei einer Variable vom Typ Array geht das nicht
Gruss Erik :: Freelancer :: Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.16
--
Nur ein toter Bug, ist ein guter Bug!

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz