LotusScript: Unklarheiten zu unterschiedlichen Listen.

  • Hi,


    ich habe mich schon des öfteren gewundert warum es wohl so unterschiedliche Arten von Listen in LotusScript gibt und konnte mir bisher nur aus anderen BeispielSkripten aus den einzelnen einen Reim machen wie sie (ungefähr) funktionieren. Die DesignerHilfe hat mich eher verwirrt da irgendwie alles unter den Namen List fällt.


    Hier mal die "Listen-Arten" die mir so aufgefallen sind


    Dim Variable(1 To n) As Datatype
    Dim Variable() As DataType
    Dim Variable List As Datatype


    Kann mir da mal jemand ein wenig Nachhilfe geben wie die einzelnen Arten richtig heissen(englisch)? Damit ich wenigestens in der Hilfe mich besser zurechtfinde?



    Grüsse


    PS: Falls noch jemand etwas mehr zeit hat:


    -Was ist der Unterschied zwischen der ersten Variante oben und einem einfachen Array?
    -Warum funktioniert bei der letzten Variante von oben die Ubound-function nicht? Alternative?

  • Dim Variable(1 To n) As Datatype


    Ist ein Array mit Elementen vom Index 1 - n


    Dim Variable() As DataType


    Ist ebenfalls ein Array aber ein dynamnischer, der mit REDIM verändert werden kann


    Dim Variable List As Datatype


    Ist eine Liste


    Der Unterschied zwischen einer Liste und einem Array besteht in der Art des Zugriffs.
    Bei einem Array definierst du entsprechende Dimensionen, die du jeweils über eine Nummer ansprichst.
    Bei einer Liste können die Elemente auch über beliebige andere Bezeichner angesprochen werden.

  • Ist doch eigentlich ganz einfach :D


    dim bla(x,y) as Datentyp ist ein Array bei dem die Anzahl der Elemente beim Deklarieren festgelegt wird. Damit ist auch schon der gesamte Speicherbedarf der Variablen festgelegt.


    Bei dim bla() as Datentyp wird die Variable erstmal deklariert, aber die Anzahl der Elemente und damit der Speicherbedarf wird noch nicht festgelegt. Meistens aus dem Grund dass sich die Anzahl der benötigten Elemente erst im Laufe des Codes ergibt.
    Dann wird man mit einem Redim bla(x,y) die Anzahl der Elemente Festlegen.


    Beim dim bla LIST as Datentyp wird nie festgelegt wie viele Elemente die Liste hat. Man kann Elemente hinzufügen und wegnehmen und die Anzahl ändert sich entsprechend. Deswegen geht natürlich auch kein UBOUND weil es garnicht festgelegt ist.


    Eber ehrlich gesagt: das mit dem LIST hab ich noch nie benutzt. Keine Ahnung wozu das gut sein soll.

  • Es laeuft nicht alles unter Listen; die ersten beiden heissen bei mir Arrays.
    Dim Variable(1 To 5) As Datatype
    Hier wird ein Array erstellt mit einer festen Anzahl von Elementen, naemlich 5 Elemente und die laufenden Nummern von 1 to 5.


    Dim Variable(5) As Datatype


    Hier wird ein Array erstellt mit einer festen Anzahl von Elementen, naemlich standardmaessig 6 Elemente und die laufenden Nummern von 0 to 5.


    Dim Variable() As Datatype


    ergibt ein nicht initiiertes Array, welches noch keine Elemente besitzt und ich noch nicht weiss, wieviele Elemente kommen werden. Mit redim wird es spaeter mit Elementen gefuellt. Bei dieser Art kann ich dann auch Variablen fuer die Bestimmung der Elemtenanzahl verwenden.


    Dim Variable List As Datatype
    Hierbei wird eine Liste definiert...kein Array.

  • Hi,


    dim array(3) as datatyp -> Array der angegebenen Größe, beginnend mit 0 (also 4 Einträge) -> per Option Base auch änderbar
    array(0)
    array(1)
    array(2)
    array(3)


    dim array(5 to 7) as datatype -> Array mit (bis-von) Einträgen
    array(5)
    array(6)
    array(7)


    dim array() as datatype -> dynamisches, leeres Array ohne Einträge
    -> muß mit Redim (optional preserve) Erweitert werden
    Bsp. Redim preserve array(3)
    array(0)
    array(1)
    array(2)
    array(3)


    Dim array List As Datatype -> ein "array" mit benamten Zugriff


    Bsp
    Dim Personal List as string -> Personal(Personalnummer) = "Name"


    Personal("0815") = "Max Mustermann" <- zum Eintragen
    erg = Personal("0815") <- zum Auslesen -> erg="Max Mustermann)
    erase Personal("0815") <- zum Löschen eines einzelnen Eintrags


    erase Personal <- zum Löschen der gesamten Liste





    In der Hiilfe würde ich unter Dim, Felder oder List suchen.

    Für jedes Problem gibt es eine einfache Lösung, die es noch schlimmer macht.

  • Wow,


    danke! So viel wollt ich gar nicht wissen und eigentlich wusste ich ja bereits wie man mit den Dingern umgeht - mir war nur die Abgrenzung nicht so ganz klar. Aber jetzt weiß ich Bescheid!


    Grüsse