ausgabe über TMemo



  • folgendes problem: ein datensatz soll über die komponente TMemo ausgegeben werden. die methode dazu wird global definiert.
    gebe ich in dieser methode z.b. an:

    Memo1->Text=zugriff->temperatur;

    meldet der compiler: 'Memo1' undefiniertes symbol.
    wie kann ich die daten ausgeben???



  • mmmh so ohne code .... und was meinst du genau mit global definiert. eigene klasse ? kennt dieses klsse oder funktion die Form in der dein Memo liegt ? alle includes da wo sie sein sollen ? 😋



  • Moin Moin,

    wenn Du die Funktion global definiert hast, kennt natürlich diese Funktion
    Deine Instanz der Klasse TMemo nicht.

    Da hilft Dir sicherlich ein Zeiger.

    TMemo *pMemo;
    pMemo=Form1->Memo1;
    pMemo->Text=zugriff->temperatur;

    epidemic



  • danke, das mit dem zeiger funktioniert!



  • Wobei du natürlich keinen zusätzlichen Zeiger benutzen musst.
    Form1->Memo1->Text tut es genauso.



  • hallo,

    ..aber das mit dem zeiger ist natürlich viiieeeeel schöner, da muß man auch erst mal draufkommen, vor allem wenn man mehrere aufrufe dieser art hat, erspart einem diese art das lästige Form1->... Form1->... Form1->...

    mfg
    murph



  • Jansen schrieb:

    Wobei du natürlich keinen zusätzlichen Zeiger benutzen musst.
    Form1->Memo1->Text tut es genauso.

    Ja das Stimmt.
    Wenn sich allerdings die o.g. Funktion in einer anderen Implementierung
    befindet nicht so ganz im Sinne der OOP.

    epidemic



  • epidemic schrieb:

    nicht so ganz im Sinne der OOP.

    Häh? Ich sehe den Bezug zu OOP nicht.
    Alles was dein Beispiel macht ist, dass es dir Tipparbeit abnimmt.

    murphy schrieb:

    da muß man auch erst mal draufkommen

    Na komm, das wurde hier doch schon zig mal diskutiert, üblicherweise als Ersatzlösung für das with aus Delphi.



  • @Jansen:

    ich schon.

    Oder sind TMemo und TForm keine Klassen?

    Weißt Du in welcher implementierung diese stecken?

    Ich nicht.

    epidemic



  • Ich kann dir nicht folgen. Statt des Memo könnte da ja genausogut z.B. ein Integerarray oder ein Struct stehen, was hat das mit Klassen zu tun?

    Ob du Form1->Memo1 nun einmal aufrufst (bei der Zuweisung an den temporären Zeiger) oder mehrmals (beim wiederholten direkten Zugriff), du musst trotzdem wissen, wessen Member das Memo ist. Dein temporärer Zeiger ist doch kein neues Objekt.



  • epidemic schrieb:

    Weißt Du in welcher implementierung diese stecken?

    Ich nicht.

    und dann haust du ein Pointer drauf ?

    mal im ernst OOP= Objektorientiertes Programmieren hat nichts damit zu tun.

    Was du machst ist lediglich ein Pointer auf eine Adresse zeigen zu lassen, wo bereits ein Pointer drauf zeigt.

    Ist nicht verkehrt, aber überflüssig...



  • Zwei Moderatoren gegen einen Sterblichen.

    Das kann nicht gut enden.
    Aber ich gebe ja nicht auf(noch nicht)

    Andreas W,

    Es gibt auch Zeiger auf Zeiger auf ...

    Dazu kommt noch das Thema "Spaghetti Code"(z.bsp. bei größeren Projekten mit
    sagen wir mal 20 TForm instanzen).
    Ist das Im Sinne von OOP zu sagen:
    ich includiere die "Unit16.h" und rufe im Click Event des Butonns des Formulars Numero 2
    die Methode Form16->Memo1->Clear() auf.
    Ist dies Im Sinne der OOP?
    In meinen Augen nicht.
    Thema Kapselung(Stroustrup Seite 811)

    Eher in der Deklaration/Implementierung der Klasse TForm2 den member
    TMemo *pMemo_KundenlisteForm1 auf Form16->Memo zeigen.

    Bei den MFCs wirds auch so gehandelt.(ohne die MFCs zu bevorzugen)

    Aber, ich lasse mich gerne korrigieren.
    epidemic


Anmelden zum Antworten