Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Ср май 24, 2017 10:43 pm

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 828 сообщений ]  На страницу Пред. 150 51 52 53 5456 След.
Автор Сообщение
 Заголовок сообщения: Re: Eolite
СообщениеДобавлено: Пт ноя 25, 2016 11:05 am 
Не в сети
Аватара пользователя

Зарегистрирован: Вс окт 30, 2016 1:30 am
Сообщения: 64
Можно ли как-то поменять иконки исполняемых файлов на свои, без перекомпиляции приложения? Сейчас из-за них происходит путаница с другими файлами без расширения.


Вернуться к началу
 Заголовок сообщения: Re: Eolite
СообщениеДобавлено: Пт ноя 25, 2016 5:18 pm 
Не в сети
Designer
Аватара пользователя

Зарегистрирован: Чт янв 25, 2007 3:33 pm
Сообщения: 4080
Eolite 3.75
Читает первые 4 байта у файлов без расширения, и если это "KPAC" или "MENU", то показывает иконку программы.


Вложения:
appicons.png
appicons.png [ 40.8 КБ | 983 просмотра ]

_________________
Через тернии к звездам
Вернуться к началу
 Заголовок сообщения: Re: Eolite
СообщениеДобавлено: Пт ноя 25, 2016 5:20 pm 
Не в сети

Зарегистрирован: Вс окт 30, 2011 6:43 pm
Сообщения: 911
Код:
IF(DSDWORD[#BYTE_HEAD_FILE]=='KCPK')||(DSDWORD[#BYTE_HEAD_FILE]=='UNEM') icon_n = 6;
Очень плохая идея. Упаковано kpack-ом может быть всё что угодно.


Вернуться к началу
 Заголовок сообщения: Re: Eolite
СообщениеДобавлено: Пт ноя 25, 2016 5:23 pm 
Не в сети
Designer
Аватара пользователя

Зарегистрирован: Чт янв 25, 2007 3:33 pm
Сообщения: 4080
0CodErr писал(а):
Код:
IF(DSDWORD[#BYTE_HEAD_FILE]=='KCPK')||(DSDWORD[#BYTE_HEAD_FILE]=='UNEM') icon_n = 6;
Очень плохая идея. Упаковано kpack-ом может быть всё что угодно.

Решение не идеальное, но оно в целом хорошее.
Вероятность того, что файл упакован kpack-ом и не имеет расширения - мала.

_________________
Через тернии к звездам


Вернуться к началу
 Заголовок сообщения: Re: Eolite
СообщениеДобавлено: Пт ноя 25, 2016 5:47 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Вс окт 30, 2016 1:30 am
Сообщения: 64
Значит ли это, что у приложений колибри нет собственного идентификатора?
Или я чего-то не правильно понимаю?


Вернуться к началу
 Заголовок сообщения: Re: Eolite
СообщениеДобавлено: Пт ноя 25, 2016 5:53 pm 
Не в сети

Зарегистрирован: Вс окт 30, 2011 6:43 pm
Сообщения: 911
Цитата:
Вероятность того, что файл упакован kpack-ом и не имеет расширения - мала.
Ну вообще, да. Но можно при желании поправить kpack и добавить в header упакованного файла флаг, означающий, что упаковано приложение. Для этого вполне хватит одного бита. Другой вариант, это всё-таки начать использовать расширения kex. Хотя это вызовет увеличение длины имени файла. В принципе, думаю, можно даже оба варианта реализовать.

Mega_Myr писал(а):
Значит ли это, что у приложений колибри нет собственного идентификатора?
Или я чего-то не правильно понимаю?
'MENUET01', если ты об этом.


Вернуться к началу
 Заголовок сообщения: Re: Eolite
СообщениеДобавлено: Пт ноя 25, 2016 6:26 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Вс окт 30, 2016 1:30 am
Сообщения: 64
Похоже я совсем не понимаю что происходит. Пожалуй на время воздержусь от вопросов.


Вернуться к началу
 Заголовок сообщения: Re: Eolite
СообщениеДобавлено: Пт ноя 25, 2016 6:50 pm 
Не в сети
Designer
Аватара пользователя

Зарегистрирован: Чт янв 25, 2007 3:33 pm
Сообщения: 4080
Mega_Myr писал(а):
Похоже я совсем не понимаю что происходит. Пожалуй на время воздержусь от вопросов.

У программ Колибри есть соственный идентификатор MENUET01 http://prntscr.com/dboos7
Однако все программый в дисте сжаты KPACK'ом, потому имеют KPACK http://prntscr.com/dbopbk

Как мне определить что сжатый файл это программа? Ну... его можно разжать, вот только это долго и нетсмысла так нагружать проц, чтобы просто отобразить иконку.

Как вариант, предположить, что сжатый файл без расширения - это программа. Так и будет в 99,9% случаев, что приемлимо.

0CodErr предложил варианты решения ситуации. Например, добавлять расширение .kex все программам.

_________________
Через тернии к звездам


Вернуться к началу
 Заголовок сообщения: Re: Eolite
СообщениеДобавлено: Пт ноя 25, 2016 8:14 pm 
Не в сети

Зарегистрирован: Вс окт 30, 2011 6:43 pm
Сообщения: 911
Leency писал(а):
Как мне определить что сжатый файл это программа? Ну... его можно разжать, вот только это долго и нетсмысла так нагружать проц, чтобы просто отобразить иконку.
Чтение файла в любом случае долго. А что, если это будет не локальная папка? Получается, что лучше всё-таки использовать расширения. В принципе, никто и не мешает добавить их к программам.


Вернуться к началу
 Заголовок сообщения: Re: Eolite
СообщениеДобавлено: Пт ноя 25, 2016 8:24 pm 
Не в сети
Designer
Аватара пользователя

Зарегистрирован: Чт янв 25, 2007 3:33 pm
Сообщения: 4080
У меня стояло в начале ограничение на эту фичу только /rd/1 и /tmp
Но я решил включить для всех.

Расширения вариант.

_________________
Через тернии к звездам


Вернуться к началу
 Заголовок сообщения: Re: Eolite
СообщениеДобавлено: Пт ноя 25, 2016 8:27 pm 
Не в сети

Зарегистрирован: Вт мар 08, 2016 11:00 pm
Сообщения: 233
Может наоборот ?

Без расширения == программа.


Вернуться к началу
 Заголовок сообщения: Re: Eolite
СообщениеДобавлено: Пт ноя 25, 2016 8:44 pm 
Не в сети
Designer
Аватара пользователя

Зарегистрирован: Чт янв 25, 2007 3:33 pm
Сообщения: 4080
что делать с файлами без расширений вроде licence и readme которые часто идут вместе с исходниками?

_________________
Через тернии к звездам


Вернуться к началу
 Заголовок сообщения: Re: Eolite
СообщениеДобавлено: Пт ноя 25, 2016 8:47 pm 
Не в сети

Зарегистрирован: Вс окт 30, 2011 6:43 pm
Сообщения: 911
Siemargl писал(а):
Без расширения == программа.
Шире мыслить надо, шире! Можешь даже ради эксперимента проверить, сколько у тебя самого таких "программ без расширения".
Вот, смотри, например
Спойлер: Показать
Вложение:
0.PNG
0.PNG [ 21.12 КБ | 974 просмотра ]


Leency, я, кстати, вспомнил вдруг, что раньше можно было узнать размер свободного места на рамдиске.
Лайфхак, как это можно сделать сейчас :P
Думаю, суть кода понятна будет
Спойлер: Показать
Код:
Unit Unit1;
(* -------------------------------------------------------- *)
Interface
(* -------------------------------------------------------- *)
Uses KolibriOS;
(* -------------------------------------------------------- *)
Var
  hConsole: Pointer;
  ConsoleInit:       Procedure(WndWidth, WndHeight, ScrWidth, ScrHeight: Dword; Caption: PChar); StdCall;
  ConsoleExit:       Procedure(bCloseWindow: Cardinal); StdCall;
  printf:            Function(Const Format: PChar): Integer; CDecl VarArgs;
(* -------------------------------------------------------- *)
Procedure Main;
(* -------------------------------------------------------- *)
Implementation
(* -------------------------------------------------------- *)
Procedure Main;
Const FileName = '/RD/1/........';
Var
    FileAttributes: TFileAttributes;
    LastAttributes: TFileAttributes;
Begin
  hConsole          := LoadLibrary('/sys/lib/console.obj');
  ConsoleInit       := GetProcAddress(hConsole, 'con_init');
  ConsoleExit       := GetProcAddress(hConsole, 'con_exit');
  printf            := GetProcAddress(hConsole, 'con_printf');

  ConsoleInit($FFFFFFFF, $FFFFFFFF, $FFFFFFFF, $FFFFFFFF, 'Test');

  If GetFileAttributes(FileName, LastAttributes) <> 0 {If File Is Not Exist} Then Begin
    If CreateFile(FileName) <> 0 Then
      printf('RDFreeSize can not be determined.'#10)
    Else Begin
      ResizeFile(FileName, $FFFFFFFF, 0);
      GetFileAttributes(FileName, FileAttributes);
      printf('RDFreeSize = %d'#10, FileAttributes.SizeLo);
      DeleteFile(FileName);
    End;
  End Else {If File Is Already Exist} Begin
    ResizeFile(FileName, $FFFFFFFF, 0);
    GetFileAttributes(FileName, FileAttributes);
    printf('RDFreeSize = %d'#10, FileAttributes.SizeLo);
    ResizeFile(FileName, LastAttributes.SizeLo, 0);
  End;

  ConsoleExit(0);
  ThreadTerminate;
End;
(* -------------------------------------------------------- *)
End.
Спойлер: Показать
Вложение:
1.PNG
1.PNG [ 4.17 КБ | 974 просмотра ]
Вложение:
RDFreeSizeToConsole.kex [832 байт]
6 скачиваний


Вернуться к началу
 Заголовок сообщения: Re: Eolite
СообщениеДобавлено: Пт ноя 25, 2016 9:06 pm 
Не в сети

Зарегистрирован: Вт мар 08, 2016 11:00 pm
Сообщения: 233
Leency писал(а):
что делать с файлами без расширений вроде licence и readme которые часто идут вместе с исходниками?

Переименовать к единому стандарту.

Т.е сначала утвердить некий список стандартных расширений.


Вернуться к началу
 Заголовок сообщения: Re: Eolite
СообщениеДобавлено: Пт ноя 25, 2016 9:30 pm 
Не в сети
Mentor/Kernel Developer
Аватара пользователя

Зарегистрирован: Чт мар 26, 2015 5:16 pm
Сообщения: 1136
Вроде всегда licence.txt и readme.txt. У меня вообще нет ни одного файла без расширения.


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 828 сообщений ]  На страницу Пред. 150 51 52 53 5456 След.

Часовой пояс: UTC+03:00


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

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB