Directory


Directory

A directory or a folder is set of files and folders.
Un directorio o carpeta es un conjunto de archivos y carpetas.

FolderDlg

It is a Windows standard dialog so that user can choose a directory (a folder). It is very to the Windows standard dialog to choose a file, but the FolderDlg dialog allows choosing only folders.
Es un diálogo estándar de Windows para que el usuario escoja un directorio (una carpeta). Es muy semejante al diálogo estándar para escoger un archivo, pero el diálogo de FolderDlg permite escoger solamente carpetas.

_tfinddata_t

It is a structure to store file or directory information. It stores the name, size, write time, etc., of a file or a folder. Wintempla provides the class Sys::FileDirectory to list the files and folder of a folder.
Es una estructura para almacenar la información de archivo o un directorio. Esta almacena, el nombre, tamaño, tiempo de escritura, etc., de un archivo o una carpeta. Wintempla proporciona la clase Sys::FileDirectory para lista los archivos y carpetas de un folder.

Problem 1
Create a Wintempla Dialog application called MyDir to list the files and folders when the user selects a folder using the class Sys::FileDirectory.
Cree una aplicación de Wintempla de diálogo llamada MyDir para listar los archivos y carpetas cuando el usuario selecciona una carpeta usando la clase Sys::FileDirectory.

MyDir.cpp
...
void MyDir::Window_Open(Win::Event& e)
{
}

void MyDir::btBrowse_Click(Win::Event& e)
{
     Win::FolderDlg dlg;
     wchar_t * path = dlg.BeginDialog(hWnd, L"Folder");
     if (path != NULL)
     {
          wchar_t text[1024];
          _snwprintf_s(text, 1024, _TRUNCATE, L"%s\\*.*", path);
          vector<_tfinddata_t> fileList;
          Sys::FileDirectory::GetFileList(text, fileList);
          vector<_tfinddata_t>::iterator p = fileList.begin();
          const vector<_tfinddata_t>::iterator pEnd = fileList.end();
          wstring names;
          for( ; p != pEnd; p++)
          {
               if ((p->attrib & _A_SUBDIR) != 0)
               {
                    names += L"DIR \t";
               }
               else
               {
                    names += L"FILE\t";
               }
               names += p->name;
               names += L"\r\n";
          }
          tbxList.SetWindowText(names.c_str());
     }
}

MyDir1

Problem 2
Modify the program of last problem using _tfindfirst and _tfinddata_t to list files and folders.
Modifique el programa del último usando _tfindfirst and _tfinddata_t para listar los archivos y folders.

MyDir2

MyDir.cpp
...
void MyDir::Window_Open(Win::Event& e)
{
}

void MyDir::btBrowse_Click(Win::Event& e)
{
     Win::FolderDlg dlg;
     wchar_t * path = dlg.BeginDialog(hWnd, L"Folder");
     if (path != NULL)
     {
          wchar_t text[1024];
          _snwprintf_s(text, 1024, _TRUNCATE, L"%s\\*.*", path);
          wstring names;
          //
          struct _tfinddata_t item;
          intptr_t sequence = 0;
          intptr_t result = 0;
          for(sequence = _tfindfirst((wchar_t*)text, &item); result == 0; result = _tfindnext(sequence, &item))
          {
               if (sequence == -1) break;
               if ((item.attrib & _A_SUBDIR) != 0)
               {
                    names += L"DIR \t";
               }
               else
               {
                    names += L"FILE\t";
               }
               names += item.name;
               names += L"\r\n";
          }
          _findclose(sequence);
          tbxList.SetWindowText(names.c_str());
     }


Tip
Wintempla provides the following macros:
  • ISFOLDER(x) It returns true when the _tfinddata_t element is a folder
  • ISFILE(x) It returns true when the _tfinddata_t element is a file
  • EXCLUDE_FILE(x) It returns true when the _tfinddata_t element must be excluded. That is, it returns true, for the . and .. folders

Wintempla proporciona los siguiente macros:
  • ISFOLDER(x) Este regresa true cuando el elemento _tfinddata_t es una carpeta
  • ISFILE(x) Este regresa true cuando el elemento _tfinddata_t es un archivo
  • EXCLUDE_FILE(x) Este regresa true cuando el elemento_tfinddata_t debe ser excluído. Esto es, regresa true para las carpetas . y ..

© Copyright 2000-2021 Wintempla selo. All Rights Reserved. Jul 22 2021. Home