array<float>^ zu array<double>^ casten



  • Hallo, ich stehe gerade vor dem Problem ein managed float array in ein managed double zu casten. Ich bekomme die Werte aus einer Geräte DLL (C DLL) und möchte diese aus Gründen der Genauigkeit (weitere komplexe Berechnungen wie Matrixoperationen) in ein double array casten.

    Die Frage ist jetzt, wie bekommt man elegant Werte von x nach y

    array<float>^ x //von x
    array<double>^ y // nach y
    

    Bisher habe ich es so gelöst, dass ich jeden Wert von Float in Double Caste und in das neue Array einfüge. Jedoch halte ich die Variante für äußerst dirty und nicht gerade zeitsparend.



  • Hallo, ich habe es mit der Methode ConvertAll gelöst.

    Converter<float, double>^ converter =	gcnew Converter<float, double>(&Convert::ToDouble);
    doublearray = Array::ConvertAll(floatarray, converter);
    

    Ich habe auch noch die Methode Cast entdeckt, doch leider wird die Methode in CLI garnicht angezeigt. Wie wäre denn diese Methode zu verwenden? So richtig werde ich aus der Doku zu Cast nicht schlau.

    http://msdn.microsoft.com/de-de/library/bb341406.aspx



  • Bernd1972 schrieb:

    Hallo, ich habe es mit der Methode ConvertAll gelöst.

    [cli]Ich habe auch noch die Methode Cast entdeckt, doch leider wird die Methode in CLI garnicht angezeigt. Wie wäre denn diese Methode zu verwenden? So richtig werde ich aus der Doku zu Cast nicht schlau.

    http://msdn.microsoft.com/de-de/library/bb341406.aspx

    Das ist eine Extension Method, die eigentlich System::Linq::Enumerable::Cast<>() heisst.
    Wenn du sie verwendest hast du aber kein Array mehr, sondern nur noch ein System::Collection:Gerneric::IEnumerable<>. (Was über System::Linq::Enumerable::ToArray in ein Array umgewandelt wird)

    Dies ist eigentlich für c# und VB.Net gedacht wo diese extrensionmethods als Array-Member angezeigt werden
    .
    Aber jetzt wird es wirklich Zeit fürs Jochen Kalmbachs Standardantwort für C++/CLI Fragen.


Log in to reply