Konvertierung von 'System::Int64 ^" in '__int64' nicht möglich



  • Hallo alle zusammen,

    ich arbeite mich momentan in die Welt der CLI / Windows Forms Programmierung ein. Nun habe ich folgendes Problem:

    Ich möchte einen Unix Timestamp aus einer Textdatei einlesen, diesen in ein DateTime umwandeln und beides in einer Textbox ausgeben. Leider bekomme ich folgende Fehlermeldung des Compilers:

    Fehler 2 error C2664: 'Test::Form1::UnixTimestampToDateTime': Konvertierung des Parameters 1 von 'System::Int64 ^' in '__int64' nicht möglich Form1.h 19

    Wo liegt mein Fehler?

    Der folgende Code ist unvollständig, sollte jedoch aussreichen:

    using namespace System;
    using namespace System::IO
    
    FileStream ^fs;
    StreamReader ^sr;
    
    Int64 ^Zeitstempel;
    DateTime ^DatumZeit;
    String ^zeile = "";
    
    fs = nullptr;
    sr = nullptr;
    
    fs = gcnew FileStream(dateiname, FileMode::Open);
    sr = gcnew StreamReader(fs);
    
    zeile = sr->ReadLine();
    Zeitstempel = Convert::ToInt64(zeile);
    DatumZeit = UnixTimestampToDateTime(Zeitstempel);
    Zeitstempel->Text = Convert::ToString(Zeitstempel);
    DatumZeit>Text = Convert::ToString(DatumZeit);
    
    DateTime UnixTimestampToDateTime(Int64 _UnixTimeStamp)
    {
    	return (DateTime(1970, 1, 1, 0, 0, 0)).AddSeconds(_UnixTimeStamp);
    }
    

    Vielen Dank für Eure Hilfe

    Gruß BeginnerX



  • ev:

    Int64 ^Zeitstempel in
    Int64 Zeitstempel

    umwandeln?

    Klaus



  • So bekommst Du aber die Warnung "Datenverlust" von Int64 in double.

    Also lieber so...

    FileStream ^fs; 
    StreamReader ^sr; 
    
    double Zeitstempel; 
    DateTime^ DatumZeit; 
    String^ zeile = ""; 
    
    fs = nullptr; 
    sr = nullptr; 
    
    fs = gcnew FileStream(dateiname, FileMode::Open); 
    sr = gcnew StreamReader(fs); 
    
    zeile = sr->ReadLine(); 
    Zeitstempel = Convert::ToDouble(zeile); 
    DatumZeit = UnixTimestampToDateTime(Zeitstempel); 
    Zeitstempel = Convert::ToString(Zeitstempel); 
    DatumZeit = Convert::ToString(DatumZeit); 
    
    DateTime UnixTimestampToDateTime(double _UnixTimeStamp) 
    { 
    	return (DateTime(1970, 1, 1, 0, 0, 0)).AddSeconds(_UnixTimeStamp); 
    }
    

    Gruß,

    Renke



  • Hi Klaus,

    kleine Änderung große Wirkung, habe mich aufgrund des möglichen Datenverlustes für Renke's Lösung entschieden.

    Danke euch beiden für die schnelle Antwort.

    Gruß Manuel


Anmelden zum Antworten