Typdeklaration mit string^



  • verwirrend finde ich auch, dass intellisense funktionen vorschlägt, eine kompilierung erfolgt und bei anschließendem aufruf existieren diese Funktionen nicht mehr...
    Bsp:

    msg->Substring(32)->StartsWith("123") // wird beim eintippen vorgeschlagen, später aber nicht mehr vorhanden laut überwachung
    


  • daniel12345 schrieb:

    verwirrend finde ich auch, dass intellisense funktionen vorschlägt, eine kompilierung erfolgt und bei anschließendem aufruf existieren diese Funktionen nicht mehr...
    Bsp:

    msg->Substring(32)->StartsWith("123") // wird beim eintippen vorgeschlagen, später aber nicht mehr vorhanden laut überwachung
    

    Ja, IntelliSense hat da manchmal etwas Probleme.
    Simon



  • daniel12345 schrieb:

    danke, sowas in der Art hab ich mir schon gedacht... aber wieso kann ich den Handle nicht als Funktionsaufruf übergeben? muss ich davor noch konvertieren?

    Das kommt auf die Signattur von Logger::NewMsg(..) an. Wie sieht die denn aus?
    Simon



  • DAs ist die Signatur in der Logger.h:

    String^ NewMsg(String^);
    


  • daniel12345 schrieb:

    DAs ist die Signatur in der Logger.h:

    String^ NewMsg(String^);
    

    Das scheint zu passen. Und was geht jetzt nicht?
    Ist msg leer? Ist message leer?

    Simon



  • ja genau, das was übergeben wird, ist einfach leer. in der überwachung steht dann, dass die Variable ausserhalb des Zugriffsbereiches ist.



  • also, wenn ich msg (als string^) übergebe, ist in NewMsg die Variable leer...



  • Zeig mal ein wenig mehr Code oder ein Mini Bsp. wo das Problem auftritt.
    An dem was ich hier bis jetzt sehe ist nicht ungewöhnliches oder falsches.

    Simon



  • also, das ist die Logger.cpp:

    #include "stdafx.h"
    #include "string.h"
    
    using namespace System;
    using namespace System::Windows::Forms;
    using namespace System::Net::Sockets;
    
    void Logger::ReadMsg(String^ message)
    {
    String^ msg;
    msg = message;  //Zuweisung funktioniert
    this->GenMessage(msg); // Übergabe an Funktion
    
    }
    
    void Logger::GenMessage(String^ s_Text)
    {
    if (s_Text->Substring(32)->StartsWith("123")) //Fehler: Funktion existiert nicht, s_Text ist leer
    	this->SendMessage("Erfolgreich"); //Funktioniert
    }
    

    das ist im Prinzip alles... Hab mir jetzt grade mal die trial-version von visual studio runtergeladen, vlt. wirds damit ja einfacher



  • void Logger::GenMessage(String^ s_Text) 
    { 
    if (s_Text->Substring(32)->StartsWith("123")) //Fehler: Funktion existiert nicht, s_Text ist leer 
        this->SendMessage("Erfolgreich"); //Funktioniert 
    }
    

    Was heisst hier Funktion existiert nicht?
    Das würde dir der Compiler schon mitteilen.

    Hab mir jetzt grade mal die trial-version von visual studio runtergeladen, vlt. wirds damit ja einfacher

    Wie hast Du denn bis jetzt programmiert? 😮
    Also mit debuggen findet man schon recht viel raus, nur falls Du noch nicht gedebuggt hast...

    Simon



  • hab bisher mit der express-version programmiert, und wechsle jetzt mal probeweise auf die studio-trial...

    theta schrieb:

    void Logger::GenMessage(String^ s_Text) 
    { 
    if (s_Text->Substring(32)->StartsWith("123")) //Fehler: Funktion existiert nicht, s_Text ist leer 
        this->SendMessage("Erfolgreich"); //Funktioniert 
    }
    

    Was heisst hier Funktion existiert nicht?
    Das würde dir der Compiler schon mitteilen.

    Nein, der Compiler teilts mir nicht mit, kompiliert wirds ohne probleme. Aber beim debuggen sagt dann der Überwacher, dass s_Text->Substring(32) nicht vorhanden ist. Hab grade etwas weiter getestet, s_Text->Contains funktioniert. Und um die Weitergabe zwischen Funktionen zu vermeiden, habe ich einen string^ als public in der Logger.h definiert... damit gehts bisher, aber trotzdem verwirrend.


Anmelden zum Antworten