Hallo A1880!
Zu Gänsefüßchen: Chr(34) hatte ich gar nicht probiert, weil das nämlich in VB6 bei Konstandeklarationen nicht geht (bei Variablenzuweisungen natürlich schon). Aber: In Jabaco geht Chr(34) auch für Konstandeklarationen, und auch in der Deklaration von Default - Werten von optionalen Parametern. - Fazit: im Denken wieder zu sehr an VB6 geklebt...
Zu Optional: 08/15-Optional geht in Jabaco. Was aber nicht geht ist dieses:
|
Source code
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
Public Sub main(ByJava args() As String)
Dim sTest As String
MsgBox Fct() ' OK
MsgBox Fct("a") ' OK
MsgBox Fct("a", "b") ' OK
MsgBox Fct(, "w") ' FEHLER!
End Sub
Private Function Fct(Optional ByVal sArg1 As String = "x", Optional ByVal sArg2 As String = "y") As String
Fct = sArg1 & sArg2
End Function
|
Der springende Punkt ist: In VB6 können optionale Parameter beim Aufruf uch dann leer gelassen werden, wenn dahinter noch Parameter übergeben werden, die NICHT leer gelassen wurden. Bei Jabaco geht das nicht: da darf nach dem ersten leer gelassenen optionalen Parametr nichts mehr übergeben werden.
Nun ist das aber - zumindest für mich - kein ganz akademisches Problem. Beispiel: Eine Funktion hat diesen Footprint:
|
Source code
|
1
2
3
4
5
6
7
8
9
|
Public Function FileReadLines( _
ByVal sFile As String, _
Optional ByVal bTrimLeft As Boolean = False, _
Optional ByVal bTrimRight As Boolean = False, _
Optional ByVal bRemoveEmptyLines As Boolean = False, _
Optional ByVal lTabSpaces As Long = 2, _
Optional ByVal sCutAt As String = vbNullString, _
Optional ByVal sLiteralDelimiter As String = "" _
) As String()
|
Das ist eine willkürlich herausgegriffene Beispielfunktion, die eine Datei zeilenweise einliest und diese in einem Stringarray zurückliefert. Da kommt es häufig vor, daß man z.B. nur sFile und lTabSpaces übergibt, weil alles andere mit dem Default paßt. Und dann hat man genau obiges Problem in Jabaco.
Wenn es nur eine Funktion wäre, wärs ja egal. Wenn man sich seine Funktionsbibliotheken aber über Jahre in VB6 in diesem Stil aufgebaut hat, und diesen vielen gut getesteten Kode nun übernehmen möchte, dann fehlt einem doch die Fähigkeit von Jabaco, damit umgehen zu können. Sonst muß man Hunderte von Funktionsaufrufen ändern...
Beste Grüße
iskakhan