Methode ein Series1 übergeben und ein anderes als Rückgabe



  • versuchs mal so

    TLineSeries *Series1 = new TLineSeries(Chart1);
    Series1->ParentChart = Chart1;
    


  • Vielen Dank Linnea, das hat mir weitergeholfen. Ich habe jetzt die Methode:

    void TForm1::summe(TLineSeries sesse)
    {
     TLineSeries *Sum = new TLineSeries(Chart1);
     for (int i=0; i<sesse->Count(); i++)
     {
      Sum->AddXY(sesse->XValues->Items[i],
                 sesse->YValues->Items[i+1],
                 sesse->XValues->Items[i],
                 clBlue);
     }
     Sum->ParentChart = Chart1;
    }
    

    und rufe sie auf:

    summe(Series1);
    

    Aber ich bekomme die Fehlermeldung: Pointer to structure required. Was habe ich da falsch gemacht?



  • das gleiche wie bei Braunsteins Beitrag:

    void TForm1::summe(TLineSeries *sesse)
    ...
    


  • Vielen Dank an alle!!! Bin froh, daß es jetzt funktioniert!!!



  • Jetzt habe ich doch noch eine Frage: Wenn ich ein Series mit Return zurückgeben will, bekomme ich die Meldung: Improper use of typedef TLineSeries. Muss man bei der Rückgabe von Objekten noch etwas beachten?



  • Hast du auch einen Pointer zurückgegeben?



  • Ja habe ich getan:

    TLineSeries TForm1::summe(TLineSeries *sesse)
    {
     TLineSeries *Sum = new TLineSeries(Chart1);
     for (int i=0; i<sesse->Count(); i++)
     {
      Sum->AddXY(sesse->XValues->Items[i],
                 sesse->YValues->Items[i+1],
                 sesse->XValues->Items[i],
                 clBlue);
     }
     return *Sum;
    }
    

    aber trotzdem die Fehlermeldung: VCL style classes musst be constructed using operator new



  • genau verkehrt rum

    TLineSeries *TForm1::summe(TLineSeries *sesse) 
    { 
     TLineSeries *Sum = new TLineSeries(Chart1); 
     for (int i=0; i<sesse->Count(); i++) 
     { 
      Sum->AddXY(sesse->XValues->Items[i], 
                 sesse->YValues->Items[i+1], 
                 sesse->XValues->Items[i], 
                 clBlue); 
     } 
     return Sum; 
    }
    

    Aufruf z.B.

    TLineSeries *Series1 = summe(Series2);
    

    warum willst du die Series eigentlich zurückgeben?



  • @helmuth
    Vielleicht solltest du dir noch einmal ein Tutorial über Pointer in C++ durchlesen oder das entsprechende Kapitel im Buch deiner Wahl.



  • Dank dir noch mal. Wollte erst mal ausprobieren, wie man Methoden mit Objekten erstellt. Ich dachte dann daran, mehrere Methoden mit verschiedenen Operationen ineinanderzuschachteln und auf ein Series anzuwenden. Dann sieht man auch gleich optisch, was man getan hat.
    Auf jeden Fall habe ich gemerkt, daß der Umgang mit Pointern doch nicht so überflüssig ist, wie ich zuerst dachte. Bisher habe ich immer einen großen Bogen darum gemacht. Aber ich werde daran arbeiten.



  • Pointer sind insbesonder beim BCB sehr wichtig, da VCL-Objekte beinahe immer als Pointer behandelt werden.


Anmelden zum Antworten