AtNotes Übersicht Willkommen Gast. Bitte einloggen oder registrieren.
16.11.18 - 00:22:32
Übersicht Hilfe Regeln Glossar Suche Einloggen Registrieren
News: Wir begrüßen Tode als neuen Moderator!
Schnellsuche:
+  Das Notes Forum
|-+  Lotus Notes / Domino 9
| |-+  ND9: Entwicklung (Moderatoren: Axel, eknori, Thomas Schulte, koehlerbv, m3)
| | |-+  Übergabe Array an Function
« vorheriges nächstes »
Seiten: [1] Nach unten Drucken
Autor Thema: Übergabe Array an Function  (Gelesen 273 mal)
skywook
Senior Mitglied
****
Offline Offline

Beiträge: 433


Ich liebe dieses Forum!


« 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

Gespeichert
Gutierrez
Junior Mitglied
**
Offline Offline

Beiträge: 96


« Antworten #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
Gespeichert
skywook
Senior Mitglied
****
Offline Offline

Beiträge: 433


Ich liebe dieses Forum!


« Antworten #2 am: 08.11.18 - 13:41:36 »

Sorry, meinte natürlich

ablauf = ar
Gespeichert
Gutierrez
Junior Mitglied
**
Offline Offline

Beiträge: 96


« Antworten #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
Gespeichert
skywook
Senior Mitglied
****
Offline Offline

Beiträge: 433


Ich liebe dieses Forum!


« Antworten #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



Gespeichert
Gutierrez
Junior Mitglied
**
Offline Offline

Beiträge: 96


« Antworten #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
Gespeichert
skywook
Senior Mitglied
****
Offline Offline

Beiträge: 433


Ich liebe dieses Forum!


« Antworten #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.
Gespeichert
jBubbleBoy
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 1067



« Antworten #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"
Gespeichert

Gruss Erik :: Freelancer :: Notes, Java, Web, VBA und DomNav 2.5
--
Nur ein toter Bug, ist ein guter Bug!
skywook
Senior Mitglied
****
Offline Offline

Beiträge: 433


Ich liebe dieses Forum!


« Antworten #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)
Gespeichert
jBubbleBoy
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 1067



« Antworten #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
Gespeichert

Gruss Erik :: Freelancer :: Notes, Java, Web, VBA und DomNav 2.5
--
Nur ein toter Bug, ist ein guter Bug!
Seiten: [1] Nach oben Drucken 
« vorheriges nächstes »
Gehe zu:  


Einloggen mit Benutzername, Passwort und Sitzungslänge

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006, Simple Machines Prüfe XHTML 1.0 Prüfe CSS
Impressum Atnotes.de - Powered by Syslords Solutions - Datenschutz | Partner: