Writeline Kommentare auf Konsole in forms-Anwendung geht nicht



  • Hallo,

    ich versuche derzeit in VC++ Express Edition in einer Forms Anwendung writeline Kommentare auf die Console zu schicken. Es entsteht beim Compilieren keine Fehlermeldung. Jedoch werden die Kommentare nirgendwo ausgegeben.

    Kann mir von Euch einer sagen woran das liegt?

    Dank und Gruß,
    micmac78



  • Dieser Thread wurde von Moderator/in estartu aus dem Forum MFC (Visual C++) in das Forum C++/CLI mit .NET verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Poste mal Code, sonst wird Dir wohl keiner helfen können...

    Wird die Console denn geöffnet?
    Klappts denn in einer Konsolenanwendung?



  • wenn die anwendung als Windows forms Anwendung kompiliert wird, wird auch keine konsole geöffnet, also entweder als Konsolenanwendung kompilieren und in Kauf nehmen dass das Konsolenfenster immer offen ist neben der windows Forms, oder als Windows Forms kompilieren und einfach aus der Konsole herraus starten. Oder selbst ne Konsole öffnen aus der Windows Forms herraus.



  • Hallo,

    hier mein Problem nochmal etwas genauer:
    Ich versuche Kommentartexte in mein Program einzuführen, um über Zusatzinformationen rauszubekommen, welche Module es bei Ablauf durchführt.

    Ich starte das Program von Konsole aus und betätige den Button mit dem unten dargestellten Eventhandler.
    Reaktion:
    - es erscheint nur die MessageBox mit dem Meldetext.
    - es erscheint kein Meldetext auf der Konsole, weger über printf noch über Writeline.

    hier der Code des Eventhandlers:

    private: System::Void Init_Click(System::Object^ sender, System::EventArgs^ e) {
    Console::WriteLine("Initialisiert");
    printf("Initialisiert!\n");
    MessageBox::Show("Initialisiert");
    }

    Danke für Eure Hilfe,
    micmac78



  • Eine Windowsforms anwendung hat keine Konsole auf die Du was schreiben kannst. Jochen hat, hier im Forum, mal ein Codesnippet gepostet um eine Konsole zu allokieren. Ich finde es auf anhieb nicht, such mal ein wenig.

    Das Stichwort war glaub ich AllocConsole



  • Vielen Dank Euch allen!!!

    micmac78



  • Ich würde an deiner Stelle eine Art Log-Funktion einbauen. Machen div. Software-Entwickler ja auch gerne ... CloneCD z.B. Dann haust du irgendwo in deinem Programm einfach eine ListBox rein und bei jedem Command fügste diesen Text einfach per ADD in die ListBox ein. Zusätzlich würd ich dann ein kleines ContextMenuStrip hinzufügen umd die Sachen zu exportieren etc.

    Vielleicht wäre das ja eine Idee für dich 🙂



  • Hallo,

    leite deine Console um auf einen abgeleiteten TextWriter, der die Strings in eine Textbox einer Form schreibt.

    Console umleiten:

    TextBoxWriter ^writer = gcnew TextBoxWriter(form1->p_TextBox);
    Console::SetOut(textWriter);
    

    Abgeleitete TextWriter Klasse:

    ref class TextBoxWriter : System::IO::TextWriter
    {
    private:
    	System::Windows::Forms::TextBox ^m_Box;
    
    public:
    	TextBoxWriter() { this->m_Box = nullptr; }
    	TextBoxWriter(System::Windows::Forms::TextBox ^kBox)
                         { this->m_Box = kBox;
                         }
    	property System::Windows::Forms::TextBox ^p_TextBox 
    	{
    		System::Windows::Forms::TextBox ^get()
    		{
    			return this->m_Box;
    		}
    	}
    	virtual property System::Text::Encoding^ Encoding {
    		System::Text::Encoding^ get () override
    		{
    			return System::Text::Encoding::Unicode;
    		}
    	}
    	virtual void Write(System::String ^ksMessage) override;
    	virtual void WriteLine(System::String ^ksMessage) override;
    };
    

Anmelden zum Antworten