PureBasic

Руководство - Отображение в текстовом режиме (Консоль)

В предыдущей теме Ввод & Вывод Вы уже видели обзор различных возможностей вывода текста на экран пользователя, и в темеХранение данных в памяти, мы начали создавать небольшое приложение для вывода на экран свойств файлов в конкретной папке, через окно debug.

Давайте пересмотрим этот пример, для того чтобы переделать раздел вывода данных, что позволит отказаться от вывода данных через окно Debug. Во-первых, это окно доступно только в PureBasic IDE, то есть, в готовом приложении работать не будет, во-вторых окно Debug сильно ограничено в возможностях.

PureBasic поддерживает окно текстового режима или консоль, которая может использоваться в скомпилированных программах. Поэтому давайте доработаем наш пример, чтобы использовать консоль вместо окна Debug.

Во-первых, для того чтобы сделать это правильно, нам понадобятся дополнительные переменные. Поэтому исправьте код определения переменных, как показано ниже:

...

; Теперь мы определяем новый список файлов, используя ранее определенную структуру.
NewList Files.FILEITEM()
Define.s Access, Attrib, Create, Folder, Modify, Msg, Num, Size
Define.l Result

...

Далее, полностью удалите выходной раздел кода от строки комментария:
  ; Показывает список в окне отладки (если нет ни одной записи в каталоге, на экран ничего не выведется).
  ...
И замените на этот:
  ; Открыть экран текстового режима, для показа результатов.
  OpenConsole()
  
  ; Вывести на экран заголовок.
  ; PrintN выводит данную строку на экран консоли, и переводит курсор печати на следующую строку.
  ; Space(n) вводит n количество пробелов в строку.
  PrintN("File list of " + Folder + ".")
  PrintN("-------------------------------------------------------------------------------")
  Msg = "Num Name"
  PrintN(Msg)
  Msg = Space(4) + "Create" + Space(5) + "Access" + Space(5) + "Modify" + Space(5) + "Attrib Size"
  PrintN(Msg)
  
  ;  Цикл через весь список, чтобы вывести на экран результаты.
  ForEach Files()
    
    ; Здесь мы сведём в таблицу все индексы ( Номера элементов) списка.
    ; ListIndex() возвращает индекс, то есть позицию текущего элемента в списке, отсчитанное от нуля.
    ; StrU преобразовывает число без знака в строку.
    ; RSet дополняет строку пробелами для получения заданной длины.
    ; Здесь мы используем RSet, чтобы все индексы были дополнены до длины в 3 символа.
    Num = RSet(StrU(ListIndex(Files()) + 1), 3, " ")
    
    ; Вывести на экран Номер пункта и имя файла.
    Msg = Num + " " + Files()\Name
    PrintN(Msg)
    
    ; Эти строки преобразовывают значения дат создания и т.д. файла в привычный вид.
    Create = FormatDate("%dd/%mm/%yyyy", Files()\DateCreated)
    Access = FormatDate("%dd/%mm/%yyyy", Files()\DateAccessed)
    Modify = FormatDate("%dd/%mm/%yyyy", Files()\DateModified)
    
    ; Преобразуем размер файла в строку с дополнением пробелов, так же как с индексным значением выше,
    ; но зададим размер строки для размещения максимального размера значения типа quad.
    Size = RSet(StrU(Files()\Size), 19)
    
    ; Преобразуем атрибуты в строку.
    Attrib = RSet(StrU(Files()\Attributes), 6, " ")
    
    ; Вывести на экран свойства файла.
    Msg = Space(4) + Create + " " + Access + " " + Modify + " " + Attrib + " " + Size
    PrintN(Msg)
    
    ; Вывести на экран пустую строку.
    PrintN("")
    
  Next Files()
  
  ; Вывести на экран сообщение с инструкцией по завершению работы программы: "Нажмите return для выхода".
  PrintN("")
  PrintN("Нажмите return для выхода")
  Input()
Если в коде нет ошибок, то результат на экране должен выглядеть примерно так:
  File List of C:\Documents And Settings\user\.
  -------------------------------------------------------------------------------
  Num Name
      Create     Access     Modify     Attrib Size
    1 NTUSER.DAT
      03/07/2008 04/04/2011 02/04/2011     34            18874368
  
    2 kunzip.dll
      14/07/2008 04/04/2011 14/07/2008     32               18432
  
    3 ntuser.dat.LOG
      03/07/2008 04/04/2011 04/04/2011     34                1024
  
    4 ntuser.ini
      03/07/2008 02/04/2011 02/04/2011      6                 278
  
  Нажмите Return для выхода
Это результат вывода, который даёт Windows XP, на более поздних версий Windows, Linux или MAC OSX выводимые названия файлов будут другими.
Примечание для Linux/MacOS: Пожалуйста задайте "Console" как формат исполняемых файлов в параметрах компилятора.

Навигация Руководства

< Ввод и Вывод - Обзор - Создание графического пользователя interface (GUI) >