Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: jmanuel am 30.12.05 - 11:50:56

Titel: Obere Schranke eines 2 dimensionales Array ?
Beitrag von: jmanuel am 30.12.05 - 11:50:56
Hallo,

kann mir jemand sagen wie ich die obere Schranke eines 2-dim Array in LotusScript bekomme ?

Irgendwie mit Ubound.. aber ich bekomm das nicht hin.

Grüße,
Manuel
Titel: Re: Obere Schranke eines 2 dimensionales Array ?
Beitrag von: Johnson am 30.12.05 - 12:02:38

Ubound(Array, Dimension)
Titel: Re: Obere Schranke eines 2 dimensionales Array ?
Beitrag von: jmanuel am 30.12.05 - 12:42:15
Hallo nochmal,

Danke für die erste Antwort.

hab nun noch eine weitere Frage. Das 2-dim Array ist ein dynamisches Array. Nun möchte ich das Array erweitern. z.B.

Dim a() As String
Dim b() As String   

Redim  a( 0 , 1 )
Redim  b( 0 , 1)

...füllen

Redim  Preserve  a( 1 , 1 )   <------------- Subscript out of range
Redim  Preserve  b( 1 , 1)


Wieso bekomm ich da den Fehler  ?

Grüße,
Manuel
Titel: Re: Obere Schranke eines 2 dimensionales Array ?
Beitrag von: Johnson am 30.12.05 - 13:28:46
In LS und VB kannst du nur die letzte Dimension verändern.

Code
Redim  1( 0 , 1)
Redim  Preserve  1( 1 , 1)
.. verändert aber die erste.

Du müsstest jetzt eine Funktion bauen ("RedimArray") die als Parameter das Quellarray und die Obergrenzen der Dimensionen erwartet.
In der Funktion dimensionierst du ein Tmp-Array anhand der übergebenen Dimensionen, füllst das Tmp-Array mit den Daten des Quellarrays und gibst es zurück.
Titel: Re: Obere Schranke eines 2 dimensionales Array ?
Beitrag von: Johnson am 30.12.05 - 13:33:32
Oder:

Du drehst das Array einfach. Was bei einem zweidimensionalen Array noch nachvollziehbar ist. Also alle Daten, die du jetzt in der ersten Dimension stehen hast in die zweite einlesen/auslesen und umgekehrt.
Titel: Re: Obere Schranke eines 2 dimensionales Array ?
Beitrag von: Tode am 30.12.05 - 15:05:34
oder Du arbeitest mit einem eigenen Typ.

Mir ging es oft so: ich erstellte ein Mehrdimensionales Array, und musste mir dann später mühsam wieder raussuchen, wofür jetzt schon wieder welche Dimension war.

Viele dieser Aufgaben (im zweidimensionalen Bereich) lassen sich durch eigene Typen ersetzen.

simples Beispiel:

Du willst Mitarbeiterdaten zwischenspeichern.
Dazu gehören Vorname, Nachname, Telefon.

Du nimmst ein 2-Dim. Array:

ma( 0 , 0 ) = "Tido"
ma( 0 , 1 ) = "Test"
ma( 0 , 2 ) = "123"
ma( 1 , 0 ) = "Trude"
ma( 1 , 1 ) = "Testerin"
ma( 1 , 2 ) = "0815"

oh oh: Dimensionen vertauscht, einen neuen Mitarbeiter können wir über Redim nicht mehr erfassen.

Mit einem eigenen Typ aber:
Type ma
  vorname as String
  nachname as String
  tel as String
End Type

Dim alleMA( ) as ma

ma(0).vorname = "Tido"
ma(0).nachname = "Test"

Redim preserve ma( 1 )
ma(1).vorname = "Trude"
ma(2).nachname = "Testerin"

ganz abgesehen von der Lesbarkeit des Codes erweiterst Du auch Deine Möglichkeiten sehr.

HTH
Tode
Titel: Re: Obere Schranke eines 2 dimensionales Array ?
Beitrag von: flaite am 30.12.05 - 16:15:08
oder Du arbeitest mit einem eigenen Typ.


Sehe ich auch so.
Datenstrukturen wie List, Type oder Class sind eigentlich ziemlich einfach und können die Arbeit oft erleichtern. Die Designer Hilfe beschreibt das gut und da gibts auch immer Beispiele.
Wie Tode sagte: Ein Array aus Types. Für die 2. Dimension sorgt dann der Type selbst.

Gruß Axel
Titel: Re: Obere Schranke eines 2 dimensionales Array ?
Beitrag von: Johnson am 30.12.05 - 16:54:13
Prinzipell geb ich euch ja recht.
Nur ist die Verwendung in der Fragestellung nicht ganz ersichtlich.

Beispielsweise ein Excel-Report.
Mann baut ein zweidimensionales Array auf, das der Tabelle entspricht und klatscht das ganze Teil mit einmal rein.
Mit einen UDT, einer List oder Class kommt man da nicht weit. Und anderswo hab ich noch nie ein zweidimensionales Array gebraucht.

Aber klar das geht auch.