Fehlermeldung: Konvertierung 'cli::array<Type,dimension> ^' in 'cli::array<Type,dimension> ^' nicht möglich?



  • Ich weiß leider nicht was mir diese Fehlermeldung sagen soll. 😞

    Fehler 1 error C2664: 'int System::IO::Stream::Read(cli::array<Type,dimension> ^,int,int)': Konvertierung des Parameters 1 von 'cli::array<Type,dimension> ^' in 'cli::array<Type,dimension> ^' nicht möglich

    Ich will nur etwas aus einem sslStream in einen Buffer lesen:

    array<char,1>^ buffer = gcnew array<char,1>(2048);
    bytes = ssls->Read( buffer, 0, 2048 );
    

    Verlangt er eventuell einen anderen typen als char in dem array?

    Leider habe ich kein sslStream Client beispiel für C++/CLI gefunden, sondern nur Beispiele für C#. Eventuell hat jemand einen link zu einem Beispiel in C++/CLI? Dort müsste dann auch ein entsprechender Teil mit Buffer und Read-Operation stehen.



  • In der msdn gibt es das Beispiel:

    static String^ ReadMessage( SslStream^ sslStream )
       {
    
          // Read the  message sent by the client.
          // The client signals the end of the message using the
          // "<EOF>" marker.
          array<Byte>^buffer = gcnew array<Byte>(2048);
          StringBuilder^ messageData = gcnew StringBuilder;
          int bytes = -1;
          do
          {
    
             // Read the client's test message.
             bytes = sslStream->Read( buffer, 0, buffer->Length );
    
             // Use Decoder class to convert from bytes to UTF8
             // in case a character spans two buffers.
             Decoder^ decoder = Encoding::UTF8->GetDecoder();
             array<Char>^chars = gcnew array<Char>(decoder->GetCharCount( buffer, 0, bytes ));
             decoder->GetChars( buffer, 0, bytes, chars, 0 );
             messageData->Append( chars );
    
             // Check for EOF or an empty message.
             if ( messageData->ToString()->IndexOf( L"<EOF>" ) != -1 )
             {
                break;
             }
          }
          while ( bytes != 0 );
    
          return messageData->ToString();
       }
    

    Also mal mit Byte versuchen.



  • Danke! Mit Byte funktioniert es einwandfrei.

    Nur warum gibt er in solchen Fällen keine Aussagekräftige Fehlermeldung aus?

    Nun weiß ich jedoch wonach ich suchen muss wenn ich mal vergleichbare Meldungen bekomme.



  • Osbios schrieb:

    Nur warum gibt er in solchen Fällen keine Aussagekräftige Fehlermeldung aus?

    Die Fehlerliste ist oft unvollständig. Schau mal im Reiter "Ausgabe", da steht unter der Fehlermeldung bestimmt noch sowas wie "[ with Type = char, dimension = 1]".


Anmelden zum Antworten