Ошибка в модуле ShellCtrls.pas

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
ssnakess
новенький
Сообщения: 47
Зарегистрирован: 24.09.2011 23:08:55

Ошибка в модуле ShellCtrls.pas

Сообщение ssnakess »

Ошибка в модуле ShellCtrls.pas из-за которой компонент TShellTreeView не может обработать корневой раздел в ОС Linux
при обращении ShellTreeView.Root:='/'
выдается исключение в строке 1002, которое сообщает, что / - не файл и далее выдается сообщение об шибке

Код: Выделить всё

    if TShellTreeNode(ANode).IsDirectory then
    begin
      //Note: the folder may have been deleted in the mean time
      //an exception will be raised by the next line in that case
      FShellListView.Root := GetPathFromNode(ANode)
    end
    else
    begin
      if not FileExistsUtf8(CurrentNodePath) then
        Raise EShellCtrl.CreateFmt(sShellCtrlsSelectedItemDoesNotExists,[CurrentNodePath]);  
Эта ошибка возникает из-за того, что корневой узел дерева не имеет признака IsDirectory

Код: Выделить всё

...
  if TShellTreeNode(ANode).IsDirectory then
...
исправляется вот так:

Код: Выделить всё

    if (TShellTreeNode(ANode).IsDirectory) or (ANode.Text='/') then
    begin
Хотя по хорошему надо лезть и искать функцию которая формирует дерево и разбираться, почему / не является директорией
Но даже такое исправление позволяет нормально отобразить список каталогов корневого раздела в ОС Linux
Lucifer
постоялец
Сообщения: 133
Зарегистрирован: 05.01.2014 21:39:03
Откуда: Новороссийск

Сообщение Lucifer »

Версия? На Lazarus 2.2.6 и FPC 3.2.2 не воспроизводится. Все работает штатно
ssnakess
новенький
Сообщения: 47
Зарегистрирован: 24.09.2011 23:08:55

Сообщение ssnakess »

Lucifer писал(а):Версия? На Lazarus 2.2.6 и FPC 3.2.2 не воспроизводится. Все работает штатно
версия лазаруса 2.2.6
fpc 3.2.2
ОС OpenSuse 15.4

Добавлено спустя 1 минуту 46 секунд:
Ошибка именно в Linux, я это писал в самом начале
в винде, все работает штатно
Ответить