Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: magic_halli am 01.12.08 - 16:22:52

Titel: Werte in Array speichern
Beitrag von: magic_halli am 01.12.08 - 16:22:52
Hi,

ich will Filepfade (von Attachments) in ein Array schreiben:
Code
Dim attachment As Variant
	Set attachment = docMail.GetFirstItem("Body")
	' TempDir des Win-Benutzers
	tempdir$ = Environ("temp")
	Dim FileArray() As Variant
	arrayIndex$ = 0
	
	If ( docMail.HasEmbedded ) Then
		If ( attachment.Type = RICHTEXT ) Then
			Forall o In attachment.EmbeddedObjects
				If ( o.Type = EMBED_ATTACHMENT ) Then
					' Attachment in TempVerzeichnis des Nutzers speichern
					filepath$ = tempdir$ & "\" & o.Source
					Call o.ExtractFile( filepath$ )
					' filepath$ in Array schreiben
					FileArray(arrayIndex$) = filepath$
					arrayIndex$ = arrayIndex$ + 1
				End If
			End Forall
		End If
	End If
Ich bekomme in der Zeile
Code
FileArray(arrayIndex$) = filepath$
die Fehlermeldung:
"Subscript out of range"!
Ich find den Fehler einfach nicht... Was ist falsch?

Danke und Gruß
Titel: Re: Werte in Array speichern
Beitrag von: eknori am 01.12.08 - 16:24:42
Redim und Redim Preserve warten in der Designer Hilfe
Titel: Re: Werte in Array speichern
Beitrag von: magic_halli am 01.12.08 - 16:37:29
Redim und Redim Preserve warten in der Designer Hilfe
Danke... scheint nun zu funktionieren:
Code
...
' Dimensionierung festlegen (wichtig!)
Redim Preserve FileArray(arrayIndex$)
FileArray(arrayIndex$) = filepath$
...
Richtig?
Titel: Re: Werte in Array speichern
Beitrag von: magic_halli am 01.12.08 - 16:47:44
Gleich noch ne Frage zum Array hinterher:

Dieses Array möchte ich an eine Java-Bibliothek (LS2J) übergeben und nutzen.
1. Ist das Array dann gleichzusetzen mit Java-ArrayList?

Ich will dieses Array an eine Java-Klasse (Konstruktor) übergeben. Als Beispiel mal hier, wie ich einen String-Value mitschicke:
Code
...
Set jClass = jSession.GetClass("MyClass")
' ---Konstruktor-Aufruf mit Parameterübergabe aufrufen
Set jObject = jClass.CreateObject("(Ljava/lang/String;)V",subject)
2. Wie schicke ich das Array rüber bzw. kann ich dann einfach in meinem Konstruktor (auf Java-Seite)
Code
...
public MyClass(String subject, ArrayList FileArray) {
...
angeben und das 'FileArray' ist dann nutzbar?

Danke.
Titel: Re: Werte in Array speichern
Beitrag von: magic_halli am 02.12.08 - 09:19:46
Ok, mal anders gefragt:
Ich speichere in mein Array Filenamen von Attachments (funktioniert). So wird mein Array in LotusScript letztendlich deklariert:
Code
Dim FileArray() As String
Jetzt will ich das Array mittels LS2J an mein Java-Programm einfach übergeben. Hierzu rufe ich einen Konstruktor einer Klasse auf und übergebe diesem bereits andere Werte:
Code
...
Set jClass = jSession.GetClass("MyClass")
' ---Konstruktor-Aufruf mit Parameterübergabe
Set jObject = jClass.CreateObject("(Ljava/lang/String;)V",subject)
Jetzt muss ich "einfach" nur noch das Array 'FileArray' mit übergeben werden!

1. Welche Signatur muss ich für das Array hier zusätzlich noch einfügen?
2. Welchen Typ hat dann in Java dieses Array aus LotusScript (String[], ArrayList etc.)? Das kann ich ja dann in Java entsprechend deklarieren.

Gruß