Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: brathaenchen am 16.08.05 - 10:56:08

Titel: Dynamisches Array
Beitrag von: brathaenchen am 16.08.05 - 10:56:08
Hi

wie kann ich ein Array dynamisch definieren?
Ich habe zur Zeit:
Dim st_Fields(1 To 100) As String
Möchte aber gerne das es dynamisch ist.
Dim st_Fields() As String und Dim st_Fields(collection2.count) As String probiert aber das funktionierte leider nicht.

Danke schon mal!!!



   Dim collection2 As NotesDocumentCollection
   Dim currentResponse As NotesDocument
   Set collection2 = doc.Responses
   
   Dim number As Long
   number = 1
   Dim csv As CSVFile
   
   Dim st_Fields(1 To 100) As String
   
   Set currentResponse = collection2.GetFirstDocument ()
   While Not currentResponse Is Nothing
      st_Fields(number) = currentResponse.CSVField(0)
      number = number + 1
      'Msgbox "Hier kommt jetzt was "  + currentResponse.CSVField(0)
      Set currentResponse = collection2.GetNextDocument ( currentResponse )
   Wend

Titel: Re: Dynamisches Array
Beitrag von: LuckyMan am 16.08.05 - 10:58:58
Schau dir mal in der Notes-Hilfe das gute alte Redim Preserve an...

Gruß
Titel: Re: Dynamisches Array
Beitrag von: brathaenchen am 16.08.05 - 11:01:26
ok habs gefunden danke
Titel: Re: Dynamisches Array
Beitrag von: Thomas Schulte am 16.08.05 - 11:08:36
Das so einzusetzen kann mit deutlichen Performanceeinbrüchen bestraft werden, speziell dann wenn man es in der Art eines Zählers verwendet. Je nach Kontext ist es sinnvoller mit Lists oder mit einem Redim zu arbeiten vor dem man die Anzahl der benötigten Elemente rausbekommt.
Titel: Re: Dynamisches Array
Beitrag von: LuckyMan am 16.08.05 - 11:11:38
Ok ok...aber er sprach auch nicht davon, dass er ein schnelles Array haben will  :o :o

Gruß
Titel: Re: Dynamisches Array
Beitrag von: brathaenchen am 16.08.05 - 11:12:26
Hmm irgendwie haut das nicht hin. Bekommen

bei ReDim Preserve myNames(anzahl)  ein subscrit ot of range??
Titel: Re: Dynamisches Array
Beitrag von: Glombi am 16.08.05 - 11:13:40
Tipp doch bitte mal ein paar Codezeile mehr ein.

Andreas
Titel: Re: Dynamisches Array
Beitrag von: Thomas Schulte am 16.08.05 - 11:16:45
Ja irgendwie fehlt da ein bischen was. der erste Dim zum Bleistift. Und der Typ auch.
Titel: Re: Dynamisches Array
Beitrag von: brathaenchen am 16.08.05 - 11:31:52
Also hier kommt der Code:



   Dim collection2 As NotesDocumentCollection
   Dim currentResponse As NotesDocument
   Set collection2 = doc.Responses
   
   Dim number As Long
   number = 1
   Dim csv As CSVFile
   
   Dim st_Fields() As String
   ReDim Preserve st_Fields(collection2.count)
   Set currentResponse = collection2.GetFirstDocument ()
   While Not currentResponse Is Nothing
      st_Fields(number) = currentResponse.CSVField(0)
      number = number + 1
      Set currentResponse = collection2.GetNextDocument ( currentResponse )
   Wend


Titel: Re: Dynamisches Array
Beitrag von: Axel am 16.08.05 - 11:40:39
Hi,

wenn du das so machst, dann brauchst du kein Preserve.

  Dim st_Fields() As String
   ReDim st_Fields(collection2.count)
   Set currentResponse = collection2.GetFirstDocument ()
   While Not currentResponse Is Nothing
      st_Fields(number) = currentResponse.CSVField(0)
      number = number + 1
      Set currentResponse = collection2.GetNextDocument ( currentResponse )
   Wend

Axel
Titel: Re: Dynamisches Array
Beitrag von: brathaenchen am 16.08.05 - 11:42:33
genau das hab ich auch gedacht aber dann bekomm ich ein Subscript out of Range...
Titel: Re: Dynamisches Array
Beitrag von: Glombi am 16.08.05 - 11:50:07
Starte mit
 number = 0
und nicht mit
 number = 1
sonst läuft die Schleife aus dem Ruder ;)

Andreas
 
Titel: Re: Dynamisches Array
Beitrag von: brathaenchen am 16.08.05 - 11:51:49
wieso kann die dann aus dem Ruder laufen?
Titel: Re: Dynamisches Array
Beitrag von: Glombi am 16.08.05 - 11:53:59
Nimm mal Bleistift und Papier und dann mache ein Beispiel.

collection2.Count = 2
number = 1
number = 2
number = 3 - oops

Andreas
Titel: Re: Dynamisches Array
Beitrag von: brathaenchen am 16.08.05 - 11:55:29
ja ok stimmt aber das hätte an der stelle nix gemacht...
Hat einer eine idee warum das mit dem  Array nicht hinhaut?
Titel: Re: Dynamisches Array
Beitrag von: Glombi am 16.08.05 - 11:58:27
Ich gebs auf  :-:

Andreas
Titel: Re: Dynamisches Array
Beitrag von: Thomas Schulte am 16.08.05 - 12:01:30
Sag mal liest du auch was man dir schreibt?  ::)

number = 1 funktioniert nicht weil Arrays immer mit 0 anfangen zu zählen. und wenn du jetzt immer um eins erhöhst kommst du nicht am ende des definierten Arrays an sondern bei Arraysize+1. Das gibt es aber nicht.

Und bitte tu dir und uns einen Gefallen. Nimm dir ein paar Kurse zur Hand mach die durch und verwende die Forumsmitglieder nicht als Ausbilder. Darauf reagieren wir nämlich mit zunehmender Dauer immer empfindlicher.
Titel: Re: Dynamisches Array
Beitrag von: koehlerbv am 17.08.05 - 00:08:38
Noch ein Auszug aus der DesignerHelp:

Zitat
If the module does not include an Option Base statement, the default lower bound for all dimensions of all arrays is 0. For example, a one-dimensional array of 10 elements would use subscripts 0 through 9.

Und das findet sich an etlichen Stellen. Lesen bildet. Wirklich.

Bernhard