If befehl der erkennt ob ein objekt exestiert



  • ich vestehe es doch ich habe nur was falsch kopiert



  • Na siehste, jetzt biste schon ein Fortgeschrittener 😃



  • ok trotzdem exestiert ein problem und zwar wollte ich ein programm schreiben das wenn kein edit feld exestiert eins einfügt
    und wenn ein edit feld existiert soll er ein neues erstellen das darunter auftacht. 🙄



  • Was ist denn genau das Problem für Dich ?



  • Da du ja den FAQ-Eintrag nun benutzen kannst und das Erstellen von Editfeldern zur Laufzeit auch kein großes Problem darstellt (du weißt ja jetzt wie hilfreich die FAQ ist...) sollte es ja kein großes Problem geben, oder?



  • Peter schrieb:

    Was ist denn genau das Problem für Dich ?

    mein problem ist das wen ich TForm1 durch TEdit1 Ersetze und caption durch text ersettze kann ich das programm zwar starten aber es funktionier trotzdem nicht schprich die texte werden nicht umgeschrieben und es entsteht ein fehler.



  • Welcher Fehler, und wie wär's mal mit dem entsprechenden Abschnitt deines Codes?



  • Jansen schrieb:

    Welcher Fehler, und wie wär's mal mit dem entsprechenden Abschnitt deines Codes?

    //so sah das programm ursprünglich aus
        for(int i=0; i < Form1->ComponentCount; i++) 
        { 
            // Alle Labels verändern 
            if (Form1->Components[i]->ClassNameIs("TLabel")) 
            { 
                dynamic_cast<TLabel*>(Form1->Components[i])->Caption ="Alle Labels auf gleichen Wert setzen";
    
            } 
    
            // oder eine spezielle Behandlung 
            if (Form1->Components[i]->ClassNameIs("TLabel")) 
            { 
                if (dynamic_cast<TLabel*>(Form1->Components[i])->Name == "Label1") 
                    dynamic_cast<TLabel*>(Form1->Components[i])->Caption = "Ausnahme Label1"; 
            } 
        } 
    
    //so habe ich das programm verändert :p 
    {
        for(int i=0; i < Form1->ComponentCount; i++)
        {
            if (Form1->Components[i]->ClassNameIs("TEdit"))
            {
                dynamic_cast<TEdit*>(Form1->Components[i])->Text = "Alle Edit Felder auf gleichen Wert setzen";
            }
    
            if (Form1->Components[i]->ClassNameIs("TEdit1"))
            {
                if (dynamic_cast<TEdit*>(Form1->Components[i])->Name == "Edit1")
                    dynamic_cast<TEdit*>(Form1->Components[i])->Text = "Ausnahme Edit1";
            }
    
        }
    
    }
    

    Mann kann das Programm kompilieren aber es liefert nicht dir gewünschten auswurf ergebnisse.

    Edit:
    Bitte die Code-Tags benutzen. Danke!



  • Ich habe so das dumpfe Gefühl, Du hast überhaupt nicht verstanden was die Programmzeilen anstellen 🙄
    Was willst Du damit eigentlich genau erreichen ?



  • Peter schrieb:

    Ich habe so das dumpfe Gefühl, Du hast überhaupt nicht verstanden was die Programmzeilen anstellen
    Was willst Du damit eigentlich genau erreichen ?

    Da hast du wahrscheinlich nicht ganz unrecht das ich das nich ganz
    verschtanden habe. 🙄
    Ich wollte ja eigentlich ursprünglich ein Button haben auf den ich klicken kann bei dem nach jedem klick ein Edit feld unter einem anderen entsteht.
    Ich möchte das der code da unten nicht nach einem klick sondern einzel abgearbeitet wird.
    Aber vorher soll er gucken ob es das Editfeld1 überhaupt exestiert bevor er das 2 macht.

    TEdit* a = new TEdit(this);
    a->Parent = this;
    a->Left = 8;
    a->Top = 400;
    a->Text = 2;
    a->Width =41;
    a->Height=24;
    
    TEdit* g = new TEdit(this);
    g->Parent = this;
    g->Left = 8;
    g->Top = 424;
    g->Text = "3";
    g->Width =41;
    g->Height=24;
    


  • Geh Schritt für Schritt vor, nicht alles auf einmal. Bau dir erst mal eine Subroutine welche überprüft, ob ein Editfeld überhaupt da ist. Überleg Dir, was Du dieser Routine übergeben willst (kann auch nichts sein) und was als Ergebniss zurückgegeben werden soll (z.B. bool Wert). Teste diese Routine aus und wenn alles zu Deiner Zufriedenheit funktioniert, überleg Dir die weitere Vorgehensweise. Es ist oft sehr praktikabel, eine Gesamtausfgabe in mehrere Unteraufgaben (Subroutinen) aufzuteilen. Das macht das Ganze nicht nur übersichtlicher, sondern man kann die einzelnen Routinen auch wunderbar austesten. Komplexere Aufgaben kann man dann z.B. auch in Klassen kapseln ...


Anmelden zum Antworten