variable weitergeben



  • *Haarerauf*

    Eine Funktion von Hand anzulegen ist einfach:

    Du schreibst ihre Definition in die Headerdatei deiner Klasse und den Rumpf in die Cpp-Datei. Dabei kannst du dich an dem Schema orientieren, das die anderen Funktionen dort einhalten.

    PS: Das sind C++ Grundlagen. Du bist wohl noch nicht lange dabei?



  • sorry,

    aber irgendwie steh ich auf dem schlauch....

    kann das sein das setText eigentlich setString heissen sollte????

    ist eigentlich auch egal es zeigt mir immer einen fehler an ....



  • Der Funktionsname ist total egal, ich wusste ja nicht, wie die Funktion bei dir heisst.

    Was für ein Fehler?



  • so ganz komisch
    kein normaler, hab leider alles raus gelöscht sonst würde ich es dir sagen können.
    wenn ich das richtig verstanden hab erstelle ich zweimal die funktion setString, einmal in in der zweiten und einmal in der dritten klassé/fenster.
    so dann hab ich die Variablen file_name schicke ich mit
    m_...dlg.SetString(file_name) an die funktion setString dort ist die hilfs Variable strfile_name, so und dann muss ich ja das ganze ans dritte fenster weiter schicken
    usw.
    kann das sein das es einfacher geht wenn ich eine neue klasse erstelle und auf diese dann immer zugreife....



  • Also, du scheinst meine Erklärung verstanden zu haben. 🙂

    Natürlich geht es auch anders, viele Wege führen nach Rom. 😃

    Du könntest eine Variable in der von CWinApp abgeleiteten Klasse anlegen, dir mit AfxGetApp einen Zeiger auf die holen und dann da speichern und abfragen. Das ist auch ein Weg - ich würde ihn nicht gehen wollen. Geschmackssache.

    Es gibt noch andere Möglichkeiten, aber nach DEN Verständigungsschwierigkeiten wäre es zuviel...

    Tipp für's nächste Mal: Beschreibe genauer, welche Klasse welche aufruft und wie der Ablauf gedacht ist. (In dem Stil: Ich gebe in Klasse Bla den Text ein, Klasse soundo fragt den ab, ruft Klasse laber auf und die ruft dann Klasse sülz auf, wo das verarbeitet werden soll.)

    Viel Erfolg noch 🙂



  • hallo,

    steh bei der neuen klasse schon vor einem rätsel....
    daher war es wahrscheinlich keine so gute idee.
    aber vielleicht kannst du ja helfen was gibt es den ausser CObjekt für klassen für den typ???
    Die mag er glaub ich nicht, zumindest bei mir nicht:

    error C2504: 'CObjekt' : Basisklasse undefiniert

    und wie definier ich sie????



  • *hüstel*

    Meinst du vielleicht CObject? 😃
    (Man beachte das c statt dem k)



  • ich habe es so und so geschrieben aber jedesmal gibt es einen fehler...
    ist das den die richtige klasse (CObject) oder gibt es da noch andere besser geeignete??
    dann muss ich doch im prinzip nur einer variablen den inhalt von file_name übergeben und auf die kann ich dann zugreifen, oder muss ich noch eine varible haben???



  • So langsam hat mich die Blondseuche erwischt, ich versteh dich einfach nicht mehr. Wenn du dein Preoblem nicht mal in klaren Worten beschreibst, gebe ich auf.



  • Das problem ist das ich nichts geregelt bekomme...
    ich bekomme es einfach nicht gebacken, nach deinen vorgaben eine variable,klasse ect zu erstellen.

    Alles was ich möchte ist ein kurzer einfacher weg eine varible vom typ cstring zwei dialogfelder weiter zuschicken, sei es nun über eine extra klasse oder sonst wie.
    ich habe das jetzt schon einpaar mal probiert mit dem setstring von dir aber das klapp gar nicht.
    Ich bin wahrscheinlich einfach nur zu rein blond 😃



  • estartu_de schrieb:

    Du könntest eine Variable in der von CWinApp abgeleiteten Klasse anlegen, dir mit AfxGetApp einen Zeiger auf die holen und dann da speichern und abfragen. Das ist auch ein Weg - ich würde ihn nicht gehen wollen. Geschmackssache.

    wie mach ich das genau
    member -funktion vom typ Cwinapp, deklaration afxgetapp???
    oder wie ????



  • Pass mal auf, ich bin auch blond und finde deine Bemerkung irgendwie nicht wirklich witzig - sie ist eine Ausrede.

    Guck doch mal in die MSDN, AfxGetApp ist ein Befehl, den du dort findest.



  • entschuldigung, war eigentlich nicht böse oder so gemeint...

    darunter steht in der msdn:

    AfxGetApp
    CWinApp* AfxGetApp( );

    Return Value

    A pointer to the single CWinApp object for the application.

    Remarks

    The pointer returned by this function can be used to access application information such as the main message-dispatch code or the topmost window

    aber mehr nicht,....



  • Okay, schon verziehen...

    Du hast also die Hilfe gelesen, aber nicht verstanden.

    Also, du kriegst da einen Zeiger auf ein CWinApp Objekt. Den musst du auf dein App-Objekt casten und dann kannst du auf dessen Member zugreifen.

    Du musst also in etwa folgendes machen:

    In deiner von CWinApp abgeleiteten Klasse (ich nenne sie ab jetzt CMyApp) erstellst du eine neue Variable (Typ CString, ich nenne sie hier m_strText) die public ist (um Arbeit zu sparen - solltest du irgendwann besser machen).

    Der Zugriff von aussen funktionier dann wie folgt:

    CMyApp* pApp = dynamic_cast<CMyApp*>(AfxGetApp());
    ASSERT(pApp);
    if (pApp)
    {
        pApp->m_strText = "Beispieltext"; // Reinschreiben
        CString strTemp = pApp->m_strText;  // Auslesen
    }
    

    Unbekannte Befehle schlag bitte zuerst in der MSDN nach.



  • hallo,

    danke das du mir hilfst, aber irgendwie komme ich mit deiner hilfe nicht weiter.... ich bin daran gewöhnt schritt für schritt alles gesagt zu bekommen (Buch: Visual c++ 6 in 21 Tagen), daher komm ich nicht mit was ich machen soll. ich hab eine abgeleitete klasse von winapp, woher kommt die ....????
    Ausserdem wohin mit diesem teil von code den du gepostet hast.
    ich bekomme eine warnung und das prog lässt sich schon gar nicht mehr öffnen...



  • Also, ich bin kein Buch - du musst dir einen Teil der Infos aus deinem Wissen holen, das du mit dem Durcharbeiten des Buches erworben haben solltest. Das setze ich als selbstverständlich voraus. Eine Funktion erstellen ist Grundlagenwissen.

    Der Code muss da hin, wo du auf die Variable zugreifen willst - wo das ist, weisst nur du.

    Die Klasse wird automatisch mit deinem Projekt erstellt. Wenn dein Projekt Test heisst, heisst die Klasse CTestApp.

    Guck dir mal das Tutorial an, ist SEHR zu empfehlen: http://www.henkessoft.de/

    Ansonsten solltest du mal die Tutorialecke dieser Seite durchforsten: http://www.c-plusplus.net/tutorials.htm

    Tja, eigentlich kann ich nur noch feststellen - Visual C++ 6 in 21 Tagen ist so schlecht als Lehrbuch wie ich es immer fand. Deswegen habe ich es bis heute nicht und noch nie gebraucht 😃

    Wenn du gut Englisch kannst, solltest du dir das Buch "Programming Windows with MFC" von Jeff Prosise zulegen (Gilt in gewissen Kreisen als Bibel für VC++). Das finde ich klasse und der fängt mit kleinen, einfachen Progrämmchen an, aber Vorsicht, der geht schnell in die Vollen. Du solltest dich aber vorher oder nebenher mit den Grundlagen von C++ befassen (Was ist eine Klasse? Was sind Member? Vererbung, Objektorientierung). Das Buch gab es mal auf Deutsch, ist leider kaum noch zu kriegen (Windowsprogrammierung mit MFC).



  • danke
    ich werde in den tutorials mal vorbei schauen.
    das Problem an diesem doofen buch ... in 21 Tagen ist, das alles nur ein wenig angeschnitten wird aber wenn man dann was richtiges macht findet man in dem buch nur schrott. Ich sag nur verkettet liste
    für eine sdi anwendung steht sie drin, aber für dialogbasiert steht einfach nur die anmerkung das irgendeinteil selbst per hand erstellt werden muss, hallo... wäre es nicht interessanter das zumachen und nicht sich mit anderen mist sich rumzuärgern.

    aber noch was ich erstelle eine neue klasse mit der endung app richtig???
    ich hab ein mit dlg endung hängt vielleicht schon daran ??
    ich erstelle jetzt noch eine neue klasse mit endung app,...
    mal sehen wie wweit ich heute dann noch komme.



  • NEIN!

    Keine neue Klasse erstellen!!!!

    Du hast die schon. Guck mal deine KLassennamen durch.

    Du hast eine Dialogbasierte Anwendung erstellt, dann hast du eine Klasse, wo in der Funktion InitInstance() dein Dialog geöffnet wird.

    Arbeite doch mal mit den Befehl Bearbeiten->"Suchen in Dateien". Da gibst du mal "InitInstance" ein.

    In den Suchergebnissen sollte dann etwas wie

    virtual BOOL InitInstance();
    BOOL CTestApp::InitInstance()

    zu finden sein.

    Die obere Zeile ist in der .h Datei der gesuchten Klasse und die untere ist in der cpp Datei. Nun solltest du dadurch herausgefunden haben, wie deine Applikationsklasse heisst (hier: CTestApp). In die kannst du jetzt per "Membervariable hinzufügen" die Variable einbauen.

    War das verständlich? 😞 😕



  • OK, trotz Fehlermeldung gespeichert - ups.



  • @ estartu_de
    Ich bewundere Deine Geduld! 😃


Anmelden zum Antworten