Hi,
ich will Filepfade (von Attachments) in ein Array schreiben:
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 FileArray(arrayIndex$) = filepath$
die Fehlermeldung:
"Subscript out of range"!
Ich find den Fehler einfach nicht... Was ist falsch?
Danke und Gruß
Redim und Redim Preserve warten in der Designer Hilfe
Danke... scheint nun zu funktionieren:
...
' Dimensionierung festlegen (wichtig!)
Redim Preserve FileArray(arrayIndex$)
FileArray(arrayIndex$) = filepath$
...
Richtig?
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:
...
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)
...
public MyClass(String subject, ArrayList FileArray) {
...
angeben und das 'FileArray' ist dann nutzbar?
Danke.
Ok, mal anders gefragt:
Ich speichere in mein Array Filenamen von Attachments (funktioniert). So wird mein Array in LotusScript letztendlich deklariert:
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:
...
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ß