Ankündigung

Einklappen
Keine Ankündigung bisher.

c++ pro needed

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    c++ pro needed

    einer hier der fix helfenkönnte?? schreiben gerade ne arbeit

    #2
    Würde helfen wenn du etwas genauer sein könntest.

    Kommentar


      #3
      Du schreibst eine Arbeit und postest auf RM?
      Wie wäre es, wenn du einfach erstma die Frage stellst?

      Kommentar


        #4
        4. gehe in einer schleiife alle elemente der komponenten kollektion rückwärts durch. alle elemente die ein schwarzes tpanel sind, sollen gelöscht werden.



        brauchen die anweisungen dafür

        Kommentar


          #5
          5. suche die komponente, deren name in edit1 steht. wenn sie gefunden wurde und NIcht edit1 isat soll sie gelöscht werden

          Kommentar


            #6
            Pseudo-Code von 4 (da kein C++):

            var x = komponenten(0) (anzahl der komponenten);
            while (1

            Kommentar


              #7
              6. wenn der parent eines senders das panel2 ist, soll er durch Panel3 ersetzt werden und umgekehrt

              7. wenn die unterkante eines shapes TS sich innerhalb der abmessungen von panel1 befindet, soll TS sich um 1 pixel nach unten bewegen

              Kommentar


                #8
                sachma hackts bei dir?

                Kommentar


                  #9
                  ich wuerde dir ja helfen, aber dir fragen sind so alle voellig unnuetz 0o


                  ich probiers trotzdem mal allgemein..., also wenn die komponentenkollektion ein array ist, dann musst du finden wieviel eintraege das array hat, das ist irgendwo definiert.
                  zb.

                  komponentenkollektion[25];

                  dann nimmste die 25 und durchsuchst in ner forschleife:

                  int i;

                  for(i=25;i>0;i--)
                  {
                  if(komponentenkollektion[i]==schwarzestpanel)
                  {
                  komponentenkollektion[i]=0;(je nach datentyp, bei pointer NULL)
                  }
                  }


                  und 5. versteh ich dir frage nicht.

                  Kommentar


                    #10
                    [quote]slayer postete
                    Pseudo-Code von 4 (da kein C++):

                    var x = komponenten(0) (anzahl der komponenten);
                    while (1

                    Kommentar


                      #11
                      Spoiler: 

                      //---------------------------------------------------------------------------

                      #include
                      #pragma hdrstop

                      #include "Unit1.h"
                      #include "Unit2.h" //Clear();
                      int n = this->ComponentCount; //n := self.ComponentCount;
                      for (int i=0; iItems->Add(Components[i]->Name);
                      }
                      }
                      //---------------------------------------------------------------------------

                      void __fastcall TForm1::ListBox1Click(TObject *Sender)
                      {
                      Edit1->Text = ListBox1->Items->Strings[ListBox1->ItemIndex];
                      }
                      //---------------------------------------------------------------------------
                      void __fastcall TForm1::Button2Click(TObject *Sender)
                      {
                      //Objekt suchen und speichern
                      TComponent* C1; //Variable, die für alle Komponenten passt
                      //* bedeutet: dynamische Variable, Anfangsadresse im Arbeitsspeicher
                      C1 = this->FindComponent(Edit1->Text); //Error -> NULL, sonst Adresse
                      if (C1) { //nicht NULL, d.h. gültig, ergo gefunden
                      String s = C1->Name;
                      Caption = s + " gefunden.";
                      //manipuliere gefundenes Objekt
                      //1. Schieberegler-Position um 1 nach rechts
                      if (C1->ClassNameIs("TScrollBar")) ((TScrollBar*)C1)->Position += 10;
                      //2. Panel soll um 2 nach rechts rücken
                      if (C1->ClassNameIs("TPanel")) ((TPanel*)C1)->Left += 2;
                      //3. Shape soll schmaler werden
                      if (C1->ClassNameIs("TShape")) ((TShape*)C1)->Width -= 2;
                      //4. Label-Beschriftung soll weiß werden
                      if (C1->ClassNameIs("TLabel")) ((TLabel*)C1)->Font->Color = clWhite;
                      //5. CheckBox soll toggeln
                      if (C1->ClassNameIs("TCheckBox"))
                      ((TCheckBox*)C1)->Checked = ! ((TCheckBox*)C1)->Checked;
                      }
                      else {
                      Caption = Edit1->Text + " NICHT gefunden!";
                      }

                      }
                      //---------------------------------------------------------------------------
                      void __fastcall TForm1::Button3Click(TObject *Sender)
                      {
                      //Objekt suchen und speichern
                      TComponent* C1; //Variable, die für alle Komponenten passt
                      //C1->Name = "kaputt"; //access violation, weil C1 ungültig
                      //* bedeutet: dynamische Variable, Anfangsadresse im Arbeitsspeicher
                      C1 = this->FindComponent(Edit1->Text); //Error -> NULL, sonst Adresse
                      if (C1) { //nicht NULL, d.h. gültig, ergo gefunden
                      String s = C1->Name;
                      Caption = s + " gefunden.";
                      //lösche gefundenes Objekt, wenn zulässig
                      //button3 und edit1 ausnehmen
                      if ((C1 != Button3) && (C1 != Edit1)) {
                      delete C1; //C1.Free; -> C1 ungültig, Speicher freigegeben
                      }
                      else {
                      Caption = "Löschen von " + C1->Name + " verweigert, das würde ALLES zerstören, du Nerd!";
                      }
                      //auf gelöschtes darf nicht mehr zugegriffen werden
                      //sender einer routine darf sich nicht selbst löschen
                      }
                      else {
                      Caption = Edit1->Text + " NICHT gefunden!";
                      }
                      }
                      //---------------------------------------------------------------------------

                      void __fastcall TForm1::Button4Click(TObject *Sender)
                      {
                      Form2->Show();
                      //alle Komponenten die Nachfolger von TControl sind, sollen nach Form 2 umziehen
                      int n = this->ComponentCount; //n := self.ComponentCount;
                      for (int i=0; iClassType(), __classid(TControl))) {
                      ((TControl*)TC)->Parent = Form2;
                      }
                      }
                      }
                      //---------------------------------------------------------------------------

                      void __fastcall TForm1::Panel3MouseDown(TObject *Sender,
                      TMouseButton Button, TShiftState Shift, int X, int Y)
                      {
                      static int i = 0; //i ist pseudoglobal (nur hier zu sehen, nur einmal initialisiert)
                      //an der Klickposition ein Shape der Größe 5*5 in Zufallsfarbe erzeugen
                      //owner = Form1, parent = Panel3
                      TShape* S;
                      S = new TShape(this); //Formular wird Besitzer ( -> Kollektion)
                      S->Width = random(100)+5;
                      S->Height = random(100)+5;
                      S->Parent = Panel3;
                      S->Left = X;
                      S->Top = Y;
                      S->Name = "sh" + IntToStr(i++);
                      S->Brush->Color = (TColor)random(0xffffff); //Typwandlung, um Compiler zu beruhigen
                      S->OnMouseMove = Shape1MouseMove;
                      S->OnMouseDown = Shape1MouseDown;
                      }
                      //---------------------------------------------------------------------------

                      void __fastcall TForm1::Shape1MouseMove(TObject *Sender, TShiftState Shift,
                      int X, int Y)
                      {
                      /* //wenn der Sender ein TShape ist, mach ihn rot //if Sender is TShape then
                      if (InheritsFrom(Sender->ClassType(), __classid(TShape))) {
                      TShape* TS = (TShape*)Sender;
                      TS->Brush->Color = clRed;
                      }
                      */
                      ///////Änderung: mit der Maus mitbewegen (nur bei linker Maustaste)
                      ///////statt umzufärben
                      if (Shift.Contains(ssLeft)) {
                      ((TControl*)Sender)->Top += Y - y0; //top: ab tcontrol verfügbar
                      ((TControl*)Sender)->Left += X - x0;
                      }
                      }
                      //---------------------------------------------------------------------------
                      void __fastcall TForm1::Timer1Timer(TObject *Sender)
                      {
                      //gehe alle Komponenten der Kollektion durch
                      //alle TShapes, welche a) Panel3 als Parent haben und b) rot sind
                      //sollen GETÖTET werden
                      int n = ComponentCount;
                      for (int i=0; iClassType(), __classid(TShape))) {
                      TShape* TS = (TShape*)Components[i];
                      //TS->Brush->Color = clBlack; //test
                      if ((TS->Parent == Panel3) && (TS->Brush->Color==clRed)) {
                      delete TS; //löscht aus Kollektion -> ComponentCount--
                      n--; //weil es jetzt einer weniger ist
                      }
                      }
                      }
                      }
                      //---------------------------------------------------------------------------

                      void __fastcall TForm1::Panel3MouseMove(TObject *Sender, TShiftState Shift,
                      int X, int Y)
                      {
                      //bei gedrückter linker Maustaste soll ein kleines Shape hingelegt werden
                      /* if (Shift.Contains(ssLeft)) {
                      static int i = 0; //i ist pseudoglobal (nur hier zu sehen, nur einmal initialisiert)
                      //an der Klickposition ein Shape der Größe 5*5 in Zufallsfarbe erzeugen
                      //owner = Form1, parent = Panel3
                      TShape* S;
                      S = new TShape(this); //Formular wird Besitzer ( -> Kollektion)
                      S->Width = 5;
                      S->Height = 5;
                      S->Parent = Panel3;
                      S->Left = X;
                      S->Top = Y;
                      S->Name = "shm" + IntToStr(i++);
                      S->Brush->Color = (TColor)random(0xffffff); //Typwandlung, um Compiler zu beruhigen
                      S->OnMouseMove = Shape1MouseMove;
                      S->OnMouseDown = Shape1MouseDown;
                      } */
                      }
                      //---------------------------------------------------------------------------

                      void __fastcall TForm1::tmMoveTimer(TObject *Sender)
                      /*
                      Logik noch fehlerhaft.
                      Soll:
                      */
                      {
                      //gehe alle Komponenten durch. Alle Shapes, (deren Parent das Panel3 ist),
                      //sollen um ... Pixel nach unten.
                      for (int i=0; iClassType(), __classid(TShape))) {
                      TShape* TS = (TShape*)Components[i];
                      if (TS->Parent == Panel3) {
                      if ((TS->Top + TS->Height) < TS->Parent->Height-1) { //Unterkante
                      //------------------------------------------
                      //ermittle Kollision mit anderen Shapes
                      for (int j=0; jClassType(), __classid(TShape))) {
                      TShape* TS2 = (TShape*)Components[j];
                      if (TS2->Parent == Panel3) {
                      int t1 = TS->Top; int l1 = TS->Left; //Kanten von TS(1)
                      int r1 = l1 + TS->Width; int b1 = t1 + TS->Height;
                      int t2 = TS2->Top; int l2 = TS2->Left; //Kanten von TS(1)
                      int r2 = l2 + TS2->Width; int b2 = t2 + TS2->Height;
                      if ((b1>t2) && (b2>t1)) { //Kollision gefunden
                      permit=0;
                      break;
                      }
                      }
                      }
                      }
                      //-----------------------------------------
                      if (permit) TS->Top += 1; //runterfallen
                      }
                      }
                      }
                      }
                      }
                      //---------------------------------------------------------------------------

                      void __fastcall TForm1::Shape1MouseDown(TObject *Sender,
                      TMouseButton Button, TShiftState Shift, int X, int Y)
                      {
                      x0 = X; y0 = Y; //merke Mouseposition für move
                      //Umfärben, nur wenn rechte Maustaste
                      if (Shift.Contains(ssRight)) {
                      ((TShape*)Sender)->Brush->Color = clRed; //markieren zum Löschen
                      }
                      }
                      //---------------------------------------------------------------------------


                      unser project was wir zu hilfe benutzen dürfen

                      Kommentar


                        #12
                        ich geh ma davon aus das zu den aufgaben noch der code wo die aufgaben aufbauen fehlen, also kann ich hier nur mitmaßen was ein tpanel ist und ob das nen array oder ne c++ stl collection ist.

                        wenns ne collection ist z.B. nen vector:

                        vector panels;

                        vector::reverse_iterator it;
                        for(it = panels.rbegin(); it != panels.rend(); it++){
                        if(it->color == BLACK){
                        delete *it;
                        it--; //um den iterator wieder valid zu machen durch das löschen.
                        }
                        }

                        aufgabe 5 (auch mutmaßung durch fehlendem src):

                        TPanel findPanel(string name){
                        vector panels;

                        vector::iterator it;
                        for(it = panels.begin(); it != panels.end(); it++){
                        if(it->name == name){
                        return *it;
                        }
                        }
                        }
                        }


                        //edit: ah gerade source gesehn wait a minute :P

                        Kommentar


                          #13
                          so zeit abgelaufen thx

                          Kommentar


                            #14
                            Was hast du für ne Note bekommen?

                            Kommentar


                              #15
                              ohmann^^^ lernen nächstes mal!!!

                              Kommentar

                              Lädt...
                              X