Linguaggio: C++ Builder5

Ciao a tutti.

Ho la necessità di scrivere in una MEMO, l'architettura di una determinata cartella, con sottocartelle e file in esse contenute.

Esempio:
codice:
PROGETTO
  DOCUMENTI
   IMG
    foto1.jpg
    foto2.jpg
  DOWLOAD
  MANUALI

Ho creato una funzione che mostra i file contenuti nella cartella, ma per quanto riguarda la funzione che mostra le directory, ho un problema: mi fa vedere sia i file che le directory.

codice:
        String ShowDir2(char dirname[])
        {
           String str_esito="";
           char esito[200];
           strcpy(esito,"");

           DIR *dir;
           struct dirent *ent;

           if ((dir = opendir(dirname)) != NULL)
           {
             while ((ent = readdir(dir)) != NULL  )
             {
               if(strcmp(ent -> d_name,".")!=0 && strcmp(ent -> d_name,"..")!=0 )
               {
                 //Memo1 -> Text = Memo1 -> Text + ent -> d_name + "\r\n";
                 strcat(esito,ent -> d_name);
                 strcat(esito,"\r\n");
               }
             }
           }
           else
           {
             ShowMessage("Unable to open directory");
           }

           if (closedir(dir) != 0)
           {
             ShowMessage("Unable to close directory");
           }

           str_esito = esito;
           return str_esito.c_str();
        }
Qualcuno mi puo' consigliare come modificare lo script per recuperare solo le directory?

Grazie