Zeiger auf eine Funktion übergeben



  • Ich mach das jetzt mal so, wie es im Denkanstoß von WebFritzi steht:

    [cpp]
    __fastcall TfrmMain::TfrmMain(TComponent* Owner) : TForm(Owner)
    {
    DBAccess->GetItems(TableName, MenuItem, MenuItemClick); //Fehler
    }

    int TMySQLAccess::GetProcessTableItems(AnsiString sProcessTable, TMenuItem *MenuItem, *TNotifyEvent MenuItemClick)
    {
    MenuItem->Clear();

    if (SqlQuery(true, "SELECT id, item FROM "+sProcessTable) != OP_SUCCESS) return OP_FAIL;

    while (!mySQLDataModule->mySQLQuery->Eof)
    {

    // untermenü-punkte erstellen
    TMenuItem *NewSubItem = new TMenuItem(Application);
    NewSubItem->Caption = mySQLDataModule->mySQLQuery->FieldByName("item")->AsString;
    NewSubItem->Tag = mySQLDataModule->mySQLQuery->FieldByName("id")->AsInteger;
    NewSubItem->OnClick = MenuItemClick;
    MenuItem->Add(NewSubItem);

    mySQLDataModule->mySQLQuery->Next();
    }

    return OP_SUCCESS;
    }[/cpp]

    Leider bringt der Compiler folgende Fehlermeldung:

    [C++ Fehler] UMain.cpp(32): E2034 Konvertierung von 'void (_fastcall * (_closure )(TObject *))(TObject *)' nach 'void (_fastcall * (_closure *)(TObject 😉 *)(TObject *)' nicht möglich

    Was mache ich da falsch?



  • int TMySQLAccess::GetProcessTableItems(AnsiString sProcessTable, TMenuItem *MenuItem, TNotifyEvent *MenuItemClick)
    

    ähm, warum ein Pointer auf ein Funktionszeiger ?

    Schreib so:

    int TMySQLAccess::GetProcessTableItems(AnsiString sProcessTable, TMenuItem *MenuItem, TNotifyEvent MenuItemClick)
    


  • *Strike* 🕶

    Erstmal danke an alle für die Hilfe. Es funzt wunderbar.

    Vorschlage: Das wäre doch mal ein Thema für die FAQ, oder? 🙂



  • Original erstellt von F98:
    Vorschlage: Das wäre doch mal ein Thema für die FAQ, oder? 🙂

    Nö, finde ich nicht. 🕶



  • Warum nicht? Andere sollen doch auch davon profitieren *sozialdenk* :p



  • andere wissen sowas schon. 😉



  • @Sunday soll das heißen, dass du alles weißt..



  • nö, aber das wusste ich auch 😉



  • ... bin mir garn nicht bewußt, das ich auch unregistriert gepostet habe ... 😡



  • Weitere OffTopic-Beiträge werden kommentarlos gelöscht.


Anmelden zum Antworten