Grundlegendes: Funktion in Funktion
-
Hi @ ALL,
ich habe mal eine grundlegende Frage zu C++. Wie sieht es denn aus mit einem Funktionaufruf in einer Funktion selber. Ich weiss das es theoretisch gehen muss, aber ich weiss nicht wie ich das dem Borland mitteilen kann.
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;float Zahl1, Zahl2;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------void __fastcall TForm1::Button1Click(TObject *Sender)
{
Zahl1 = StrToFloat (Edit1->Text);
Zahl2 = StrToFloat (Edit2->Text);
Label3 -> Caption = FloatToStrF (Zahl1+Zahl2, ffNumber, 7, 3);void __fastcall TForm1::Button7Click(TObject *Sender)
{
int iZufall;
iZufall = random (5);switch (iZufall){
case 1: TForm1::Button1Click;
case 2: TForm1::Button2Click;
case 3: TForm1::Button3Click;
case 4: TForm1::Button4Click;}
}
}-> Das Problem ist das der Compile mir die Fehlermeldung "[C++ Fehler] Unit1.cpp(77): E2235 Elementfunktion muß aufgerufen oder ihre Adresse übernommen werden" ausgibt.
Wie lautet der richtige Aufruf?
Danke im Voraus.
CH
-
switch (iZufall){ case 1: TForm1::Button1Click( this ); case 2: TForm1::Button2Click( this ); case 3: TForm1::Button3Click( this ); case 4: TForm1::Button4Click( this ); }die Funktion erwartet ein Parameter des Typs TObject* genannt "Sender", in dem Fall tuts die Form selber.
-
Keine eurer beiden Varianten wird funktionieren ...
switch(iZufall) { case 1: Button1Click(this); break; case 2: Button2Click(this); break; case 3: Button3Click(this); break; case 4: Button4Click(this); break; }
-
[code]
switch (iZufall){case 1: TForm1::Button1Click( this );break;
case 2: TForm1::Button2Click( this );break;
case 3: TForm1::Button3Click( this );break;
case 4: TForm1::Button4Click( this );break;}
soweit ich weiß oda?
-
das break war mir entgangen

ging ja zum glück um den funktionsaufruf
-
da stimmt aber noch was nicht mit der klammerung "}"
void __fastcall TForm1::Button1Click(TObject *Sender) { Zahl1 = StrToFloat (Edit1->Text); Zahl2 = StrToFloat (Edit2->Text); Label3 -> Caption = FloatToStrF (Zahl1+Zahl2, ffNumber, 7, 3); } // <-- hier ein } mehr void __fastcall TForm1::Button7Click(TObject *Sender) { int iZufall; iZufall = random (5); switch(iZufall) { case 1: Button1Click(this); break; case 2: Button2Click(this); break; case 3: Button3Click(this); break; case 4: Button4Click(this); break; } } } //<-- hier eine weniger
-
ach ja stimmt scope auf TForm1:: ist auch unnötig
-
switch (iZufall){
case 1: TForm1::Button1Click; break; //sonst wirds nie funktionieren!!!
case 2: TForm1::Button2Click; break;
case 3: TForm1::Button3Click; break;
case 4: TForm1::Button4Click; break;}
[/cpp][/quote]
-
Yeah wie geil...es funktioniert. Ihr seid die BESTEN!
-
1310-Logik schrieb:
ach ja stimmt scope auf TForm1:: ist auch unnötig
Nicht unnötig, schlichtweg falsch!