delegate c# übersetzung



  • Hallo zusammen

    ich setzte eine Dll ein
    http://www.codeproject.com/KB/list/ObjectListView.aspx
    und will das Objekt Treelistview einsetzten (Punkt 3.4 in der anleitung)
    hier wird der C# code dazu angegeben

    this.treeListView.CanExpandGetter = delegate(object x) {
        return (x is DirectoryInfo);
    };
    
    this.treeListView.ChildrenGetter = delegate(object x) {
        DirectoryInfo dir = (DirectoryInfo)x;
        return new ArrayList(dir.GetFileSystemInfos());
    };
    

    kann mir jemand dabei helfen den Code in C++ zu übersetzten 😞
    ich komm einfach nicht drauf

    Danke



  • Den Code kann Dir niemand in C++ übersetzen, da Du in C++ kein .NET verwenden kannst....

    Es geht höchstens in C++/CLI... wobei dies wiederum keinen Sin macht:
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-263084.html

    Das Problem bei dem Code ist die "anoymous" Methode... die gibt es in C++/CLI (noch) nicht... mach einfach eine ganz normale daraus:

    this.treeListView.CanExpandGetter = MyCanExpandeGetterMethod;
    
    bool MyCanExpandeGetterMethod(object x)
    {
        return (x is DirectoryInfo);
    }
    


  • ref class Form1 : public Form
    {
    private:
        TreeListView^ treeListView;
    
    public:
        void Test()
        {
            this->treeListView->CanExpandGetter = gcnew TreeListView::CanExpandGetterDelegate(this, &Form1::CanExpand);
            this->treeListView->ChildrenGetter = gcnew TreeListView::ChildrenGetterDelegate(this, &Form1::Children);
        }
    
    private:
        bool CanExpand(Object^ obj)
        {
            DirectoryInfo^ dirInfo = dynamic_cast<DirectoryInfo^>(obj);
            return dirInfo != nullptr;
        }
    
        IEnumerable^ Children(Object^ obj)
        {
            DirectoryInfo^ dirInfo = safe_cast<DirectoryInfo^>(obj);
            return dirInfo->GetFileSystemInfos();
        }
    };
    

    BTW: http://www.c-plusplus.net/forum/viewtopic-var-t-is-263084.html

    Edit: oh.. hab zu lange rumgetrödelt... 🙂



  • Dafür ist Deine Implementierung vermutlich richtiger 😉


Anmelden zum Antworten