Übergabe einer Referenz **gelöst**



  • Hi Leute,

    wenn ich

    array <unsigned long> ^rgArray = gcnew array<unsigned long>(0);
    

    mache und diese Array dann an eine Funktion übergebe, die eine Referenz benötigt. Entsteht ein Fehler das ich 0 nicht übergeben kann.

    f(rgArray);
    //f(array <unsigned long> ^rgArray);
    

    Obwohl ich ja eigentlich eine Array der Länge 0 habe, und die Array doch trotzdem da ist?

    MfG



  • OK das Problem ist komplizierter

    wenn ich die Array so Fülle

    for (udwIndex=0; udwIndex<uwNumberOfDevices; udwIndex++)
    		rgArray[udwIndex] = pArray[udwIndex];
    

    geht es.

    mache ich es so:

    Runtime::InteropServices::Marshal::Copy((IntPtr)pArray,(array<int> ^)rgArray,0,uwNumberOfDevices=0);
    

    bringt der dann beim aufruf der Funktion wenn die Länge 0 ist den Fehler, dass er 0 nicht übergeben kann. Woran ligt das?

    MfG



  • es lag an der Kopierfunktion der Pointer auf die Daten (((IntPtr)pArray) darf nicht NULL sein sonst wirft sie eine Exeption.



  • Destiniy schrieb:

    es lag an der Kopierfunktion der Pointer auf die Daten (((IntPtr)pArray) darf nicht NULL sein sonst wirft sie eine Exeption.

    Nein, wirklich - wundert mich aber...



  • theta schrieb:

    Nein, wirklich - wundert mich aber...

    Ihr seid alle so Klug, möchte gerne mit zu euch gehören. 🙄


Anmelden zum Antworten