GUI Programmierung mit C++



  • //Die Begrüßung
    Hallo Freunde!

    //Die Grundlage
    Ich muss für eine Projektaufgabe im Rahmen der Techniker Ausbildung ein lachhaftes Programm erstellen.
    Es ist sehr schwierig bei diesem "Lehrer" gute Noten zu bekommen, also habe ich mir vorgenommen das ganze nicht in einer Konsolenanwendung, sondern mit grafischer Benutzeroberfläche zu programmieren.
    Ich arbeite mit Visual Studio 2012 Ultimate, welches ich über Dreamspark kostenlos beziehen konnte.
    Mein Interesse an der Programmierung ist sehr groß aber ich kann leider noch nicht so wie ich will.

    //Das Programm
    Wir müssen ein Programm schreiben, welches Reglereinstellungen nach CHR berechnet, dafür haben wir eine Tabelle mit 12 Formelpaketen, die je nach Reglerart und gewünschtem Streckenverhalten gewählt werden müssen. Dann müssen die Variablen Werte (jeweils 3) eingegeben und berechnet werden.

    //Meine Herangehensweise
    Ich habe unter C++ CLI eine Windows Form Klasse hinzugefügt und meine benötigten Buttons gesetzt. Da bei VS2012 der Einstieg nicht automatisch gesetzt wird, habe ich eine "Quelle.cpp" erstellt, dort die MyForm.h eingebunden und den Startpunkt mit "void Main(array<String> args)" definiert.

    Durch Klick events werden die jeweils nächsten buttons sichtbar und die alten verschwinden. ausserdem gibt jeder Button einer Variable einen bestimmten Wert.
    Das ist um hinterher die richtige Formel wählen zu können.

    //Mein Plan
    Wenn die Randparameter nun bestimmt wurden, soll sich ein 2. Fenster mit 3 Textboxen öffnen, wo die Variabelen eingegeben werden können.
    diese Werte müssen nun als "double" an die "Quelle.cpp" übergeben werden, wo die Berechnungen passieren. auch die Variablen, die durch die klick events geändert werden, sollen natürlich übergeben werden. nun findet in Unterprogrammen (Vorgabe) die Berechnung statt. Das Ergebnis muss nun wieder zurück in das 2. Fenster und dort als Label ausgegeben werden.

    //Hier meine Programmcodes (wie gesagt ich bin noch mittendrin):

    Fenster 1 (Buttons)

    #pragma once
    #include "MyForm2.h"
    #include "Quelle.cpp"
    #include <iostream>
    #include <conio.h>
    #include <cstdlib>
    #include <string>
    #include <iomanip>
    #include <cmath>
    #include <Windows.h>
    
    namespace TEST {
    
    	using namespace std;
    	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 MyForm
    	/// </summary>
    	public ref class MyForm : public System::Windows::Forms::Form
    	{
    	public: MyForm(void)
    		{
    			InitializeComponent();
    			//
    			//TODO: Konstruktorcode hier hinzufügen.
    			//
    		}
    
    	protected:
    		/// <summary>
    		/// Verwendete Ressourcen bereinigen.
    		/// </summary>
    		~MyForm()
    		{
    			if (components)
    			{
    				delete components;
    			}
    		}
    	private: System::Windows::Forms::Button^  button1;
    	protected: 
    	private: System::Windows::Forms::Button^  button2;
    	private: System::Windows::Forms::Button^  button3;
    	private: System::Windows::Forms::Button^  button4;
    	private: System::Windows::Forms::Button^  button5;
    	private: System::Windows::Forms::Button^  button6;
    	private: System::Windows::Forms::Button^  button7;
    	private: System::Windows::Forms::Label^  label1;
    	private: System::Windows::Forms::Label^  label2;
    	private: System::Windows::Forms::Label^  label3;
    
    	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->button1 = (gcnew System::Windows::Forms::Button());
    			this->button2 = (gcnew System::Windows::Forms::Button());
    			this->button3 = (gcnew System::Windows::Forms::Button());
    			this->button4 = (gcnew System::Windows::Forms::Button());
    			this->button5 = (gcnew System::Windows::Forms::Button());
    			this->button6 = (gcnew System::Windows::Forms::Button());
    			this->button7 = (gcnew System::Windows::Forms::Button());
    			this->label1 = (gcnew System::Windows::Forms::Label());
    			this->label2 = (gcnew System::Windows::Forms::Label());
    			this->label3 = (gcnew System::Windows::Forms::Label());
    			this->SuspendLayout();
    			// 
    			// button1
    			// 
    			this->button1->Location = System::Drawing::Point(12, 43);
    			this->button1->Name = L"button1";
    			this->button1->Size = System::Drawing::Size(75, 23);
    			this->button1->TabIndex = 0;
    			this->button1->Text = L"P - Regler";
    			this->button1->UseVisualStyleBackColor = true;
    			this->button1->Click += gcnew System::EventHandler(this, &MyForm::button1_Click);
    			// 
    			// button2
    			// 
    			this->button2->Location = System::Drawing::Point(107, 43);
    			this->button2->Name = L"button2";
    			this->button2->Size = System::Drawing::Size(75, 23);
    			this->button2->TabIndex = 1;
    			this->button2->Text = L"PI - Regler";
    			this->button2->UseVisualStyleBackColor = true;
    			this->button2->Click += gcnew System::EventHandler(this, &MyForm::button2_Click);
    			// 
    			// button3
    			// 
    			this->button3->Location = System::Drawing::Point(197, 43);
    			this->button3->Name = L"button3";
    			this->button3->Size = System::Drawing::Size(75, 23);
    			this->button3->TabIndex = 2;
    			this->button3->Text = L"PID - Regler";
    			this->button3->UseVisualStyleBackColor = true;
    			this->button3->Click += gcnew System::EventHandler(this, &MyForm::button3_Click);
    			// 
    			// button4
    			// 
    			this->button4->Location = System::Drawing::Point(12, 43);
    			this->button4->Name = L"button4";
    			this->button4->Size = System::Drawing::Size(129, 23);
    			this->button4->TabIndex = 3;
    			this->button4->Text = L"20% Überschwingen";
    			this->button4->UseVisualStyleBackColor = true;
    			this->button4->Visible = false;
    			this->button4->Click += gcnew System::EventHandler(this, &MyForm::button4_Click);
    			// 
    			// button5
    			// 
    			this->button5->Location = System::Drawing::Point(147, 43);
    			this->button5->Name = L"button5";
    			this->button5->Size = System::Drawing::Size(125, 23);
    			this->button5->TabIndex = 4;
    			this->button5->Text = L"Aperiodischer Verlauf";
    			this->button5->UseVisualStyleBackColor = true;
    			this->button5->Visible = false;
    			this->button5->Click += gcnew System::EventHandler(this, &MyForm::button5_Click);
    			// 
    			// button6
    			// 
    			this->button6->Location = System::Drawing::Point(41, 42);
    			this->button6->Name = L"button6";
    			this->button6->Size = System::Drawing::Size(75, 23);
    			this->button6->TabIndex = 5;
    			this->button6->Text = L"Störung";
    			this->button6->UseVisualStyleBackColor = true;
    			this->button6->Visible = false;
    			this->button6->Click += gcnew System::EventHandler(this, &MyForm::button6_Click);
    			// 
    			// button7
    			// 
    			this->button7->Location = System::Drawing::Point(173, 42);
    			this->button7->Name = L"button7";
    			this->button7->Size = System::Drawing::Size(75, 23);
    			this->button7->TabIndex = 6;
    			this->button7->Text = L"Führung";
    			this->button7->UseVisualStyleBackColor = true;
    			this->button7->Visible = false;
    			this->button7->Click += gcnew System::EventHandler(this, &MyForm::button7_Click);
    			// 
    			// label1
    			// 
    			this->label1->AutoSize = true;
    			this->label1->Location = System::Drawing::Point(41, 13);
    			this->label1->Name = L"label1";
    			this->label1->Size = System::Drawing::Size(0, 13);
    			this->label1->TabIndex = 7;
    			// 
    			// label2
    			// 
    			this->label2->AutoSize = true;
    			this->label2->Location = System::Drawing::Point(104, 13);
    			this->label2->Name = L"label2";
    			this->label2->Size = System::Drawing::Size(0, 13);
    			this->label2->TabIndex = 8;
    			// 
    			// label3
    			// 
    			this->label3->AutoSize = true;
    			this->label3->Location = System::Drawing::Point(213, 12);
    			this->label3->Name = L"label3";
    			this->label3->Size = System::Drawing::Size(0, 13);
    			this->label3->TabIndex = 9;
    			// 
    			// MyForm
    			// 
    			this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
    			this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
    			this->ClientSize = System::Drawing::Size(288, 92);
    			this->Controls->Add(this->label3);
    			this->Controls->Add(this->label2);
    			this->Controls->Add(this->label1);
    			this->Controls->Add(this->button7);
    			this->Controls->Add(this->button6);
    			this->Controls->Add(this->button5);
    			this->Controls->Add(this->button4);
    			this->Controls->Add(this->button3);
    			this->Controls->Add(this->button2);
    			this->Controls->Add(this->button1);
    			this->Name = L"MyForm";
    			this->Text = L"Reglereinstellungen berechnen";
    			this->Load += gcnew System::EventHandler(this, &MyForm::MyForm_Load);
    			this->ResumeLayout(false);
    			this->PerformLayout();
    
    		}
    #pragma endregion
    
    	private: System::Void MyForm_Load(System::Object^  sender, System::EventArgs^  e) 
    			 {
    
    			 }
    	private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) 
    			 {
    				 this->button3->Visible = false, this->button2->Visible = false, this->button1->Visible = false;
    				 this->button4->Visible = true, this->button5->Visible = true;
    				 int a = 1;
    				 label1->Text = "P-Regler";
    			 }
    	private: System::Void button2_Click(System::Object^  sender, System::EventArgs^  e) 
    			 {
    				this->button3->Visible = false, this->button2->Visible = false, this->button1->Visible = false;
    				this->button4->Visible = true, this->button5->Visible = true;
    				int a = 2;
    				label1->Text = "PI-Regler";
    			 }
    	private: System::Void button3_Click(System::Object^  sender, System::EventArgs^  e) 
    			 {
    				this->button3->Visible = false, this->button2->Visible = false, this->button1->Visible = false;
    				this->button4->Visible = true, this->button5->Visible = true;
    				int a = 3;
    				label1->Text = "PID-Regler";
    			 }
    
    private: System::Void button4_Click(System::Object^  sender, System::EventArgs^  e) 
    		 {
    				this->button4->Visible = false, this->button5->Visible = false;
    				this->button6->Visible = true, this->button7->Visible = true;
    				int  b = 1;
    				label2->Text = "20% überschwingen";
    		 }
    private: System::Void button5_Click(System::Object^  sender, System::EventArgs^  e) 
    		 {
    				this->button4->Visible = false, this->button5->Visible = false;
    				this->button6->Visible = true, this->button7->Visible = true;
    				int b = 2;
    				label2->Text = "aperiodisch";
    		 }
    
    private: System::Void button6_Click(System::Object^  sender, System::EventArgs^  e) 
    		 {
    			 label3->Text = "Störung";
    			 MyForm2^ XY = gcnew MyForm2();
    			XY->ShowDialog();
    			int c = 1;
    			this->Close();
    		 }
    private: System::Void button7_Click(System::Object^  sender, System::EventArgs^  e) 
    		 {
    			 label3->Text = "Führung";
    			 MyForm2^ XY = gcnew MyForm2();
    			XY->ShowDialog();
    			int c = 2;
    			this->Close();
    		 }
    };
    
    }
    

    Fenster 2 (Variableneingabe, öffnet wenn in Fenster 1 die Parameter gewählt wurden)

    #pragma once
    #include "Quelle.cpp"
    #include <iostream>
    #include <conio.h>
    #include <cstdlib>
    #include <string>
    #include <iomanip>
    #include <cmath>
    #include <Windows.h>
    
    namespace TEST {
    	using namespace std;
    	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 MyForm2
    	/// </summary>
    	public ref class MyForm2 : public System::Windows::Forms::Form
    
    	{
    	public:
    	private: System::Windows::Forms::NumericUpDown^  numericUpDown1;
    	private: System::Windows::Forms::NumericUpDown^  numericUpDown2;
    	private: System::Windows::Forms::NumericUpDown^  numericUpDown3;
    	private: System::Windows::Forms::Button^  button8;
    
    	private: System::Windows::Forms::Label^  label4;
    	private: System::Windows::Forms::Label^  label5;
    	private: System::Windows::Forms::Label^  label6;
    	public:	 MyForm2(void)
    		{
    			InitializeComponent();
    			//
    			//TODO: Konstruktorcode hier hinzufügen.
    			//
    		}
    
    	protected:
    		/// <summary>
    		/// Verwendete Ressourcen bereinigen.
    		/// </summary>
    		~MyForm2()
    		{
    			if (components)
    			{
    				delete components;
    			}
    		}
    	private: System::Windows::Forms::Label^  label9;
    	protected: 
    
    	private: System::Windows::Forms::Label^  label8;
    
    	private: System::Windows::Forms::Label^  label7;
    
    	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->label9 = (gcnew System::Windows::Forms::Label());
    			this->label8 = (gcnew System::Windows::Forms::Label());
    			this->label7 = (gcnew System::Windows::Forms::Label());
    			this->label4 = (gcnew System::Windows::Forms::Label());
    			this->label5 = (gcnew System::Windows::Forms::Label());
    			this->label6 = (gcnew System::Windows::Forms::Label());
    			this->button8 = (gcnew System::Windows::Forms::Button());
    			this->numericUpDown1 = (gcnew System::Windows::Forms::NumericUpDown());
    			this->numericUpDown2 = (gcnew System::Windows::Forms::NumericUpDown());
    			this->numericUpDown3 = (gcnew System::Windows::Forms::NumericUpDown());
    			(cli::safe_cast<System::ComponentModel::ISupportInitialize^  >(this->numericUpDown1))->BeginInit();
    			(cli::safe_cast<System::ComponentModel::ISupportInitialize^  >(this->numericUpDown2))->BeginInit();
    			(cli::safe_cast<System::ComponentModel::ISupportInitialize^  >(this->numericUpDown3))->BeginInit();
    			this->SuspendLayout();
    			// 
    			// label9
    			// 
    			this->label9->AutoSize = true;
    			this->label9->Location = System::Drawing::Point(53, 168);
    			this->label9->Name = L"label9";
    			this->label9->Size = System::Drawing::Size(29, 13);
    			this->label9->TabIndex = 3;
    			this->label9->Text = L"Tg =";
    			// 
    			// label8
    			// 
    			this->label8->AutoSize = true;
    			this->label8->Location = System::Drawing::Point(53, 108);
    			this->label8->Name = L"label8";
    			this->label8->Size = System::Drawing::Size(29, 13);
    			this->label8->TabIndex = 4;
    			this->label8->Text = L"Tu =";
    			// 
    			// label7
    			// 
    			this->label7->AutoSize = true;
    			this->label7->Location = System::Drawing::Point(53, 46);
    			this->label7->Name = L"label7";
    			this->label7->Size = System::Drawing::Size(34, 13);
    			this->label7->TabIndex = 5;
    			this->label7->Text = L"Kps =";
    			// 
    			// label4
    			// 
    			this->label4->AutoSize = true;
    			this->label4->Location = System::Drawing::Point(56, 13);
    			this->label4->Name = L"label4";
    			this->label4->Size = System::Drawing::Size(0, 13);
    			this->label4->TabIndex = 6;
    			// 
    			// label5
    			// 
    			this->label5->AutoSize = true;
    			this->label5->Location = System::Drawing::Point(98, 12);
    			this->label5->Name = L"label5";
    			this->label5->Size = System::Drawing::Size(0, 13);
    			this->label5->TabIndex = 7;
    			// 
    			// label6
    			// 
    			this->label6->AutoSize = true;
    			this->label6->Location = System::Drawing::Point(140, 12);
    			this->label6->Name = L"label6";
    			this->label6->Size = System::Drawing::Size(0, 13);
    			this->label6->TabIndex = 8;
    			// 
    			// button8
    			// 
    			this->button8->Location = System::Drawing::Point(94, 214);
    			this->button8->Name = L"button8";
    			this->button8->Size = System::Drawing::Size(100, 23);
    			this->button8->TabIndex = 9;
    			this->button8->Text = L"button1";
    			this->button8->UseVisualStyleBackColor = true;
    			this->button8->Click += gcnew System::EventHandler(this, &MyForm2::button1_Click);
    			// 
    			// numericUpDown1
    			// 
    			this->numericUpDown1->Location = System::Drawing::Point(94, 44);
    			this->numericUpDown1->Maximum = System::Decimal(gcnew cli::array< System::Int32 >(4) {99999999, 0, 0, 0});
    			this->numericUpDown1->Name = L"numericUpDown1";
    			this->numericUpDown1->Size = System::Drawing::Size(120, 20);
    			this->numericUpDown1->TabIndex = 10;
    			// 
    			// numericUpDown2
    			// 
    			this->numericUpDown2->Location = System::Drawing::Point(94, 106);
    			this->numericUpDown2->Maximum = System::Decimal(gcnew cli::array< System::Int32 >(4) {99999999, 0, 0, 0});
    			this->numericUpDown2->Name = L"numericUpDown2";
    			this->numericUpDown2->Size = System::Drawing::Size(120, 20);
    			this->numericUpDown2->TabIndex = 11;
    			// 
    			// numericUpDown3
    			// 
    			this->numericUpDown3->Location = System::Drawing::Point(94, 166);
    			this->numericUpDown3->Maximum = System::Decimal(gcnew cli::array< System::Int32 >(4) {99999999, 0, 0, 0});
    			this->numericUpDown3->Name = L"numericUpDown3";
    			this->numericUpDown3->Size = System::Drawing::Size(120, 20);
    			this->numericUpDown3->TabIndex = 12;
    			// 
    			// MyForm2
    			// 
    			this->AllowDrop = true;
    			this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
    			this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
    			this->ClientSize = System::Drawing::Size(284, 262);
    			this->Controls->Add(this->numericUpDown3);
    			this->Controls->Add(this->numericUpDown2);
    			this->Controls->Add(this->numericUpDown1);
    			this->Controls->Add(this->button8);
    			this->Controls->Add(this->label6);
    			this->Controls->Add(this->label5);
    			this->Controls->Add(this->label4);
    			this->Controls->Add(this->label7);
    			this->Controls->Add(this->label8);
    			this->Controls->Add(this->label9);
    			this->Name = L"MyForm2";
    			this->Text = L"Eingabe der Werte";
    			this->Load += gcnew System::EventHandler(this, &MyForm2::MyForm2_Load);
    			(cli::safe_cast<System::ComponentModel::ISupportInitialize^  >(this->numericUpDown1))->EndInit();
    			(cli::safe_cast<System::ComponentModel::ISupportInitialize^  >(this->numericUpDown2))->EndInit();
    			(cli::safe_cast<System::ComponentModel::ISupportInitialize^  >(this->numericUpDown3))->EndInit();
    			this->ResumeLayout(false);
    			this->PerformLayout();
    
    		}
    #pragma endregion
    	private: System::Void MyForm2_Load(System::Object^  sender, System::EventArgs^  e) 
    			 {
    
    			 }
    
    public: System::Void textBox1_TextChanged(System::Object^  sender, System::EventArgs^  e) 
    		 {
    
    		 }
    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) 
    		 {
    
    			 double Kpr, Tn, Tv, Kps, Tg, Tu;
    			 int a = 1, b = 5 , c = 7;
    			 Kps = (System::Convert::ToInt32(numericUpDown1->Value));
    			 Tu = (System::Convert::ToInt32(numericUpDown2->Value));
    			 Tg = (System::Convert::ToInt32(numericUpDown3->Value));
    
    			label4->Text = a.ToString();
    			label5->Text = b.ToString();
    			label6->Text = c.ToString();
    
    	//P-Regler 20% überschw. Störung
    	Kpr = 0,7*(1/Kps)*(Tg/Tu);
    
    	//P-Regler 20% überschw. Führung
    	Kpr = 0,7*(1/Kps)*(Tg/Tu);
    
    	//P-Regler aperiodisch Störung
    	Kpr = 0,3*(1/Kps)*(Tg/Tu);
    
    	//P-Regler aperiodisch Führung
    	Kpr = 0,3*(1/Kps)*(Tg/Tu);
    
    	//PI-Regler 20% überschw. Störung
    	Kpr = 0,6*(1/Kps)*(Tg/Tu);
    	Tn = 2,3*Tu;
    
    	//PI-Regler 20% überschw. Führung
    	Kpr = 0,6*(1/Kps)*(Tg/Tu);
    	Tn = Tg;
    	//PI-Regler aperiodisch Störung
    	Kpr = 0,6*(1/Kps)*(Tg/Tu);
    	Tn = 4*Tu;
    	//PI-Regler aperiodisch Führung
    	Kpr = 0,35*(1/Kps)*(Tg/Tu);
    	Tn = 1,2*Tg;
    	//PID-Regler 20% überschw. Störung
    	Kpr = 1,2*(1/Kps)*(Tg/Tu);
    	Tn = 2*Tu;
    	Tv = 0,42*Tu;
    	//PID-Regler 20% überschw. Führung
    	Kpr = 0,95*(1/Kps)*(Tg/Tu);
    	Tn = 1,35*Tg;
    	Tv = 0,47*Tu;
    
    	//PID-Regler aperiodisch Störung
    	Kpr = 0,95*(1/Kps)*(Tg/Tu);
    	Tn = 2,4*Tg;
    	Tv = 0,42*Tu;
    	//PID-Regler aperiodisch Führung
    	Kpr = 0,6*(1/Kps)*(Tg/Tu);
    	Tn = Tg;
    	Tv =0,5*Tu;
    		 }
    };
    }
    

    Quelle.cpp:

    #include "MyForm.h"
    #include "MyForm2.h"
    #include <iostream>
    #include <conio.h>
    #include <cstdlib>
    #include <string>
    #include <iomanip>
    #include <cmath>
    #include <Windows.h>
    
    using namespace System;
    using namespace System::Windows::Forms;
    
    [STAThread]
    void Main(array<String^>^ args)
    {
    	Application::EnableVisualStyles();
    	Application::SetCompatibleTextRenderingDefault(false);
    
    	TEST::MyForm form;
    	Application::Run(%form);
    }
    

    //Ein paar probleme gelöst, neue dazugekommen:

    ich bekomme die Variablen nicht von Fenster 1 zu Fenster 2! wenn ich die beiden im jeweils anderen #include, bekomme ich fiese Fehlermeldungen!

    Nächstes Problem: Fenster 1 lässt sich nicht schließen... egal ob mit .Close() oder Hide()...

    Ist mein programm so schlecht, das gar niemand antworten mag weils aussichtslos erscheint? 😞

    Vielen Dank vorab für eure Hilfe!!!

    🙂 👍 👍



  • Niemand hier quält sich durch hunderte Zeilen Quellcode.



  • Müsst ihr das Programm in C++/CLI schreiben oder ist euch die Wahl der Sprache freigestellt!? C++/CLI ist nämlich

    1. nicht C++,
    2. nicht C++ und
    3. für GUI Entwicklung völlig ungeeignet.
      Ich würde wenn dann eher zu C# raten...

Anmelden zum Antworten