Sandfish Geschrieben 17. Februar 2009 Geschrieben 17. Februar 2009 (bearbeitet) Hallo zusammen, ich bin neu hier und hoffe ihr könnt mir helfen. Ich habe das problem bereits wo anders gepostet, dort bekomme ich leider keien Antwort. Ich muss aber weiterkommen. Ich habe den Auftrag bekommen, bei einem WIndows Server 2003 Englisch eine DHCP-Konfigurationsdatei von einem deutschen Windows 2000-DHCP-Server zu importieren. Leider treten dabei Fehler auf. Entweder importiert der Rechner garnicht- oder es fehlt das "Optionvalue 43". Es gibt nun die Möglichkeit, eine bestehende WIn2k3-DHCP-Konfigurationsdatei mit den Informationen des Win2K-DHCPs zu füttern. Dazu wollte ich ein C++ Programm in "Visual C++ Express 2008" schreiben, was diese Aufgabe erfüllt. Leider habe ich bisher nur Erfahrung mit C++ in der Konsole. Das Erstellen der GUI hat gut funktioniert. So sieht sie aus: Nun möchte ich gerne, dass wenn ich auf das erste "Durchsuchen" klicke ein Kontextmenü geöffnet wird, mit dem Dateien geöffnet werden können. Ich habe dazu: hxxp://msdn.microsoft.com/de-de/library/61097ykx(VS.80).aspx zur Hilfe genommen. Jedoch gibt mein Programm Fehler aus und lässt sich nicht kompilieren. Die Fehler sind: ------ Erstellen gestartet: Projekt: DHCP_database_importer, Konfiguration: Debug Win32 ------ Kompilieren... DHCP_database_importer.cpp .\DHCP_database_importer.cpp(6) : error C2143: Syntaxfehler: Es fehlt ';' vor 'using' m:\visual studio 2008\projects\dhcp_database_importer\dhcp_database_importer\Form1.h(509) : error C2039: 'OK': Ist kein Element von 'System::Windows::Forms::Form::DialogResult' m:\visual studio 2008\projects\dhcp_database_importer\dhcp_database_importer\Form1.h(23): Siehe Deklaration von 'System::Windows::Forms::Form::DialogResult' m:\visual studio 2008\projects\dhcp_database_importer\dhcp_database_importer\Form1.h(509) : error C2065: 'OK': nichtdeklarierter Bezeichner m:\visual studio 2008\projects\dhcp_database_importer\dhcp_database_importer\Form1.h(514) : error C2061: Syntaxfehler: Bezeichner 'System' .\DHCP_database_importer.cpp(21) : fatal error C1075: Dateiende erreicht, bevor das zugehörige Element für das linke Element Klammer "{" in "m:\visual studio 2008\projects\dhcp_database_importer\dhcp_database_importer\Form1.h(4)" gefunden wurde Das Buildprotokoll wurde unter "file://m:\Visual Studio 2008\Projects\DHCP_database_importer\DHCP_database_importer\Debug\BuildLog.htm" gespeichert. DHCP_database_importer - 5 Fehler, 0 Warnung(en) ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ========== Ich habe das Beispiel von Microsoft noch nicht abgeändert, also nicht wundern. Hier der Quelltext: (Der Quelltext erstreckt sich über 3 Posts, Falls euch der Quelltext zu lang ist oder ich ihn anders hätte posten sollen, sagt es mir bitte, dann formatier ich ihn um) #pragma once namespace DHCP_database_importer { using namespace System; using namespace System::ComponentModel; using namespace System::Collections; using namespace System::Windows::Forms; using namespace System::Data; using namespace System::Drawing; / <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; } } private: System::Windows::Forms::Label^ label1; private: System::Windows::Forms::TextBox^ textBox1; private: System::Windows::Forms::Button^ button1; private: System::Windows::Forms::Label^ label2; private: System::Windows::Forms::TextBox^ textBox2; private: System::Windows::Forms::Button^ button2; private: System::Windows::Forms::Label^ label3; private: System::Windows::Forms::Button^ button3; private: System::Windows::Forms::Button^ button4; private: System::Windows::Forms::Label^ label4; private: System::Windows::Forms::GroupBox^ groupBox1; private: System::Windows::Forms::GroupBox^ groupBox2; private: System::Windows::Forms::GroupBox^ groupBox3; private: System::Windows::Forms::RadioButton^ radioButton3; private: System::Windows::Forms::RadioButton^ radioButton2; private: System::Windows::Forms::RadioButton^ radioButton1; private: System::Windows::Forms::Label^ label5; private: System::Windows::Forms::TextBox^ textBox4; private: System::Windows::Forms::TextBox^ textBox3; private: System::Windows::Forms::GroupBox^ groupBox4; private: System::Windows::Forms::Label^ label6; private: System::Windows::Forms::TextBox^ textBox7; private: System::Windows::Forms::Label^ label8; private: System::Windows::Forms::TextBox^ textBox6; private: System::Windows::Forms::Label^ label7; private: System::Windows::Forms::Button^ button5; private: System::Windows::Forms::TextBox^ textBox5; private: System::Windows::Forms::GroupBox^ groupBox5; private: System::Windows::Forms::Label^ label9; private: System::Windows::Forms::Label^ label11; private: System::Windows::Forms::Label^ label10; private: System::Windows::Forms::Label^ label12; private: System::Windows::Forms::OpenFileDialog^ openFileDialog1; protected: 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->label1 = (gcnew System::Windows::Forms::Label()); this->textBox1 = (gcnew System::Windows::Forms::TextBox()); this->button1 = (gcnew System::Windows::Forms::Button()); this->label2 = (gcnew System::Windows::Forms::Label()); this->textBox2 = (gcnew System::Windows::Forms::TextBox()); this->button2 = (gcnew System::Windows::Forms::Button()); this->label3 = (gcnew System::Windows::Forms::Label()); this->button3 = (gcnew System::Windows::Forms::Button()); this->button4 = (gcnew System::Windows::Forms::Button()); this->label4 = (gcnew System::Windows::Forms::Label()); this->groupBox1 = (gcnew System::Windows::Forms::GroupBox()); this->groupBox2 = (gcnew System::Windows::Forms::GroupBox()); this->groupBox3 = (gcnew System::Windows::Forms::GroupBox()); this->textBox7 = (gcnew System::Windows::Forms::TextBox()); this->label8 = (gcnew System::Windows::Forms::Label()); this->textBox6 = (gcnew System::Windows::Forms::TextBox()); this->label7 = (gcnew System::Windows::Forms::Label()); this->label5 = (gcnew System::Windows::Forms::Label()); this->textBox4 = (gcnew System::Windows::Forms::TextBox()); this->textBox3 = (gcnew System::Windows::Forms::TextBox()); this->radioButton3 = (gcnew System::Windows::Forms::RadioButton()); this->radioButton2 = (gcnew System::Windows::Forms::RadioButton()); this->radioButton1 = (gcnew System::Windows::Forms::RadioButton()); this->groupBox4 = (gcnew System::Windows::Forms::GroupBox()); this->button5 = (gcnew System::Windows::Forms::Button()); this->textBox5 = (gcnew System::Windows::Forms::TextBox()); this->label6 = (gcnew System::Windows::Forms::Label()); this->groupBox5 = (gcnew System::Windows::Forms::GroupBox()); this->label12 = (gcnew System::Windows::Forms::Label()); this->label11 = (gcnew System::Windows::Forms::Label()); this->label10 = (gcnew System::Windows::Forms::Label()); this->label9 = (gcnew System::Windows::Forms::Label()); this->openFileDialog1 = (gcnew System::Windows::Forms::OpenFileDialog()); this->groupBox1->SuspendLayout(); this->groupBox2->SuspendLayout(); this->groupBox3->SuspendLayout(); this->groupBox4->SuspendLayout(); this->groupBox5->SuspendLayout(); this->SuspendLayout(); label1 this->label1->AutoSize = true; this->label1->Location = System::Drawing::Point(3, 24); this->label1->Name = L"label1"; this->label1->Size = System::Drawing::Size(268, 13); this->label1->TabIndex = 0; this->label1->Text = L"Bitte geben Sie die Datenbank des Quell-Rechners ein."; this->label1->Click += gcnew System::EventHandler(this, &Form1::label1_Click); textBox1 this->textBox1->Location = System::Drawing::Point(278, 21); this->textBox1->Name = L"textBox1"; this->textBox1->Size = System::Drawing::Size(160, 20); this->textBox1->TabIndex = 1; button1 this->button1->Location = System::Drawing::Point(454, 19); this->button1->Name = L"button1"; this->button1->Size = System::Drawing::Size(86, 23); this->button1->TabIndex = 2; this->button1->Text = L"Durchsuchen"; this->button1->UseVisualStyleBackColor = true; this->button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click); Vielen Dank im Voraus Bearbeitet 17. Februar 2009 von Sandfish BEarbeitung Zitieren
Sandfish Geschrieben 17. Februar 2009 Autor Geschrieben 17. Februar 2009 label2 this->label2->AutoSize = true; this->label2->Location = System::Drawing::Point(3, 62); this->label2->Name = L"label2"; this->label2->Size = System::Drawing::Size(261, 13); this->label2->TabIndex = 3; this->label2->Text = L"Bitte geben Sie die Datenbank des Ziel-Rechners ein."; textBox2 this->textBox2->Location = System::Drawing::Point(278, 59); this->textBox2->Name = L"textBox2"; this->textBox2->Size = System::Drawing::Size(160, 20); this->textBox2->TabIndex = 4; button2 this->button2->Location = System::Drawing::Point(454, 57); this->button2->Name = L"button2"; this->button2->Size = System::Drawing::Size(86, 23); this->button2->TabIndex = 5; this->button2->Text = L"Durchsuchen"; this->button2->UseVisualStyleBackColor = true; label3 this->label3->AutoSize = true; this->label3->Location = System::Drawing::Point(40, 26); this->label3->Name = L"label3"; this->label3->Size = System::Drawing::Size(205, 13); this->label3->TabIndex = 6; this->label3->Text = L"Möchten Sie die Unterschiede speichern\?"; button3 this->button3->Enabled = false; this->button3->Location = System::Drawing::Point(276, 19); this->button3->Name = L"button3"; this->button3->Size = System::Drawing::Size(86, 23); this->button3->TabIndex = 7; this->button3->Text = L"Ja"; this->button3->UseVisualStyleBackColor = true; button4 this->button4->Enabled = false; this->button4->Location = System::Drawing::Point(359, 19); this->button4->Name = L"button4"; this->button4->Size = System::Drawing::Size(86, 23); this->button4->TabIndex = 8; this->button4->Text = L"Nein"; this->button4->UseVisualStyleBackColor = true; label4 this->label4->AutoSize = true; this->label4->Location = System::Drawing::Point(66, 21); this->label4->Name = L"label4"; this->label4->Size = System::Drawing::Size(73, 13); this->label4->TabIndex = 9; this->label4->Text = L"IP verwenden"; groupBox1 this->groupBox1->Controls->Add(this->button2); this->groupBox1->Controls->Add(this->textBox2); this->groupBox1->Controls->Add(this->label2); this->groupBox1->Controls->Add(this->button1); this->groupBox1->Controls->Add(this->textBox1); this->groupBox1->Controls->Add(this->label1); this->groupBox1->Location = System::Drawing::Point(9, 145); this->groupBox1->Name = L"groupBox1"; this->groupBox1->Size = System::Drawing::Size(551, 101); this->groupBox1->TabIndex = 10; this->groupBox1->TabStop = false; this->groupBox1->Text = L"Datenbankauswahl"; groupBox2 this->groupBox2->Controls->Add(this->button4); this->groupBox2->Controls->Add(this->button3); this->groupBox2->Controls->Add(this->label3); this->groupBox2->Location = System::Drawing::Point(9, 262); this->groupBox2->Name = L"groupBox2"; this->groupBox2->Size = System::Drawing::Size(551, 54); this->groupBox2->TabIndex = 11; this->groupBox2->TabStop = false; this->groupBox2->Text = L"Unterschiede"; groupBox3 this->groupBox3->Controls->Add(this->textBox7); this->groupBox3->Controls->Add(this->label8); this->groupBox3->Controls->Add(this->textBox6); this->groupBox3->Controls->Add(this->label7); this->groupBox3->Controls->Add(this->label5); this->groupBox3->Controls->Add(this->textBox4); this->groupBox3->Controls->Add(this->textBox3); this->groupBox3->Controls->Add(this->radioButton3); this->groupBox3->Controls->Add(this->radioButton2); this->groupBox3->Controls->Add(this->radioButton1); this->groupBox3->Controls->Add(this->label4); this->groupBox3->Location = System::Drawing::Point(9, 333); this->groupBox3->Name = L"groupBox3"; this->groupBox3->Size = System::Drawing::Size(551, 95); this->groupBox3->TabIndex = 12; this->groupBox3->TabStop = false; this->groupBox3->Text = L"IP-Adresse in der neuen Konfigurationsdatei"; textBox7 this->textBox7->Enabled = false; this->textBox7->Location = System::Drawing::Point(340, 62); this->textBox7->Name = L"textBox7"; this->textBox7->Size = System::Drawing::Size(45, 20); this->textBox7->TabIndex = 17; label8 this->label8->AutoSize = true; this->label8->Location = System::Drawing::Point(330, 69); this->label8->Name = L"label8"; this->label8->Size = System::Drawing::Size(10, 13); this->label8->TabIndex = 16; this->label8->Text = L"."; textBox6 this->textBox6->Enabled = false; this->textBox6->Location = System::Drawing::Point(285, 62); this->textBox6->Name = L"textBox6"; this->textBox6->Size = System::Drawing::Size(45, 20); this->textBox6->TabIndex = 15; label7 this->label7->AutoSize = true; this->label7->Location = System::Drawing::Point(275, 69); this->label7->Name = L"label7"; this->label7->Size = System::Drawing::Size(10, 13); this->label7->TabIndex = 14; this->label7->Text = L"."; label5 this->label5->AutoSize = true; this->label5->Location = System::Drawing::Point(220, 69); this->label5->Name = L"label5"; this->label5->Size = System::Drawing::Size(10, 13); this->label5->TabIndex = 9; this->label5->Text = L"."; textBox4 this->textBox4->Enabled = false; this->textBox4->Location = System::Drawing::Point(230, 62); this->textBox4->Name = L"textBox4"; this->textBox4->Size = System::Drawing::Size(45, 20); this->textBox4->TabIndex = 14; textBox3 this->textBox3->Enabled = false; this->textBox3->Location = System::Drawing::Point(175, 62); this->textBox3->Name = L"textBox3"; this->textBox3->Size = System::Drawing::Size(45, 20); this->textBox3->TabIndex = 13; radioButton3 this->radioButton3->AutoSize = true; this->radioButton3->Enabled = false; this->radioButton3->Location = System::Drawing::Point(155, 65); this->radioButton3->Name = L"radioButton3"; this->radioButton3->Size = System::Drawing::Size(14, 13); this->radioButton3->TabIndex = 12; this->radioButton3->TabStop = true; this->radioButton3->UseVisualStyleBackColor = true; radioButton2 this->radioButton2->AutoSize = true; this->radioButton2->Enabled = false; this->radioButton2->Location = System::Drawing::Point(155, 42); this->radioButton2->Name = L"radioButton2"; this->radioButton2->Size = System::Drawing::Size(138, 17); this->radioButton2->TabIndex = 11; this->radioButton2->TabStop = true; this->radioButton2->Text = L"Von der Ziel-Datenbank"; this->radioButton2->UseVisualStyleBackColor = true; radioButton1 this->radioButton1->AutoSize = true; this->radioButton1->Enabled = false; this->radioButton1->Location = System::Drawing::Point(155, 19); this->radioButton1->Name = L"radioButton1"; this->radioButton1->Size = System::Drawing::Size(145, 17); this->radioButton1->TabIndex = 10; this->radioButton1->TabStop = true; this->radioButton1->Text = L"Von der Quell-Datenbank"; this->radioButton1->UseVisualStyleBackColor = true; groupBox4 this->groupBox4->Controls->Add(this->button5); this->groupBox4->Controls->Add(this->textBox5); this->groupBox4->Controls->Add(this->label6); this->groupBox4->Location = System::Drawing::Point(9, 446); this->groupBox4->Name = L"groupBox4"; this->groupBox4->RightToLeft = System::Windows::Forms::RightToLeft::No; this->groupBox4->Size = System::Drawing::Size(551, 85); this->groupBox4->TabIndex = 13; this->groupBox4->TabStop = false; this->groupBox4->Text = L"Neue Datenbank"; button5 this->button5->Enabled = false; this->button5->Location = System::Drawing::Point(447, 34); this->button5->Name = L"button5"; this->button5->Size = System::Drawing::Size(86, 23); this->button5->TabIndex = 6; this->button5->Text = L"Durchsuchen"; this->button5->UseVisualStyleBackColor = true; textBox5 this->textBox5->Enabled = false; this->textBox5->Location = System::Drawing::Point(189, 36); this->textBox5->Name = L"textBox5"; this->textBox5->Size = System::Drawing::Size(242, 20); this->textBox5->TabIndex = 15; label6 this->label6->AutoSize = true; this->label6->Location = System::Drawing::Point(15, 39); this->label6->Name = L"label6"; this->label6->Size = System::Drawing::Size(168, 13); this->label6->TabIndex = 14; this->label6->Text = L"Neue Datenbank speichern unter:"; groupBox5 this->groupBox5->Controls->Add(this->label12); this->groupBox5->Controls->Add(this->label11); this->groupBox5->Controls->Add(this->label10); this->groupBox5->Controls->Add(this->label9); this->groupBox5->Location = System::Drawing::Point(9, 16); this->groupBox5->Name = L"groupBox5"; this->groupBox5->Size = System::Drawing::Size(551, 114); this->groupBox5->TabIndex = 14; this->groupBox5->TabStop = false; this->groupBox5->Text = L"Beschreibung"; label12 this->label12->AutoSize = true; this->label12->Location = System::Drawing::Point(6, 90); this->label12->Name = L"label12"; this->label12->Size = System::Drawing::Size(536, 13); this->label12->TabIndex = 3; this->label12->Text = L"Konfigurations-Datei des Zielrechners ein. Die Sprache der neuen Datei wird aus d" L"er Zieldatenbank entnommen."; label11 this->label11->AutoSize = true; this->label11->Location = System::Drawing::Point(12, 69); this->label11->Name = L"label11"; this->label11->Size = System::Drawing::Size(440, 13); this->label11->TabIndex = 2; this->label11->Text = L"Geben Sie dazu die zu importierende Datenbank des Quellrechners und eine vorhande" L"nene"; Zitieren
Sandfish Geschrieben 17. Februar 2009 Autor Geschrieben 17. Februar 2009 label10 this->label10->AutoSize = true; this->label10->Location = System::Drawing::Point(83, 47); this->label10->Name = L"label10"; this->label10->Size = System::Drawing::Size(334, 13); this->label10->TabIndex = 1; this->label10->Text = L"sich nicht importieren lässt. (http:support.microsoft.com/kb/325473)"; label9 this->label9->AutoSize = true; this->label9->Location = System::Drawing::Point(12, 25); this->label9->Name = L"label9"; this->label9->Size = System::Drawing::Size(470, 13); this->label9->TabIndex = 0; this->label9->Text = L"Dieses Tool dient dazu, eine neue DHCP-Datenbank zu erstellen, falls die vorhande" L"ne Datenbank"; this->label9->Click += gcnew System::EventHandler(this, &Form1::label9_Click); openFileDialog1 this->openFileDialog1->FileName = L"openFileDialog1"; Form1 this->AutoScaleDimensions = System::Drawing::SizeF(6, 13); this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font; this->ClientSize = System::Drawing::Size(561, 545); this->Controls->Add(this->groupBox5); this->Controls->Add(this->groupBox4); this->Controls->Add(this->groupBox3); this->Controls->Add(this->groupBox2); this->Controls->Add(this->groupBox1); this->Icon = (cli::safe_cast<System::Drawing::Icon^ >(resources->GetObject(L"$this.Icon"))); this->Name = L"Form1"; this->Text = L"DHCP database Importer for Windows Server 2003"; this->Load += gcnew System::EventHandler(this, &Form1::Form1_Load); this->groupBox1->ResumeLayout(false); this->groupBox1->PerformLayout(); this->groupBox2->ResumeLayout(false); this->groupBox2->PerformLayout(); this->groupBox3->ResumeLayout(false); this->groupBox3->PerformLayout(); this->groupBox4->ResumeLayout(false); this->groupBox4->PerformLayout(); this->groupBox5->ResumeLayout(false); this->groupBox5->PerformLayout(); this->ResumeLayout(false); } #pragma endregion private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) { } private: System::Void label1_Click(System::Object^ sender, System::EventArgs^ e) { } private: System::Void label9_Click(System::Object^ sender, System::EventArgs^ e) { } private: void button1_Click(System::Object ^ sender, System::EventArgs ^ e) { Displays an OpenFileDialog so the user can select a Cursor. OpenFileDialog ^ openFileDialog1 = gcnew OpenFileDialog(); openFileDialog1->Filter = "Cursor Files|*.cur"; openFileDialog1->Title = "Select a Cursor File"; Show the Dialog. If the user clicked OK in the dialog and a .CUR file was selected, open it. if (openFileDialog1->ShowDialog() == DialogResult::OK) { Assign the cursor in the Stream to // the Form's Cursor property. this->Cursor = gcnew System.Windows::Forms::Cursor(openFileDialog1->OpenFile()); } }; } Zitieren
Klotzkopp Geschrieben 17. Februar 2009 Geschrieben 17. Februar 2009 Ich habe das problem bereits wo anders gepostet, dort bekomme ich leider keien Antwort.An dieser Stelle hättest du dich mal fragen können, warum du keine Antwort bekommst. Du zeigst den Code aus zwei Dateien, so dass man nicht mehr erkennen kann, was woher kommt. Die Includedirektive hast du anscheinend entfernt.Du hast sämtliche Kommentare im Code kaputtgemacht, so dass man das erst aufwändig reparieren muss, wenn man das im Compiler nachprüfen will.Du benutzt C++/CLI, nicht C++, deshalb ist das hier das falsche Forum. So wie ich das erkennen kann, fehlt in Form1.h schlicht und einfach das abschließende Semikolon bei der Klassendefinition und die schließende Klammer für den Namespace. Außerdem hast du noch ein Mehrdeutigkeitproblem mit DialogResult. Es gibt sowohl ein Property von Form mit diesem Namen, als auch den Enum im namespace Forms. Schreib's einfach aus. Zitieren
Sandfish Geschrieben 17. Februar 2009 Autor Geschrieben 17. Februar 2009 (bearbeitet) Schonmal vielen Dank für die Antwort. Du zeigst den Code aus zwei Dateien, so dass man nicht mehr erkennen kann, was woher kommt. Die Includedirektive hast du anscheinend entfernt. Du beziehst auf die Fehlermeldung oder? Die mit dem Semikolon ist mir ein Rätsel. Du hast recht, bei diesem Fehler bezieht sich das Programm auf "DHCP_database_Importer.cpp". Der Inhalt ist folgender: // DHCP_database_importer.cpp: Hauptprojektdatei. #include "stdafx.h" #include "Form1.h" using namespace DHCP_database_importer; [STAThreadAttribute] int main(array<System::String ^> ^args) { // Aktivieren visueller Effekte von Windows XP, bevor Steuerelemente erstellt werden Application::EnableVisualStyles(); Application::SetCompatibleTextRenderingDefault(false); // Hauptfenster erstellen und ausführen Application::Run(gcnew Form1()); return 0; } // Testprojekt.cpp: Hauptprojektdatei. Die Includes habe ich nicht angerührt, die hat as Programm so erstellt. Die sehen aber auch komisch aus. ALso ich kenne "INCLUDE <iostream>" - WIeso ist denn das jetzt anders geschrieben? Du hast sämtliche Kommentare im Code kaputtgemacht, so dass man das erst aufwändig reparieren muss, wenn man das im Compiler nachprüfen will. Das ist durch Copy+Paste entstanden, die Kommentare habe ich nicht angerührt und sind im Quelltext in Ordnung. Du benutzt C++/CLI, nicht C++, deshalb ist das hier das falsche Forum. - Oh habe nicht gesehen, dass es noch ein reines C++-Subforum gibt. So wie ich das erkennen kann, fehlt in Form1.h schlicht und einfach das abschließende Semikolon bei der Klassendefinition und die schließende Klammer für den Namespace. Ähm wo genau fehlt mir das Semikolon? *Sorry ich seh den Wald vor lauter Bäumen nicht. Den Namespace schließe ich am besten mit einer abschließenden Klammer ganz am Ende des Programms? Außerdem hast du noch ein Mehrdeutigkeitproblem mit DialogResult. Es gibt sowohl ein Property von Form mit diesem Namen, als auch den Enum im namespace Forms. Schreib's einfach aus. Inwiefern ausschreiben? Was schreibe ich genau dahin? Ich kann mir vorstellen, dass ich dich grade zur Verzweiflung bringe. xD Ich hoffe du bist trotzdem geduldig genug mir zu helfen. Ich habe zwar C++ gelernt, war aber nie besonders gut und ich habe eben noch nie Applikationen mit Windows-GUI erstellt. Vielen Dank schonmal im Voraus Bearbeitet 17. Februar 2009 von Sandfish Zitieren
Shadowman Geschrieben 17. Februar 2009 Geschrieben 17. Februar 2009 (bearbeitet) Poste doch bitte mal Deine Compilerfehler Bearbeitet 17. Februar 2009 von Shadowman Zitieren
Sandfish Geschrieben 17. Februar 2009 Autor Geschrieben 17. Februar 2009 @ShadowmanZ: Die stehen bereits oben. Hier nochmal farblich hervorgehoben: ------ Erstellen gestartet: Projekt: DHCP_database_importer, Konfiguration: Debug Win32 ------ Kompilieren... DHCP_database_importer.cpp .\DHCP_database_importer.cpp(6) : error C2143: Syntaxfehler: Es fehlt ';' vor 'using' m:\visual studio 2008\projects\dhcp_database_importer\dhcp_database _importer\Form1.h(509) : error C2039: 'OK': Ist kein Element von 'System::Windows::Forms::Form:ialogResult' m:\visual studio 2008\projects\dhcp_database_importer\dhcp_database _importer\Form1.h(23): Siehe Deklaration von 'System::Windows::Forms::Form:ialogResult' m:\visual studio 2008\projects\dhcp_database_importer\dhcp_database _importer\Form1.h(509) : error C2065: 'OK': nichtdeklarierter Bezeichner m:\visual studio 2008\projects\dhcp_database_importer\dhcp_database _importer\Form1.h(514) : error C2061: Syntaxfehler: Bezeichner 'System' .\DHCP_database_importer.cpp(21) : fatal error C1075: Dateiende erreicht, bevor das zugehörige Element für das linke Element Klammer "{" in "m:\visual studio 2008\projects\dhcp_database_importer\dhcp_database _importer\Form1.h(4)" gefunden wurde Das Buildprotokoll wurde unter "file://m:\Visual Studio 2008\Projects\DHCP_database_importer\DHCP_database _importer\Debug\BuildLog.htm" gespeichert. DHCP_database_importer - 5 Fehler, 0 Warnung(en) ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ========== Zitieren
Shadowman Geschrieben 17. Februar 2009 Geschrieben 17. Februar 2009 Form1.h (509): System::Windows::Forms::DialogResult::OK verwenden, um die von Klotzkopp angesprochene Mehrdeutigkeit zu vermeiden. Form1.h (514): System.Windows durch System::Windows ersetzen. System wird von dir als Objekt angesprochen, ist aber ein Namespace bitte beides umsetzen und neue BuildLog posten Zitieren
Sandfish Geschrieben 17. Februar 2009 Autor Geschrieben 17. Februar 2009 @ShadowmanZ - Danke, es klappt zwar noch nicht, aber im Fehlerlog steht schonmal weniger. Er sieht jetzt wie folgt aus: ------ Erstellen gestartet: Projekt: DHCP_database_importer, Konfiguration: Debug Win32 ------ Kompilieren... DHCP_database_importer.cpp .\DHCP_database_importer.cpp(6) : error C2143: Syntaxfehler: Es fehlt ';' vor 'using' m:\visual studio 2008\projects\dhcp_database_importer\dhcp_database_importer\Form1.h(509) : error C2882: 'Forms': Unzulässige Verwendung eines Namespace-Bezeichners in einem Ausdruck m:\visual studio 2008\projects\dhcp_database_importer\dhcp_database_importer\Form1.h(509) : fatal error C1903: Weiterverarbeitung nach vorherigem Fehler nicht möglich; Kompilierung wird abgebrochen. Das Buildprotokoll wurde unter "file://m:\Visual Studio 2008\Projects\DHCP_database_importer\DHCP_database_importer\Debug\BuildLog.htm" gespeichert. DHCP_database_importer - 3 Fehler, 0 Warnung(en) ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ========== Den Code habe ich an dieser Stelle verändert: if (openFileDialog1->ShowDialog() == System::Windows::Forms:DialogResult::OK) { // Assign the cursor in the Stream to // the Form's Cursor property. this->Cursor = gcnew System::Windows::Forms::Cursor(openFileDialog1->OpenFile()); } Zitieren
Shadowman Geschrieben 17. Februar 2009 Geschrieben 17. Februar 2009 In Zeile 509 hast du nach Forms nur : anstatt :: das ist der nächste fehler. auf den Fehler aus der DHCP_database_impoter.cpp gehe ich noch nicht ein, da dies auf ein fehlendes ; in der Form1.h hinweist Zitieren
Sandfish Geschrieben 17. Februar 2009 Autor Geschrieben 17. Februar 2009 Du bist Spitze langsam kommen wir vorran ^^ - Habs es korrigiert. Dies ist das Resultat: ------ Erstellen gestartet: Projekt: DHCP_database_importer, Konfiguration: Debug Win32 ------ Kompilieren... DHCP_database_importer.cpp .\DHCP_database_importer.cpp(6) : error C2143: Syntaxfehler: Es fehlt ';' vor 'using' .\DHCP_database_importer.cpp(21) : fatal error C1075: Dateiende erreicht, bevor das zugehörige Element für das linke Element Klammer "{" in "m:\visual studio 2008\projects\dhcp_database_importer\dhcp_database_importer\Form1.h(4)" gefunden wurde Das Buildprotokoll wurde unter "file://m:\Visual Studio 2008\Projects\DHCP_database_importer\DHCP_database_importer\Debug\BuildLog.htm" gespeichert. DHCP_database_importer - 2 Fehler, 0 Warnung(en) ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ========== p.s. Während ich auf Antworten warte, frische ich grade mein Wissen mit einem C++ - Kurs auf, der ist zwar von Microsoft, es werden allerdings nur Konsolen-Programme besprochen. Kennst du vielleicht einen Kurs, wo ich auch die Windows-Programmierung von der Pike an lernen kann? Zitieren
Shadowman Geschrieben 17. Februar 2009 Geschrieben 17. Februar 2009 (bearbeitet) alleine der Optik halber solltest du: void button1_Click in System::void button1_Click ändern relativ am ende vor das }; noch eine } machen um die Methode button1_Click zu beenden und somit auch (zumindest bin ich mir da 95% sicher) die restlichen Fehler zu beseitigen Ne ich kenne net wirklich solche Kurse. C++ verwende ich auch eher selten. Eher C#.Net wobei ich bisher (ich kann es nur immer wieder sagen) bis auf -> statt . bei unreferenzierten Objekten und . statt :: bei Namespaces keinen einzigen unterschied gefunden habe. Ausser ein massiv verbessertes highlighting und ne auto Einrückung die solche Fehler deutlich verringert Bearbeitet 17. Februar 2009 von Shadowman Zitieren
Sandfish Geschrieben 17. Februar 2009 Autor Geschrieben 17. Februar 2009 So also wenn ich "System::" vor das Void setze, System::void button1_Click(System::Object ^ sender, dann gibt er mir folgenden Fehler aus: ------ Erstellen gestartet: Projekt: DHCP_database_importer, Konfiguration: Debug Win32 ------ Kompilieren... DHCP_database_importer.cpp m:\visual studio 2008\projects\dhcp_database_importer\dhcp_database_importer\Form1.h(498) : error C2589: 'void': Ungültiges Token auf der rechten Seite von '::' m:\visual studio 2008\projects\dhcp_database_importer\dhcp_database_importer\Form1.h(498) : error C2059: Syntaxfehler: '::' m:\visual studio 2008\projects\dhcp_database_importer\dhcp_database_importer\Form1.h(500) : error C2334: Unerwartete(s) Token vor '{'; sichtbarer Funktionstext wird übersprungen m:\visual studio 2008\projects\dhcp_database_importer\dhcp_database_importer\Form1.h(160) : error C2039: 'button1_Click': Ist kein Element von 'DHCP_database_importer::Form1' m:\visual studio 2008\projects\dhcp_database_importer\dhcp_database_importer\Form1.h(22): Siehe Deklaration von 'DHCP_database_importer::Form1' m:\visual studio 2008\projects\dhcp_database_importer\dhcp_database_importer\Form1.h(160) : error C2065: 'button1_Click': nichtdeklarierter Bezeichner m:\visual studio 2008\projects\dhcp_database_importer\dhcp_database_importer\Form1.h(160) : error C3350: "System::EventHandler": Ein Delegatkonstruktor erwartet 2 Argument(e). Das Buildprotokoll wurde unter "file://m:\Visual Studio 2008\Projects\DHCP_database_importer\DHCP_database_importer\Debug\BuildLog.htm" gespeichert. DHCP_database_importer - 6 Fehler, 0 Warnung(en) ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ========== Ohne das "System::" und mit Hinzufügen der Klammer hat das Programm kurzzeitig geklappt. Jetzt steht dort aber plötzlich: ------ Erstellen gestartet: Projekt: DHCP_database_importer, Konfiguration: Debug Win32 ------ Kompilieren... DHCP_database_importer.cpp AssemblyInfo.cpp Code wird generiert... Verknüpfen... LINK : fatal error LNK1104: Datei "M:\Visual Studio 2008\Projects\DHCP_database_importer\Debug\DHCP_database_importer.exe" kann nicht geöffnet werden. Das Buildprotokoll wurde unter "file://m:\Visual Studio 2008\Projects\DHCP_database_importer\DHCP_database_importer\Debug\BuildLog.htm" gespeichert. DHCP_database_importer - 1 Fehler, 0 Warnung(en) ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ========== Was ist das denn nun? Die Datei existiert aber auf jeden Fall. Vielleicht schaue ich mir C#.net auch mal an. Zitieren
Shadowman Geschrieben 17. Februar 2009 Geschrieben 17. Februar 2009 du musst bei System::Void das V auch groß schreiben dann compilen. Wenn es dann nicht geht: Erstellen -> Projektmappe bereinigen Erstellen -> Projektmappe neu erstellen Zitieren
Sandfish Geschrieben 17. Februar 2009 Autor Geschrieben 17. Februar 2009 Ok klasse läuft wieder. Habe neugestartet und System::Void mit großem "V" geschrieben. Jetzt gehts. Habe auch den Microsoft-Code schon umgeändert. Jetzt ändert es nicht mehr den Cursor sondern bei einer Dateiauswahl landet in der Textbox links vom "Durchsuchen-Button" der Pfad zu der ausgewählten Datei. Der entsprechende Programmteil sieht jetzt so aus: private: System::Void button1_Click(System::Object ^ sender, System::EventArgs ^ e) { // Displays an OpenFileDialog so the user can select a File. OpenFileDialog ^ openFileDialog1 = gcnew OpenFileDialog(); openFileDialog1->Title = "Wählen Sie bitte die DHCP-Quelldatenbank"; if (openFileDialog1->ShowDialog() == System::Windows::Forms::DialogResult::OK) { this->textBox1->Text = openFileDialog1->FileName; } } Wie du auf dem Screenshot siehst, habe ich drei "Durchsuchen-Buttons". Wie ändere ich denn jetzt den Quelltext um, dass ich nur einen Quelltext für die Dateinamenauswahl für alle drei Buttons und Textfelder brauche? (Objektorientiert/Polymorphisch) Zitieren
Shadowman Geschrieben 17. Februar 2009 Geschrieben 17. Februar 2009 (bearbeitet) private: System::Void button1_Click(System::Object ^ sender, System::EventArgs ^ e) { pfadAuswaehlen(this->textBox1); } private: System::Void button2_Click(System::Object ^ sender, System::EventArgs ^ e) { pfadAuswaehlen(this->textBox2); } private: System::Void button3_Click(System::Object ^ sender, System::EventArgs ^ e) { pfadAuswaehlen(this->textBox3); } private: System::Void pfadAuswaehlen(System::Windows::Forms::TextBox^ tb) { // Displays an OpenFileDialog so the user can select a File. OpenFileDialog ^ openFileDialog1 = gcnew OpenFileDialog(); openFileDialog1->Title = "Wählen Sie bitte die DHCP-Quelldatenbank"; if (openFileDialog1->ShowDialog() == System::Windows::Forms::DialogResult::OK) { tb->Text = openFileDialog1->FileName; } } kp ob du das so meinst. Der Methode wird einfach die TextBox übergeben, in die hinein geschrieben werden soll. Bearbeitet 17. Februar 2009 von Shadowman Zitieren
Sandfish Geschrieben 17. Februar 2009 Autor Geschrieben 17. Februar 2009 Genauso meinte ich das ^^ - Okay das klappt schonmal gut. So nun zu meiner letzten Aktion für heute. (Mal gucken ob ich morgen alleine weiterkomme) Auf meinem ersten Bild war noch nicht zu sehen, dass einige Flächen zunächst ausgegraut sind: Ich möchte ganz gerne eine Prüfung einbauen. Nur wenn in BEIDEN Text-Feldern etwas steht, werden die deaktivierten Schaltflächen "Ja" und "Nein" aktiviert. Nun weiß ich gar nicht, was die beste Bedingung ist. if (textBox_1==true&&textBox_2==true) - Geht das weil die textboxen ja keinen Boolschen Wert liefern??? oder if ((!textBox_1=="")&&(!textBox_2=="")) ? Habe mal testeshalber das geschrieben: private: System::Void AktiviereDieNaechsteSchaltflaeche(System::Object ^ sender, System::EventArgs ^ e) { if (textBox_1==true&&textBox_2==true) { button3->System::Windows::Forms::Control::Enabled = true; button4->System::Windows::Forms::Control::Enabled = true; } else { button3->System::Windows::Forms::Control::Enabled = false; button4->System::Windows::Forms::Control::Enabled = false; } } Nur weiß ich nicht, was in die Klammern gehört - Was heißt denn dieses "System::Object ^ sender, System::EventArgs ^ e" ??? // // textBox1 // this->textBox1->Location = System::Drawing::Point(278, 21); this->textBox1->Name = L"textBox1"; this->textBox1->Size = System::Drawing::Size(160, 20); this->textBox1->TabIndex = 1; this->textBox1->Click += gcnew System::EventHandler(this, &Form1::AktiviereDieNaechsteSchaltflaeche); Hier nehme ich an, dass die Anweisung "Click" unpassend ist, denn so würden die Schaltflächen ja nur aktiviert, wenn ich in das Textfeld klicke, ich habe mir mal durchgelesen, was man außer "Click" noch verwenden kann aber nichts passendes gefunden - Vielleicht kann man sowas machen wie "If this has a value" oder so ähnlich. Denn die Schaltflächen Ja/Nein sollen ja automatisch erscheinen, wenn in den Textfeldern etwas steht. Achja textBox2 habe ich jetzt nich dahin geschrieben. Der Code müsste ja genauso aussehen. Zitieren
Shadowman Geschrieben 17. Februar 2009 Geschrieben 17. Februar 2009 (bearbeitet) Das ist die Funktion: private: System::Void AktiviereDieNaechsteSchaltflaeche(System::Object^ sender, System::EventArgs^ e) { if (this->textBox1->Text != "" && this->textBox2->Text != "") { button3->System::Windows::Forms::Control::Enabled = true; button4->System::Windows::Forms::Control::Enabled = true; } else { button3->System::Windows::Forms::Control::Enabled = false; button4->System::Windows::Forms::Control::Enabled = false; } } und: this->textBox1->TextChanged += gcnew System::EventHandler(this, &Form1::AktiviereDieNaechsteSchaltflaeche); this->textBox2->TextChanged += gcnew System::EventHandler(this, &Form1::AktiviereDieNaechsteSchaltflaeche); Btw. ich werde jetzt auch Feierabend machen. Wenn du morgen noch weiter Hilfe brauchst meld dich einfach Bearbeitet 17. Februar 2009 von Shadowman Zitieren
Sandfish Geschrieben 17. Februar 2009 Autor Geschrieben 17. Februar 2009 Okay noch einen schönen Feierabend und vielen Dank nochmal. Der Compiler wirft mir folgenden Fehler aus, wenn ich deinen Code eintrage: ------ Erstellen gestartet: Projekt: DHCP_database_importer, Konfiguration: Debug Win32 ------ Kompilieren... DHCP_database_importer.cpp m:\visual studio 2008\projects\dhcp_database_importer\dhcp_database_importer\Form1.h(530) : error C2446: '!=': Keine Konvertierung von 'const char *' in 'System::Windows::Forms::TextBox ^' Ursache: Konvertierung von 'const char *' in 'System::Windows::Forms::TextBox ^' nicht möglich Es ist kein benutzerdefinierter Konvertierungsoperator verfügbar, oder Ein nicht verwalteter Typ kann nicht in einen verwalteten Typ umgewandelt werden m:\visual studio 2008\projects\dhcp_database_importer\dhcp_database_importer\Form1.h(530) : error C2440: '!=': 'const char [1]' kann nicht in 'System::Windows::Forms::TextBox ^' konvertiert werden Das Buildprotokoll wurde unter "file://m:\Visual Studio 2008\Projects\DHCP_database_importer\DHCP_database_importer\Debug\BuildLog.htm" gespeichert. DHCP_database_importer - 2 Fehler, 0 Warnung(en) ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ========== Ich schaue morgen mal ob ich sehe woran es liegt (Finde es wahrscheinlich nicht raus xD), wäre echt klasse wenn du das auch machen könntest. Bis morgen Zitieren
Gateway_man Geschrieben 17. Februar 2009 Geschrieben 17. Februar 2009 nur mal ganz am rande mir scheint das es extreme lücken der Grundlagen gibt. Jetzt nicht zu negativ aufnehmen. mir ist es nunmal nur als erstes ins auge gefallen. Ich meine du must es ja auch verstehen und dir nicht jeden fehler von shadowsman korrigieren lassen ;-) . Was wenn du es deinem Vorgesetzten erklären sollst. mfg simon Zitieren
Sandfish Geschrieben 17. Februar 2009 Autor Geschrieben 17. Februar 2009 (bearbeitet) Ich habe doch geschrieben, dass ich noch nie mit Windows-GUIs programmiert habe. (Siehe einige Postings zuvor) Grundlagen sind ein recht dehnbarer Begriff. Eine normale Konsolenanwendung in C++ kann ich schreiben. Von sowas: "System::Windows::Forms::TextBox" habe ich keine Ahnung. Wenn du ein gutes TUT hast, bin ich gerne bereit mich fortzubilden Naja ich versuche das zu verstehen, was er macht um es beim nächsten Mal besser zu machen. Meine Chefs verlangen das nicht von mir (bin Azubi) - Aber sie würden sich freuen, wenn das auch grafisch lösbar wäre. Bearbeitet 17. Februar 2009 von Sandfish Zitieren
Shadowman Geschrieben 17. Februar 2009 Geschrieben 17. Februar 2009 also bei mir funktioniert der Vergleich von this->textBox1->text und "" Das könnte aber möglicherweise helfen: private: System::Void AktiviereDieNaechsteSchaltflaeche(System::Object^ sender, System::EventArgs^ e) { if (Convert::ToString(this->textBox1->Text) != "" && Convert::ToString(this->textBox2->Text) != "") { this->button3->Enabled = true; this->button4->Enabled = true; } else { this->button3->Enabled = false; this->button4->Enabled = false; } } Zitieren
Sandfish Geschrieben 18. Februar 2009 Autor Geschrieben 18. Februar 2009 Danke es geht Bevor ich jetzt weitermache, würde ich ganz gerne Versionsbeschreibungen wie Copyright, Version, Autor usw. eintragen, damit ich hinterher verschiedene Versionen meines Programms auseinander halten kann. Ähnlich wie hier: Bisher sieht es noch so aus: Die Schaltfläche "Version" fehlt Ich habe gegoogelt aber vielleicht die falschen Suchwörter eingegeben, jedenfalls habe ich nichts gefunden. Weißt du Rat? Zitieren
Shadowman Geschrieben 18. Februar 2009 Geschrieben 18. Februar 2009 Ich habe leider auf die Schnelle auch nichts gefunden. Sowas ähnliches findest du aber unter Dateiinfo -> Erweitert Zitieren
Sandfish Geschrieben 18. Februar 2009 Autor Geschrieben 18. Februar 2009 Schade. Ja das kenne ich schon, ich möchte aber natürlich nicht, dass jeder Benutzer die Dateiinfo einfach ändern kann. Vielleicht weiß ja jemand anders hier im Forum bescheid? Ich werde jedenfalls weitergoogeln und wenn ich was finde das Ergebnis hier posten. Vielleicht ist das ja auch für andere Leute interessant. p.s. Du müsstest ne PN oder so bekommen haben. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.