Autor Thema: Dynamisches Array  (Gelesen 3676 mal)

Offline brathaenchen

  • Junior Mitglied
  • **
  • Beiträge: 82
  • Ich liebe dieses Forum!
Dynamisches Array
« 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


Offline LuckyMan

  • Junior Mitglied
  • **
  • Beiträge: 52
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Re: Dynamisches Array
« Antwort #1 am: 16.08.05 - 10:58:58 »
Schau dir mal in der Notes-Hilfe das gute alte Redim Preserve an...

Gruß
Gruß

LuckyMan
-------------------------------------------------------

Offline brathaenchen

  • Junior Mitglied
  • **
  • Beiträge: 82
  • Ich liebe dieses Forum!
Re: Dynamisches Array
« Antwort #2 am: 16.08.05 - 11:01:26 »
ok habs gefunden danke

Offline Thomas Schulte

  • @Notes Preisträger
  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 4.388
  • Geschlecht: Männlich
  • Ich glaub mich tritt ein Pferd
Re: Dynamisches Array
« Antwort #3 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.
Thomas Schulte

Collaborative Project Portfolio and Project Management Software

"Aber wo wir jetzt einmal soweit gekommen sind, möchte ich noch nicht aufgeben. Versteh mich recht, aufgeben liegt mir irgendwie nicht."

J.R.R.Tolkien Herr der Ringe, Der Schicksalsberg

OpenNTF Project: !!HELP!! !!SYSTEM!!  !!DRIVER!!

Skype: thomasschulte-kulmbach

Offline LuckyMan

  • Junior Mitglied
  • **
  • Beiträge: 52
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Re: Dynamisches Array
« Antwort #4 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ß
Gruß

LuckyMan
-------------------------------------------------------

Offline brathaenchen

  • Junior Mitglied
  • **
  • Beiträge: 82
  • Ich liebe dieses Forum!
Re: Dynamisches Array
« Antwort #5 am: 16.08.05 - 11:12:26 »
Hmm irgendwie haut das nicht hin. Bekommen

bei ReDim Preserve myNames(anzahl)  ein subscrit ot of range??

Glombi

  • Gast
Re: Dynamisches Array
« Antwort #6 am: 16.08.05 - 11:13:40 »
Tipp doch bitte mal ein paar Codezeile mehr ein.

Andreas

Offline Thomas Schulte

  • @Notes Preisträger
  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 4.388
  • Geschlecht: Männlich
  • Ich glaub mich tritt ein Pferd
Re: Dynamisches Array
« Antwort #7 am: 16.08.05 - 11:16:45 »
Ja irgendwie fehlt da ein bischen was. der erste Dim zum Bleistift. Und der Typ auch.
Thomas Schulte

Collaborative Project Portfolio and Project Management Software

"Aber wo wir jetzt einmal soweit gekommen sind, möchte ich noch nicht aufgeben. Versteh mich recht, aufgeben liegt mir irgendwie nicht."

J.R.R.Tolkien Herr der Ringe, Der Schicksalsberg

OpenNTF Project: !!HELP!! !!SYSTEM!!  !!DRIVER!!

Skype: thomasschulte-kulmbach

Offline brathaenchen

  • Junior Mitglied
  • **
  • Beiträge: 82
  • Ich liebe dieses Forum!
Re: Dynamisches Array
« Antwort #8 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



Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Dynamisches Array
« Antwort #9 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
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline brathaenchen

  • Junior Mitglied
  • **
  • Beiträge: 82
  • Ich liebe dieses Forum!
Re: Dynamisches Array
« Antwort #10 am: 16.08.05 - 11:42:33 »
genau das hab ich auch gedacht aber dann bekomm ich ein Subscript out of Range...

Glombi

  • Gast
Re: Dynamisches Array
« Antwort #11 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
 

Offline brathaenchen

  • Junior Mitglied
  • **
  • Beiträge: 82
  • Ich liebe dieses Forum!
Re: Dynamisches Array
« Antwort #12 am: 16.08.05 - 11:51:49 »
wieso kann die dann aus dem Ruder laufen?

Glombi

  • Gast
Re: Dynamisches Array
« Antwort #13 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

Offline brathaenchen

  • Junior Mitglied
  • **
  • Beiträge: 82
  • Ich liebe dieses Forum!
Re: Dynamisches Array
« Antwort #14 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?

Glombi

  • Gast
Re: Dynamisches Array
« Antwort #15 am: 16.08.05 - 11:58:27 »
Ich gebs auf  :-:

Andreas

Offline Thomas Schulte

  • @Notes Preisträger
  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 4.388
  • Geschlecht: Männlich
  • Ich glaub mich tritt ein Pferd
Re: Dynamisches Array
« Antwort #16 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.
« Letzte Änderung: 16.08.05 - 12:32:58 von Thomas Schulte »
Thomas Schulte

Collaborative Project Portfolio and Project Management Software

"Aber wo wir jetzt einmal soweit gekommen sind, möchte ich noch nicht aufgeben. Versteh mich recht, aufgeben liegt mir irgendwie nicht."

J.R.R.Tolkien Herr der Ringe, Der Schicksalsberg

OpenNTF Project: !!HELP!! !!SYSTEM!!  !!DRIVER!!

Skype: thomasschulte-kulmbach

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Dynamisches Array
« Antwort #17 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

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz