FindFirst und viele Probleme



  • hi di ho c++ gemeinde

    ich hab da leider ein großes problem mit dem ich nicht alleine fertig werde die suche habe ich auch schon ausgibig benutzt 😃

    und zwar versuche ich alle verzeichnisse aus einem bestimmten unterordner auszulesen und in einer combobox aufzulisten...

    Damit bekomme ich zwar keine Fehlermeldung aber es funktioniert auch net

    Varinate 1

    TSearchRec *SucheOrdner1;//Zeiger
      TSearchRec SucheOrdner;
      String UnterOrdner = "\\skins\\";
    
    if (FindFirst((ParamStr(0))+UnterOrdner,faDirectory, SucheOrdner) == 0)
      {
        do {
             if (ExtractFileExt(SucheOrdner1->Name) == 0)
             {
               ComboBox1->Items->Add(SucheOrdner1->Name);
             }
           } while (FindNext(SucheOrdner)== 0);
                    FindClose(SucheOrdner);
       }
    

    Ich habe in anderen Beispielen gesehen das dort ohne zeiger gerabeitet wird was bei mir erst recht nicht nicht funktioniert..
    ohne zeiger komme ich nicht an die methoden ran deswegen der mix weiter oben ( Varinate 1)

    Variante 2

    TSearchRec *SucheOrdner1;
      String UnterOrdner = "\\skins\\";
    
    if (FindFirst((ParamStr(0))+UnterOrdner,faDirectory, SucheOrdner1) == 0)
      {
       do {
            if (ExtractFileExt(SucheOrdner1->Name) == 0)
             {
              ComboBox1->Items->Add(SucheOrdner1->Name);
             }
          } while (FindNext(SucheOrdner1)== 0);
                   FindClose(SucheOrdner1);
       }
    

    Fehlermeldungen der Variante 2
    [C++ Warnung] FormMain.cpp(233): W8030 Temporäre Größe für Parameter 'F' in Aufruf von '_fastcall FindFirst(const AnsiString,int,TSearchRec &)' verwendet

    [C++ Fehler] FormMain.cpp(233): E2064 'TSearchRec &' kann nicht mit 'TSearchRec *' initialisiert werden.

    [C++ Fehler] FormMain.cpp(233): E2342 Keine Übereinstimmung des Typs beim Parameter 'F' ('TSearchRec &' erwartet, 'TSearchRec *' erhalten)

    Über eure hilfe wäre ich sehr dankbar 🙂

    danke 🙂



  • Hallo

    zur Pointer-version : Der Kompiler sagt dir ja schon, das kein Pointer erwartet wird, sondern eine Referenz. Außerdem hast du dem Pointer keine gültige Instanz zugewiesen.

    zur Stack-variante : das ist schon richtiger... aber was soll das hier?!

    if (ExtractFileExt(SucheOrdner1->Name) == 0)
    

    Schau dir doch mal bitte in der Builder-Hilfe an, was ExtractFileExt als Typ
    zurückgibt!
    Du willsr offenbar überprüfen, ob das aktuelle Element ein Verzeichnis ist. Das sollte aber ganz anders gemacht werden. Wie, das findest du hier in dem Thread der auch von heute ist.

    bis bald
    akari


Log in to reply