mr-brain: arrays dynamisch erzeugen

kann man in asp arrays dynamisch so erzeugen, dass man den befehl redim nicht benötigt? ich stelle mir das idealerweise so vor:
dim array()
und jetzt so viel wie ich will hinzufügen:
array(0) = "dies"
array(1) = "das"

gibt es hierfür einen befehl oder einen trick. ich weiß nämlich nicht wie viele arrays vorhanden sind, und möchte eine pauschale dimensionierung umgehen.

vielen dank
mr-brain

  1. kann man in asp arrays dynamisch so erzeugen, dass man den befehl redim nicht benötigt? ich stelle mir das idealerweise so vor:
    dim array()
    und jetzt so viel wie ich will hinzufügen:
    array(0) = "dies"
    array(1) = "das"

    gibt es hierfür einen befehl oder einen trick. ich weiß nämlich nicht wie viele arrays vorhanden sind, und möchte eine pauschale dimensionierung umgehen.

    Hallo, mr. brain,

    also ich weiss es auch nicht. Deswegen helfe ich mir für solche Zwecke (in eindimensionalen Fällen) folgendermassen mit einem 'datenbanklosen' Daten-Objekt:

    Dim rs

    Set rs = CreateObject("ADODB.Recordset")
    rs.Fields.Append "Spalte0", adChar
    rs.Open

    rs.AddNew
    rs("Spalte0") = "dies"
    rs.AddNew
    rs("Spalte0") = "das"

    usw. solange noch Zeilen gefüllt werden müssen.

    Das ist allerdings nicht auf meinem Mist gewachsen. Genaueres über die Möglichkeiten dieses Tricks bei

    http://www.aspheute.com/artikel/20000516.htm

    Gruss
    Uwe Nohl

  2. Hallo,

    nein, ohne Redim geht das dynamisch nicht, aber welche Sorgen hast Du mit dem Redim eigentlich ? Gut, es tut der Systemperformance nicht unbedingt gut, einen Redim beispielsweise in einer Schleife ständig durchzuführen, aber mit ein bischen Verwaltungsaufwand kann man das schon machen.

    Dim Data()
    ...
    Redim Data(10) 'Erstmal 10 Felder reservieren
    ...
    For I=1 To AnzahlSchleifenDurchläufe
    ...
    If UBound(Data) < I Then Redim Preserve Data(I+10)
    Data(I) = "Das ist Element " & I
    ...
    Next

    Wie Du siehst, wird hier das Array nur jedes 10. Mal redimensioniert.

    MfG Christoph