bei Variant Typ Kopie statt Reference?

  • hallo
    habe wieder eine Frage.


    WIe kann man einen "Klone" erstellen von der Variable des Typs Variant ?
    habe das Problem dass bei mir rDates in der Schleife immer den Wert des letzten Datums annimmt.


    Redim Preserve rDates(elem+input) //


    Schleife ...(elem+i) to ...


    Set rDates(i)=rDates(i-1)
    Call rDates(i).AdjustDay(rInterval)


    im Debugger sieht man dass es richtig ausgerechnet wird, und dann doch "überschrieben" mit der Objekt Reference.


    habe in Hilfe ByVal gefunden für Argumente , demit Übergabe by Value stattfinden ...
    wie kann man so was ähnliches auch bei Variant-Array machen
    copyArray, cloneArray oder so ?


    Gruss Nelli

  • Sorry, aber Deine Frage ist unverständlich, Nelli.


    Einen "Clone" bekämst Du ja ganz einfach mit
    Dim rDates2 As variant
    rDates2 = rDates


    Dein Problem liegt aber ganz offensichtlich ganz woanders. Und das solltest Du genauer beschreiben, denn unsere Kristallkugeln sind alle schon im Osterurlaub.


    Bernhard


    PS: Wenn eine Problemstellung richtig durchdacht wird, muss man sie häufig gar nicht mehr formulieren, weil man dabei schon die Lösung gefunden hat. Und wenn dem nicht so ist, hilft die durchdachte Beschreibung den Hilfswilligen enorm. (Alte Programmiererweisheit)

  • also ich versuch es noch mal


    es geht nicht um einfach kopieren.
    ich lese den Array von einem Feld ab.
    Muss ihn dann etwas erweitern mit neuen Daten.


    zum Ausrechnen deuer Daten wird das Vorherige ELement des Arrays genommen, neues Datum ausgerechnet und im aktuellen ELement gespeichert.
    Klingt einfach.
    aber ..
    in der Scheife werden mit jedem Schritt die Werte (angefangen vom letzten ausgelesenen Datum, was anfangs das Letzte Datum im Array war) durch auktuel ausgerechnetes Datum geändert.
    dH wenn ich Schleife 4 Mal wiederhole, habe ich 5 gleiche Daten am Ende des Arrays mit dem Wert der letzten Berechnung .


    Ich weiß jetzt dass es bei Variant Arrays nur Referenz von ihm in eine Variable kopiert wird.


    Es ist also egal ob ich davor in einer zB forall Schleife alle Werte in ein anderes Array speichere und dann damit arbeite.
    Es ist bei mir dann immer so dass die Werte des Arrays sich ändern und de Referenz ebenso dann .
    Übergabe Call by Reference ...


    zB in C kann kan *arr=altesArray oder so was machen, dann wird ein "unabhängiges" arr erstellt, dann kann ich in dem Werte egal wie verändern ohne dass sich die Werte des altesArray ändern ...


    schwirig das Problem zu beschreiben . (habe auch nicht genug Deutschkenntnisse für :):) um das mit konkreteren Sätzen zu formulieren)


    hoffe jetzt ich klar wo mein Problem ist ...


    Gruss Nelli

  • Also ich für meinen Teil verstehe es immer noch nicht.


    Wenn Du in LS (wie in C) eine Zuweisung wie
    arr = AltesArray
    machst, dann hast zwei völlig unabhängige Variable, egal ob Variant, Integer, String ...


    Bernhard