need help @ windows forms code



  • Hi,

    also erstma, ich bin neu hier! Hab gerade meine Ausbildung als Anwendungsentwickler angefangen, nur sind ATM keine Entwickler im haus, also bin ich auf mich allein gestellt was das coden angeht.
    mit standard c++ habe ich schon so einige erfahrungen. jetz will ich mit visual c++ ein programm erzeugen welches auch eine GUI hat. ich habs mit windows forms gemacht. das design is fertig und funzt auch alles (meine datei heisst jetzt Form1.h) und der designer hat 2 datein erstellt: Form1.h und eine Form1.cpp datei.

    meinen code hab ich in die .cpp rein, es is eine funktion die eine string wieder gibt. nun will ich diese funktion in der Form1.h (GUI) benutzen, wie stell ich das an?

    einmal der aufruf in der headerdatei:

    this->lblUser->Text = converter(gewinnt::Langeweile::txtUser->Text);
    

    und dann die funktion in der .cpp datei:

    string converter(string x)
    {
    		string ergebnis;
    		string temp;
    		int a=0,y=atoi(x.c_str());
    		int b=0;
    		while(y>0)
    		{
    			b = y%2;
    			y=y/2;
    			char sz[32];
    			sprintf(sz, "%d",b);
    			ergebnis = sz + ergebnis;
    			a++;
    		}
    		return ergebnis;
    }
    

    muss ich in die headerdatei #include "Form1.cpp" schreiben??? habs natürlich schon probiert. das kommt dann bei raus:

    Kompilieren...
    Form1.cpp
    c:\Dokumente und Einstellungen\jp\Eigene Dateien\Visual Studio Projects\4gewinnt\Form1.h(190) : error C3861: 'converter': Bezeichner wurde auch mit einer argumentbezogenen Suche nicht gefunden
    Form1.cpp(20) : error C2365: 'converter': Erneute Definition; vorherige Definition war 'Ehemals unbekannter Bezeichner'

    hilfe wär fit 🙂



  • a) Du wirst native und C++/CLI mischen. Solltest Du nicht machen. (std::string passt nicht zu System::String)

    b) Deklarationen musst Du im Header machen. Machst Du diese in der .cpp Datei, ist diese auch nur in der .cpp Sichtbar. Mach eine Funktionsdeklaration in einem Header, den Du ggf. überall da inkludierst, wo die Funktion aufgerufen wird.

    Irgendwas.h

    std::string converter(std::string x);
    


  • ok, also das hab ich jetz verstanden. danke!

    aber wie kann ich jetz die eingaben die ich in ne text box gemacht hab in meiner funktion nutzen??



  • Du musst den verwalteten String in die unmanaged Variante überbringen.
    Je nach dem, was Du mit dem Ergebnis machst, kann es sich lohnen die Funktion neu zu Implementieren. Das hängt aber sehr von Deinem Programm ab.

    Hilfestellung (inkl. fertigem Code) für die Umwandlung von System::String -> std::string findest Du in der FAQ



  • alles klar... alles funzt
    thanx @ Knuddlbaer!!!


Anmelden zum Antworten