Problem mit +TextBox1->Text



  • Hey... Hab ein Problem...
    Hier erstmal der Code, der Probleme macht.

    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) { 
                 string cmd = "start http://de.wikipedia.org/wiki/"+Form1::textBox1->Text;   
        system(cmd.c_str()); 
                 } 
        private: System::Void textBox1_TextChanged(System::Object^  sender, System::EventArgs^  e) { 
                 } 
        }; 
    }
    

    Ich möchte dass zu der URl die Eingabe aus der Textbox 1 dazugegeben wird. Wo ist mein Fehler?

    Hier der KOMPLETTE CODE:

    #pragma once 
    #include <iostream> 
    #include <conio.h> 
    #include <windows.h> 
    #include <string> 
    #include <shellapi.h> 
    #include <stdlib.h> 
    #include <stdio.h> 
    
    namespace Website { 
    
        using namespace System; 
        using namespace System::ComponentModel; 
        using namespace System::Collections; 
        using namespace System::Windows::Forms; 
        using namespace System::Data; 
        using namespace System::Drawing; 
        using namespace std; 
    
        /// <summary> 
        /// Zusammenfassung für Form1 
        /// 
        /// Warnung: Wenn Sie den Namen dieser Klasse ändern, müssen Sie auch 
        ///          die Ressourcendateiname-Eigenschaft für das Tool zur Kompilierung verwalteter Ressourcen ändern, 
        ///          das allen RESX-Dateien zugewiesen ist, von denen diese Klasse abhängt. 
        ///          Anderenfalls können die Designer nicht korrekt mit den lokalisierten Ressourcen 
        ///          arbeiten, die diesem Formular zugewiesen sind. 
        /// </summary> 
        public ref class Form1 : public System::Windows::Forms::Form 
        { 
        public: 
            Form1(void) 
            { 
                InitializeComponent(); 
                // 
                //TODO: Konstruktorcode hier hinzufügen. 
                // 
            } 
    
        protected: 
            /// <summary> 
            /// Verwendete Ressourcen bereinigen. 
            /// </summary> 
            ~Form1() 
            { 
                if (components) 
                { 
                    delete components; 
                } 
            } 
    
        protected: 
    
        private: System::Windows::Forms::FontDialog^  fontDialog1; 
        private: System::Windows::Forms::Button^  button1; 
        private: System::Windows::Forms::TextBox^  textBox1; 
    
        private: 
            /// <summary> 
            /// Erforderliche Designervariable. 
            /// </summary> 
            System::ComponentModel::Container ^components; 
    
    #pragma region Windows Form Designer generated code 
            /// <summary> 
            /// Erforderliche Methode für die Designerunterstützung. 
            /// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden. 
            /// </summary> 
            void InitializeComponent(void) 
            { 
                this->fontDialog1 = (gcnew System::Windows::Forms::FontDialog()); 
                this->button1 = (gcnew System::Windows::Forms::Button()); 
                this->textBox1 = (gcnew System::Windows::Forms::TextBox()); 
                this->SuspendLayout(); 
                // 
                // button1 
                // 
                this->button1->Location = System::Drawing::Point(12, 51); 
                this->button1->Name = L"button1"; 
                this->button1->Size = System::Drawing::Size(75, 23); 
                this->button1->TabIndex = 0; 
                this->button1->Text = L"button1"; 
                this->button1->UseVisualStyleBackColor = true; 
                this->button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click); 
                // 
                // textBox1 
                // 
                this->textBox1->Location = System::Drawing::Point(12, 12); 
                this->textBox1->Name = L"textBox1"; 
                this->textBox1->Size = System::Drawing::Size(100, 20); 
                this->textBox1->TabIndex = 1; 
                this->textBox1->TextChanged += gcnew System::EventHandler(this, &Form1::textBox1_TextChanged); 
                // 
                // Form1 
                // 
                this->AutoScaleDimensions = System::Drawing::SizeF(6, 13); 
                this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font; 
                this->ClientSize = System::Drawing::Size(639, 593); 
                this->Controls->Add(this->textBox1); 
                this->Controls->Add(this->button1); 
                this->Name = L"Form1"; 
                this->Text = L"Form1"; 
                this->ResumeLayout(false); 
                this->PerformLayout(); 
    
            } 
    #pragma endregion 
        private: System::Void groupBox1_Enter(System::Object^  sender, System::EventArgs^  e) { 
                 } 
    
    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) { 
                 string cmd = "start http://de.wikipedia.org/wiki/"+Form1::textBox1->Text;   
        system(cmd.c_str()); 
                 } 
        private: System::Void textBox1_TextChanged(System::Object^  sender, System::EventArgs^  e) { 
                 } 
        }; 
    }
    

    Liebe Grüße,

    und danke im Voraus



  • Versuch mal:

    string cmd = "start http://de.wikipedia.org/wiki/"+this->textBox1->Text;
    


  • error C2440: 'Initialisierung': 'System::String ^' kann nicht in 'std::basic_string<_Elem,_Traits,_Ax>' konvertiert werden

    😞

    Aber Danke für den Tipp... Weißt du vielleicht weiter?



  • Ich möchte dass zu der URl die Eingabe aus der Textbox 1 dazugegeben wird. Wo ist mein Fehler?

    Was geht denn genau nicht? Wo ist der Fehler? Kompiliert es nicht? Linkt es nicht? Gibt es Exceptions? Ist das Verhalten falsch?

    Und Du sollst nicht std::string verwenden, sondern System::String. Dasselbe gilt für system(..)... benutze System::Diagnostics::Process.

    Simon

    Edit:
    Um den Fehler einzugrenzen, kannst Du ja mal das Starten des Browsers weglassen und den zusammengesetzten String mit System::Diagnostics::Debug::WriteLine(..) ausgeben.



  • Ach tut mir leid, hab ich übersehen 😉

    es fehlt noch

    ^
    

    Also richtig dann so:

    String^ cmd = "start http://de.wikipedia.org/wiki/"+this->textBox1->Text;
    

    Dann sollte in cmd auf jedenfall das stehen, was du haben willst.
    Was ich gerade gesehen und noch nicht so recht verstanden hab ist die Zeile:

    system(cmd.c_str());
    

    Also wenn du nur in einem String den von dir gewünschten Text haben willst, reicht die erste Zeile aus.



  • Dann sollte in cmd auf jedenfall das stehen, was du haben willst.
    Was ich gerade gesehen und noch nicht so recht verstanden hab ist die Zeile:
    ...
    Also wenn du nur in einem String den von dir gewünschten Text haben willst, reicht die erste Zeile aus.

    Das mit dem system(..) sollte eben durch System::Diagnostics::Process::Start(..) ersetzt werden.

    Das xx.c_str() ist eine Member Funktion der Klasse std::string (basic_string<..>) und hat hier dann nichts mehr verloren.



  • Yeah ihr seid die besten 🙂

    Vielen Dank :p

    Endlich funktioniert es...

    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
    			 String^ cmd = "http://de.wikipedia.org/wiki/"+this->textBox1->Text;  
    			System::Diagnostics::Process::Start(cmd);
    			 }
    

    🙂



  • PS.:

    Könnt ihr mir auch sagen wie ich die URL in einem Internen WEbBrowser öffnen kann?

    Also, dass ich die Website die sich dann ergibt im rechten Panel öffnen kann? Die URL-Eigenschaft kann beim WebBrowser mit meinen Kenntnissen nich durch den string cmd ersetzt werden...

    Versteht ihr was ich meine?





  • öhhhh...

    Ich finde das bei MSDN immer so... Nunja, nicht schlecht, aber Einsteigerunfreundlich formuliert...

    Wäre echt super nett wenn du mal so unter der Hand den Befehl bei gleichem code wie oben gepostet rüberschieben könntest 😉



  • Also ich habs jetzt soweit:

    this->webbrowser1->navigate();

    Geht auch bei URLs in ""

    Aber wie krieg ich den Wiki link von eben da rein, also einen String?



  • 1. Eine navigate(..) Methode gibt es nicht.
    2. Verusuchs doch einfach mal...



  • ja ich weiß doch dass es Navigate heißt habs doch nur schnell hingetippst...

    Ja wie denn auf gut glück ausprobieren? Na wenn du meinst... Hab aber keinen Plan was da in die Klammern muss... Aber Jedenfalls was mit wiki ...



  • Und warum nicht einfach die cmd Variable?
    Die hast Du ja schon parat...



  • Die was? o.O

    Also die STrings habe ich umbenannt in wiki und google..

    Also zz siehts bei mir so aus:

    Zeile 129 ist die Problem Zeile!

    #pragma once
    #include <iostream>
    #include <conio.h>
    #include <windows.h>
    #include <string> 
    #include <shellapi.h> 
    #include <stdlib.h>
    #include <stdio.h>
    
    namespace Website {
    
    	using namespace System;
    	using namespace System::ComponentModel;
    	using namespace System::Collections;
    	using namespace System::Windows::Forms;
    	using namespace System::Data;
    	using namespace System::Drawing;
    	using namespace std;
    
    	/// <summary>
    	/// Zusammenfassung für Form1
    	///
    	/// Warnung: Wenn Sie den Namen dieser Klasse ändern, müssen Sie auch
    	///          die Ressourcendateiname-Eigenschaft für das Tool zur Kompilierung verwalteter Ressourcen ändern,
    	///          das allen RESX-Dateien zugewiesen ist, von denen diese Klasse abhängt.
    	///          Anderenfalls können die Designer nicht korrekt mit den lokalisierten Ressourcen
    	///          arbeiten, die diesem Formular zugewiesen sind.
    	/// </summary>
    	public ref class Form1 : public System::Windows::Forms::Form
    	{
    	public:
    		Form1(void)
    		{
    			InitializeComponent();
    			//
    			//TODO: Konstruktorcode hier hinzufügen.
    			//
    		}
    
    	protected:
    		/// <summary>
    		/// Verwendete Ressourcen bereinigen.
    		/// </summary>
    		~Form1()
    		{
    			if (components)
    			{
    				delete components;
    			}
    		}
    
    	protected: 
    
    	private: System::Windows::Forms::FontDialog^  fontDialog1;
    	private: System::Windows::Forms::Button^  button1;
    	private: System::Windows::Forms::TextBox^  textBox1;
    	private: System::Windows::Forms::Panel^  panel1;
    	private: System::Windows::Forms::WebBrowser^  webBrowser1;
    	private: System::Windows::Forms::GroupBox^  groupBox1;
    	private: System::Windows::Forms::Button^  button2;
    	private: System::Windows::Forms::TextBox^  textBox2;
    	private: System::Windows::Forms::GroupBox^  groupBox2;
    
    	private:
    		/// <summary>
    		/// Erforderliche Designervariable.
    		/// </summary>
    		System::ComponentModel::Container ^components;
    
    #pragma region Windows Form Designer generated code
    		/// <summary>
    		/// Erforderliche Methode für die Designerunterstützung.
    		/// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden.
    		/// </summary>
    		void InitializeComponent(void)
    		{
    			System::ComponentModel::ComponentResourceManager^  resources = (gcnew System::ComponentModel::ComponentResourceManager(Form1::typeid));
    			this->fontDialog1 = (gcnew System::Windows::Forms::FontDialog());
    			this->button1 = (gcnew System::Windows::Forms::Button());
    			this->textBox1 = (gcnew System::Windows::Forms::TextBox());
    			this->panel1 = (gcnew System::Windows::Forms::Panel());
    			this->webBrowser1 = (gcnew System::Windows::Forms::WebBrowser());
    			this->groupBox1 = (gcnew System::Windows::Forms::GroupBox());
    			this->button2 = (gcnew System::Windows::Forms::Button());
    			this->textBox2 = (gcnew System::Windows::Forms::TextBox());
    			this->groupBox2 = (gcnew System::Windows::Forms::GroupBox());
    			this->panel1->SuspendLayout();
    			this->groupBox1->SuspendLayout();
    			this->groupBox2->SuspendLayout();
    			this->SuspendLayout();
    			// 
    			// button1
    			// 
    			this->button1->Location = System::Drawing::Point(10, 45);
    			this->button1->Name = L"button1";
    			this->button1->Size = System::Drawing::Size(75, 23);
    			this->button1->TabIndex = 0;
    			this->button1->Text = L"Suchen";
    			this->button1->UseVisualStyleBackColor = true;
    			this->button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click);
    			// 
    			// textBox1
    			// 
    			this->textBox1->Location = System::Drawing::Point(10, 19);
    			this->textBox1->Name = L"textBox1";
    			this->textBox1->Size = System::Drawing::Size(100, 20);
    			this->textBox1->TabIndex = 1;
    			this->textBox1->TextChanged += gcnew System::EventHandler(this, &Form1::textBox1_TextChanged);
    			// 
    			// panel1
    			// 
    			this->panel1->Controls->Add(this->webBrowser1);
    			this->panel1->Location = System::Drawing::Point(128, 12);
    			this->panel1->Name = L"panel1";
    			this->panel1->Size = System::Drawing::Size(1044, 743);
    			this->panel1->TabIndex = 2;
    			// 
    			// webBrowser1
    			// 
    			this->webBrowser1->Location = System::Drawing::Point(0, 0);
    			this->webBrowser1->MinimumSize = System::Drawing::Size(20, 20);
    			this->webBrowser1->Name = L"webBrowser1";
    			this->webBrowser1->Size = System::Drawing::Size(1062, 743);
    			this->webBrowser1->TabIndex = 0;
    			this->webBrowser1->Navigate(+(this->wiki));
    			this->webBrowser1->DocumentCompleted += gcnew System::Windows::Forms::WebBrowserDocumentCompletedEventHandler(this, &Form1::webBrowser1_DocumentCompleted);
    			// 
    			// groupBox1
    			// 
    			this->groupBox1->BackgroundImage = (cli::safe_cast<System::Drawing::Image^  >(resources->GetObject(L"groupBox1.BackgroundImage")));
    			this->groupBox1->BackgroundImageLayout = System::Windows::Forms::ImageLayout::Zoom;
    			this->groupBox1->Controls->Add(this->textBox1);
    			this->groupBox1->Controls->Add(this->button1);
    			this->groupBox1->Location = System::Drawing::Point(2, 12);
    			this->groupBox1->Name = L"groupBox1";
    			this->groupBox1->Size = System::Drawing::Size(120, 108);
    			this->groupBox1->TabIndex = 3;
    			this->groupBox1->TabStop = false;
    			this->groupBox1->Text = L"Wikipedia Suche";
    			// 
    			// button2
    			// 
    			this->button2->Location = System::Drawing::Point(0, 45);
    			this->button2->Name = L"button2";
    			this->button2->Size = System::Drawing::Size(75, 23);
    			this->button2->TabIndex = 4;
    			this->button2->Text = L"Suchen";
    			this->button2->UseVisualStyleBackColor = true;
    			this->button2->MouseClick += gcnew System::Windows::Forms::MouseEventHandler(this, &Form1::button2_MouseClick);
    			// 
    			// textBox2
    			// 
    			this->textBox2->Location = System::Drawing::Point(0, 19);
    			this->textBox2->Name = L"textBox2";
    			this->textBox2->Size = System::Drawing::Size(100, 20);
    			this->textBox2->TabIndex = 5;
    			// 
    			// groupBox2
    			// 
    			this->groupBox2->BackgroundImage = (cli::safe_cast<System::Drawing::Image^  >(resources->GetObject(L"groupBox2.BackgroundImage")));
    			this->groupBox2->BackgroundImageLayout = System::Windows::Forms::ImageLayout::Zoom;
    			this->groupBox2->Controls->Add(this->textBox2);
    			this->groupBox2->Controls->Add(this->button2);
    			this->groupBox2->Location = System::Drawing::Point(2, 144);
    			this->groupBox2->Name = L"groupBox2";
    			this->groupBox2->Size = System::Drawing::Size(120, 108);
    			this->groupBox2->TabIndex = 6;
    			this->groupBox2->TabStop = false;
    			this->groupBox2->Text = L"Google Suche";
    			// 
    			// Form1
    			// 
    			this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
    			this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
    			this->ClientSize = System::Drawing::Size(1202, 815);
    			this->Controls->Add(this->groupBox2);
    			this->Controls->Add(this->groupBox1);
    			this->Controls->Add(this->panel1);
    			this->Icon = (cli::safe_cast<System::Drawing::Icon^  >(resources->GetObject(L"$this.Icon")));
    			this->Name = L"Form1";
    			this->Text = L"QuickSearch";
    			this->Load += gcnew System::EventHandler(this, &Form1::Form1_Load);
    			this->panel1->ResumeLayout(false);
    			this->groupBox1->ResumeLayout(false);
    			this->groupBox1->PerformLayout();
    			this->groupBox2->ResumeLayout(false);
    			this->groupBox2->PerformLayout();
    			this->ResumeLayout(false);
    
    		}
    #pragma endregion
    	private: System::Void groupBox1_Enter(System::Object^  sender, System::EventArgs^  e) {
    			 }
    
    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
    			 String^ wiki = "http://de.wikipedia.org/wiki/"+this->textBox1->Text;  
    			System::Diagnostics::Process::Start(wiki);
    			 }
    	private: System::Void textBox1_TextChanged(System::Object^  sender, System::EventArgs^  e) {
    			 }
    	private: System::Void Form1_Load(System::Object^  sender, System::EventArgs^  e) {
    			 }
    private: System::Void button2_MouseClick(System::Object^  sender, System::Windows::Forms::MouseEventArgs^  e) {
    			 String^ google = "http://www.google.de/search?hl=de&source=hp&q="+this->textBox2->Text;  
    			System::Diagnostics::Process::Start(google);
    		 }
    private: System::Void webBrowser1_DocumentCompleted(System::Object^  sender, System::Windows::Forms::WebBrowserDocumentCompletedEventArgs^  e) {
    		 }
    };
    }
    

    Ich probier jetzt als mit this-> und so rum aber der meina ls das links von Wiki (this->Button1_Click(Oder so)->wiki )eine Klasse stehen müsste..



  • Ich kriegs nicht raus 😞



  • // ... zusammensetzen von wiki ...
    webBrowser1->Navigate(wiki);
    

    BTW:
    All die includes brauchst Du nicht. Sie verwirren Dich nur.



  • error C2065: 'wiki': nichtdeklarierter Bezeichner

    Da liegt ja mein Problem...



  • private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
                 String^ wiki = "http://de.wikipedia.org/wiki/"+this->textBox1->Text;  
                //System::Diagnostics::Process::Start(wiki);
                webBrowser1->Navigate(wiki); 
                 }
    


  • Edit: ach soo, das mit den // soll wech, dachte die wären ausversehen :p

    ok thx 🙂


Log in to reply