Typen konvertieren



  • Solltest Du auch nicht tun, weil Double in .NET groß geschrieben wird. 🙄



  • Gross oder klein spielt keine Rolle, da der Compiler, wenn mit "/clr" gestartet, es aus einem kleines "double" intern ein "grosses" macht 😉



  • Jochen Kalmbach schrieb:

    Gross oder klein spielt keine Rolle, da der Compiler, wenn mit "/clr" gestartet, es aus einem kleines "double" intern ein "grosses" macht 😉

    Na hab ich ein Glück, dass der Compiler so schlau ist. Mir graute es schon davor, in meinem Programm sämtliche "double"s durch "Double"s ersetzen zu müssen. Allerdings hab ich ja dann beim lernen mal wieder nicht aufgepasst. In VC2003 war es ja noch ein "double", wenn ich es da nicht auch schon falsch gemacht habe.

    Gruß
    physici



  • physici_errantes schrieb:

    Na hab ich ein Glück, dass der Compiler so schlau ist. Mir graute es schon davor, in meinem Programm sämtliche "double"s durch "Double"s ersetzen zu müssen. Allerdings hab ich ja dann beim lernen mal wieder nicht aufgepasst. In VC2003 war es ja noch ein "double", wenn ich es da nicht auch schon falsch gemacht habe.

    Gruß
    physici

    Vielleicht hast Du ja nicht ganz aufgepasst.
    Der eine Datentyp ist der von ISO C++ und der andere ist von C++ .NET Framework.
    Nun kannst Du ja mal selbst überlegen als was der int in .NET Framework umgesetzt wird.
    Wenn ich mit dem Fahrrad zur Arbeit fahre, fahre ich nicht anschließend mit dem Bus zurück.
    Sei es, ich habe einen Grund dafür.
    Ich hoffe Du hast bei managed und unmanaged Code genau so gut aufgepasst.

    http://www.tecchannel.de/webtechnik/entwicklung/402148/index2.html

    Verstehst Du was ich damit sagen will.
    Wenn ich jemand eine Konvertierungsmethode von C++/CLI anbiete, werde ich den Teufel tun ihn eine Datentyp von ISO C++ anzubieten.
    Sicherlich kann man managed und unmanaged Code zusammen einsetzen.
    Nur wir haben in der Schule eine aufm Rüssel bekommen wenn wir das gemacht haben.
    Und ich möchte nur das weiter geben, was ich da gelernt habe.
    Siehe new und gcnew
    Ich schreibe auch int statt der Entsprechung von C++/CLI, aber nur aus Faulheit.
    Die Entsprechung möchte ich gerne von Dir haben.
    Du schreibst sicher auch nur double statt Double um nicht die Umschalttaste zudrücken.
    Oder?



  • Hmm, wahrscheinlich hast du recht. Ich habe mir die Grundlagen mit Visual C++ 6.0 beigebracht (Zeiger, Klassen, Deklarationen etc.). In dem Buch wurde immer mit "double" gearbeitet. Von .net-Framework war da noch keine Rede.
    Anschließend habe ich mit VS2003 angefangen und dort in C++ weiter programmiert. Da der Compiler nicht meckerte, hab ich einfach so weiter gemacht. Das das "falsch" ist, hat er mir ja nicht gesagt.
    Gibt es in VS2005 eine Möglichkeit seinen Code nach solchen Sachen durchsuchen zu lassen, so dass zum Schluss nur noch "sauberer" Code übrig bleibt.



  • Das musst Du nicht machen, dass ist ja nicht falsch.
    Ich arbeite auch mit dem int statt mit dem Int32, aus Faulheit.
    Das ist aber mein Projekt, da guckt kein Dozent drüber.
    Nur wie schon gesagt, wenn ich das jemand erkläre dann bleibe ich bei den Datentypen der mit zur Methode gehört.
    Böse Überraschung erlebt man bei dem char
    Weil char und Char sind 2 verschieden Datentypen.

    System::Boolen = bool /8 Bits
    System::SByte = char / 8 Bits
    System::Byte = unsigned char / 8 Bits
    System::Int16 = short / 16 Bits
    System::UInt16 = unsigned short / 32 Bits
    System::Int32 = int / 32 Bits
    System::Int64 = long, long int oder unsigned__int64 / 64 Bits
    System::Single = float / 32 Bits
    System::Double = double / 64 Bits
    System::Char = wchar_t / 16 Bits

    Richtig heißen die Datentypen auch System::Datentyp.
    Der Datentyp Char in dieser Form existiert nicht.
    Da man aber im Regelfall das namespace System vereinbart hat, kann man den Datentyp auch ohne System angeben.



  • Doug_HH schrieb:

    Wenn ich jemand eine Konvertierungsmethode von C++/CLI anbiete, werde ich den Teufel tun ihn eine Datentyp von ISO C++ anzubieten.

    ???
    Du bringst glaube ich was durcheinander.... double ist ein *managed* Typ, wenn Du mit "/clr" compilierst!
    Du kannst auch "double::Parse(...) schreiben anstelle von "Double::Parse(...)"!

    Doug_HH schrieb:

    Sicherlich kann man managed und unmanaged Code zusammen einsetzen.

    Wie gesagt... Du setzt *nur* managed Code ein! Auch wenn Du "double" schreibst!

    Also:

    void main()
    {
      double d1 = 1;
      Double d2 = 2;
      Console::WriteLine(d1.ToString());
      Console::WriteLine(d2.ToString());
    
      d2 = double::Parse("12");
      d1 = Double::Parse("12");
    }
    

    Ist vollkommen legal und wird sogar vom Intellisence unterstützt!



  • Ist ja richtig was Du sagst Jochen.
    Nur die Dozenten haben das nicht gerne gesehen.
    Und der Schock sitzt noch tief.
    Und ConvertTo gehört doch zu. NET.

    Ja ich mach mir das ziemlich leicht.
    Da man in ISO C++ keinen managed Code verwenden kann, aber in C++/CLI.
    Setze ich ISO/C++ auf unmanaged Code und C++/CLI auf managed Code, wobei die Denkweise nicht richtig ist.
    String^ ist zum Beispiel ein verwalteter Typ



  • Ich schrieb immer "double", weil ich es nicht besser wusste. Werd mir nachher mal die MSDN reinziehen und dann in meinem Programm "search and replace" anwenden. Einfach damit ich wenigstens beim Programmieren ein bisschen konsequent bin. 🤡



  • Hallo,

    wie macht man das eigentlich beim Borland c++ Builder da geht Convert::ToDouble oder so gar nicht.

    MFG Toddy



  • Was heisst geht nicht?

    Convert::ToDouble() gehört zum .Net Framework und nicht zum Compiler.

    Ist dein Projekt ne .Net Anwendung?


Anmelden zum Antworten