Double Commander

Файловый менеджер

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

Double Commander

Сообщение mpyat2 » 16.01.2008 00:29:58

Об ошибках сюда можно?
В модуле ufileop.pas, процедура LoadFilesbyDir строку 98
Код: Выделить всё
if sr.Name='' then COntinue;

лучше раскомментировать -- у меня на Ubuntu 7.10 (Lazarus 0.9.25) при получении списка некоторых директорий (напр. мой home) FindFirst возвращает файл с пустым именем (откуда? может гуру знают?). В результате в строке 110
Код: Выделить всё
fr.bSysFile := (sr.Name[1] = '.') and (sr.Name <> '..');

DoubleCmd вылетает (обращение к несуществуюшему sr.Name[1]).
Строки относительно сегодняшнего SVN версии 156
mpyat2
незнакомец
 
Сообщения: 5
Зарегистрирован: 16.01.2008 00:15:02
Откуда: Киев

Сообщение Attid » 16.01.2008 13:09:36

mpyat2 это костылик не стоит этого добавлять.

проблема или в LCL или в твоей системе.
преверь на других командерах, а также свой примерчик сооруди с файндом.

у меня в венде напричер часто на СД жалуется, даже где-то выше писал об этом, но это проблемы моей системы например она еще проявляется на антивируснике ..
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2585
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Сообщение mpyat2 » 16.01.2008 16:31:49

Ok, но зачем тогда этот костылик присутствует [почти] везде, где FindFirst встречается в исходных кодах Lazarus?
См. например, lazarus\ide\buildmanager.pas метод
Код: Выделить всё
function TBuildManager.DeleteAmbiguousFiles(const Filename: string
  ): TModalResult;
....
    if SysUtils.FindFirst(ADirectory+GetAllFilesMask,faAnyFile,FileInfo)=0 then
    begin
      ShortFilename:=ExtractFileName(Filename);
      IsPascalUnit:=FilenameIsPascalUnit(ShortFilename);
      UnitName:=ExtractFilenameOnly(ShortFilename);
      repeat
        if (FileInfo.Name='.') or (FileInfo.Name='..')
        or (FileInfo.Name='')
        or ((FileInfo.Attr and faDirectory)<>0) then continue;
....


и другие (checkcompileropts.pas, codebrowser.pas ...).

Может в этом есть некий скрытый смысл? :-)
mpyat2
незнакомец
 
Сообщения: 5
Зарегистрирован: 16.01.2008 00:15:02
Откуда: Киев

Сообщение Attid » 16.01.2008 17:04:25

тогда скрытый наверно есть =)
хотя странно это имхо =/

Alexx2000 добавишь ?
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2585
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Сообщение Alexx2000 » 16.01.2008 17:19:18

Attid писал(а):Alexx2000 добавишь ?

В модуль ufileop.pas добавил.

mpyat2, копирование/ удаление нормально работают? Тут на форуме на sf.net, radek25 пишет что у него в Ubuntu 7.10 виснет.
Аватара пользователя
Alexx2000
постоялец
 
Сообщения: 488
Зарегистрирован: 25.10.2006 00:22:07
Откуда: Мытищи

Сообщение mpyat2 » 17.01.2008 13:02:59

Попробую сегодня вечером (Ubuntu только дома)
mpyat2
незнакомец
 
Сообщения: 5
Зарегистрирован: 16.01.2008 00:15:02
Откуда: Киев

Сообщение mpyat2 » 18.01.2008 00:43:49

При удалении файлов (UBUNTU 7.10) ПОЧТИ всегда зависает (причем так жестко, что система перестает реагировать, только мышь двигается. Ctrl-Alt-F1 удалось переключиться на текстовую консоль, но при переключении обратно все замерзло ввобще).
Похоже, виснет на Resume потока, который удаляет файлы. Но на 100% не уверен (продебагить пока не удалось, все нафиг виснет).

Копирование иногда работает, иногда виснет.

Более мелкий баг: похоже FindFirst/FindNext реализован не очень корректно: у меня встречаются файлы с двоеточием в имени (НЕ Я ИХ ДЕЛАЛ!). MC показывает их корректно, DoubleCmd откусывает часть имени или не показывает их вообще. При копировании каталогов с такими файлами вылетает.
mpyat2
незнакомец
 
Сообщения: 5
Зарегистрирован: 16.01.2008 00:15:02
Откуда: Киев

Сообщение B4rr4cuda » 18.01.2008 03:21:09

Более мелкий баг: похоже FindFirst/FindNext реализован не очень корректно: у меня встречаются файлы с двоеточием в имени (НЕ Я ИХ ДЕЛАЛ!). MC показывает их корректно, DoubleCmd откусывает часть имени или не показывает их вообще. При копировании каталогов с такими файлами вылетает.

Таки да. Создать файл с двоеточием в имени (в DC) не удалось.
Файл с именем #$.txt создался, но копирование, перемещение
вызвают Access Violation. Открытие на редактирование во внутреннем редакторе и удаление просто не срабатывают.
Добавлено
Хм, файл с двоеточием (описанный выше) (new:#$.txt) создался, но отображался как #$.txt. Случайно обнаружил просмотрев темповую папку с помощью mc. После перезапуска DC видит этот файл как папку. Странно...

Во первых не знаю как его вывести (может
быть использовать Hint). Во вторых где именно выводить данное
окно?

Предлагаю такой вариант:
Лог. Хорошо выполненный интерфейсно и практически.
И минипанельку лога показывать под функциональными кнопками ( а лучше вместо них, их все равно никто не использует). А кому надо больше функций лога - вызовет соответсвующий диалог.
Подобная реализация (минипанель лога) мне встретилась у emelfm, или как он там пишется. Очень (!) удобно.
Аватара пользователя
B4rr4cuda
энтузиаст
 
Сообщения: 693
Зарегистрирован: 28.12.2007 07:48:35

Сообщение B4rr4cuda » 18.01.2008 04:44:25

Нашел таки этот противный баг с отображением ".." в корневой папке (/):
ufilepanel.pas строка 169
Код: Выделить всё
if (not gShowSystemFiles) and bSysFile then Continue;
       fRefList.Add(pfri);

Добавляем еще одно условие:
Код: Выделить всё
if (not gShowSystemFiles) and bSysFile then Continue;
if ((pfri^.sPath='') and (pfri^.sName='..') and (ActiveDir='/')) then  Continue;
       fRefList.Add(pfri);
Аватара пользователя
B4rr4cuda
энтузиаст
 
Сообщения: 693
Зарегистрирован: 28.12.2007 07:48:35

Сообщение B4rr4cuda » 18.01.2008 06:18:52

Что-то сломали в чтении настроек.
Указываем шрифт, ок, перезапускаем ДС - указан default.
Более старые версии читают нормально (свн от 13 числа читает).
Аватара пользователя
B4rr4cuda
энтузиаст
 
Сообщения: 693
Зарегистрирован: 28.12.2007 07:48:35

Сообщение B4rr4cuda » 18.01.2008 06:41:49

А не, с чтением все в норме. Проблема в записи. То ли куда-то не туда пишет, толи не пишет вообще. Вручную добавил
FontName=-xos4-terminus-medium-r-normal-*-*-160-*-*-c-*-iso10646-1
в ~/.config/doublecmd/doublecmd.ini и все стало нормуль.
Аватара пользователя
B4rr4cuda
энтузиаст
 
Сообщения: 693
Зарегистрирован: 28.12.2007 07:48:35

Сообщение B4rr4cuda » 18.01.2008 11:32:48

Такое предложение: ограничить отображаемый путь (слева от комстроки) иначе при входе "глубоко" в фс кострока теряется.
Аватара пользователя
B4rr4cuda
энтузиаст
 
Сообщения: 693
Зарегистрирован: 28.12.2007 07:48:35

Сообщение Alexx2000 » 18.01.2008 12:53:11

B4rr4cuda писал(а):Подобная реализация (минипанель лога) мне встретилась у emelfm, или как он там пишется. Очень (!) удобно.

Хорошая идея, мне нравится.

Добавляем еще одно условие:
Код: Выделить всё
if (not gShowSystemFiles) and bSysFile then Continue;
if ((pfri^.sPath='') and (pfri^.sName='..') and (ActiveDir='/')) then  Continue;
       fRefList.Add(pfri);

Добавил

А не, с чтением все в норме. Проблема в записи. То ли куда-то не туда пишет, толи не пишет вообще.

Хранение настроек сейчас перерабатываю, поэтому могут быть ошибки в работе

B4rr4cuda писал(а):Такое предложение: ограничить отображаемый путь (слева от комстроки) иначе при входе "глубоко" в фс кострока теряется.

Надо добавить соответствующую опцию
Аватара пользователя
Alexx2000
постоялец
 
Сообщения: 488
Зарегистрирован: 25.10.2006 00:22:07
Откуда: Мытищи

Сообщение B4rr4cuda » 19.01.2008 18:48:47

mpyat2 писал(а):При удалении файлов (UBUNTU 7.10) ПОЧТИ всегда зависает (причем так жестко, что система перестает реагировать, только мышь двигается. Ctrl-Alt-F1 удалось переключиться на текстовую консоль, но при переключении обратно все замерзло ввобще).

Похоже, виснет на Resume потока, который удаляет файлы. Но на 100% не уверен (продебагить пока не удалось, все нафиг виснет).

Копирование иногда работает, иногда виснет.

Кстати, мелькнула мысля, может эта проблема косвенно связана с нерабочим копированием\перемещением\удалением в DC собраным под QT?
"Что-то неладно в Датском Королевстве" С
Аватара пользователя
B4rr4cuda
энтузиаст
 
Сообщения: 693
Зарегистрирован: 28.12.2007 07:48:35

Сообщение B4rr4cuda » 19.01.2008 23:27:49

Нашел таки бяку...
Потоковые операции (копирование/перемещение/удаление) в DC собранном под QT начинают работать, если не использовать синхронизацию.
В частности удаление работает полностью коректно, если в модуле uDeleteThread заменить вызовы а-ля
Код: Выделить всё
Synchronize(@FFileOpDlg.UpdateDlg);

на
Код: Выделить всё
FFileOpDlg.UpdateDlg;

Это работает также под GTK и GTK2.
Точнее работает, но не совсем коректно...

У кого какие мысли?
Аватара пользователя
B4rr4cuda
энтузиаст
 
Сообщения: 693
Зарегистрирован: 28.12.2007 07:48:35

Пред.След.

Вернуться в Double Commander

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

Рейтинг@Mail.ru