Page 14 of 16

Re: Путь приложения

Posted: Sat Dec 10, 2016 4:48 pm
by Pathoswithin
Можно и так, в регистре или в структуре. Только наверно уже лучше везде использовать 0 = default, 1 = cp866, 2 = UTF-16, 3 = UTF-8. Думаю, чтение папки тоже ещё не поздно сменить, вряд ли кто-то уже использовал UTF-16.

Re: Путь приложения

Posted: Sat Dec 10, 2016 4:52 pm
by 0CodErr
Pathoswithin wrote:чтение папки тоже ещё не поздно сменить, вряд ли кто-то уже использовал UTF-16.
Вообще-то я использовал. А зачем там что-то менять? Сделай новую функцию тогда.
Pathoswithin wrote:Только наверно уже лучше везде использовать 0 = default, 1 = cp866, 2 = UTF-16, 3 = UTF-8.
Сейчас ведь так

Code: Select all

  * +8: dword: encoding:
    * 0 = cp866 -> byte per char
    * 1 = UTF-16LE -> word per char
Просто добавить сюда 2 = UTF8.

Re: Путь приложения

Posted: Sat Dec 10, 2016 5:13 pm
by Pathoswithin
Так в функциях 4 и 71.
1 будет значить именно ср866, а 0 продолжит поддерживать маркеры, может кому-то понравится этот подход.

Re: Путь приложения

Posted: Sat Dec 10, 2016 5:29 pm
by 0CodErr
Ну, в принципе, если всё равно функции будут новые, то и делать там можно как угодно.
Pathoswithin wrote:0 продолжит поддерживать маркеры, может кому-то понравится этот подход.
Дополнительные возможности — это хорошо. Если будет время, тогда может и я добавлю SetEncoding.

Re: Путь приложения

Posted: Sat Dec 10, 2016 5:47 pm
by Pathoswithin
Нет, кодировка для чтения папки проверяется глубоко в драйверах ФС, так что либо менять, либо не менять.

Re: Путь приложения

Posted: Thu Dec 15, 2016 9:26 pm
by Pathoswithin
revision #6798

Осталось окончательно решить с argv[0].

Re: Путь приложения

Posted: Sat Dec 17, 2016 1:55 pm
by 0CodErr
Если теперь можно передавать параметры в различных кодировках, то было бы логичным сделать возможность также и получать их в удобной для конкретного приложения кодировке.

Pathoswithin, ты сейчас сделал не для всех функций.
Хотелось бы ещё эти

Code: Select all

{18.6}    Function  SaveRamDisk(Path: PChar): Dword; StdCall; External 'KolibriOS';
{37.4}    Function  LoadCursorFromFile(Path: PChar): Dword; StdCall; External 'KolibriOS';
{48.8}    Function  SetSkin(Path: PChar): Integer; StdCall; External 'KolibriOS';
{71.1}    Procedure SetWindowCaption(Caption: PChar); StdCall; External 'KolibriOS';
А вот эти вроде бы не нужно

Code: Select all

{68.16}   Function  GetDriver(Name: PChar): Dword; StdCall; External 'KolibriOS';
{68.21}   Function  LoadDriver(Name, CmdLine: PChar): Dword; StdCall; External 'KolibriOS';
{68.22}   Function  SharedMemoryOpen(Name: PChar; Bytes: Dword; Flags: Dword): Pointer; StdCall; External 'KolibriOS';
{68.23}   Function  SharedMemoryClose(Name: PChar): Dword; StdCall; External 'KolibriOS';

Re: Путь приложения

Posted: Sun Dec 18, 2016 6:19 am
by Pathoswithin
revision #6800

18.6 думаю тоже не нужно.
71.1 сложно сделать иначе, нужно где-то хранить кодировку.

Re: Путь приложения

Posted: Sun Dec 18, 2016 10:25 pm
by 0CodErr
Pathoswithin wrote:71.1 сложно сделать иначе, нужно где-то хранить кодировку.
Можно добавить новое поле APPDATA.Encoding.
Ты ведь всё равно оставил способ задания кодировки посредством префиксов. По умолчанию без префикса это ASCII. Можно потом будет добавить новую сисфункцию SetEncoding, которая будет изменять значение кодировки по умолчанию, то есть если префикс отсутствует.
Pathoswithin wrote:18.6 думаю тоже не нужно.
Ну это, конечно, не так уж необходимо, чтобы использовать для SaveRamDisk юникодный путь. Просто другие подобные функции продублированы, а эта нет.

Re: Путь приложения

Posted: Wed Dec 21, 2016 3:26 pm
by Pathoswithin
revision #6802

Так что с argv[0], маркер сильно мешает?

Re: Путь приложения

Posted: Wed Dec 21, 2016 4:19 pm
by 0CodErr
Для argv[0] кодировку можно задавать в заголовке приложения вместо поля version, которое по факту не используется. Там как раз version = 1, а это ASCII.
Вот из справки
Format of an absolute path:
/base/number/dir1/dir2/.../dirn/file,
А маркер можно добавлять, если encoding в заголовке будет равно 0. Только тут не совсем логично получается. Мы же не передаём, а получаем, то есть, маркер и не нужен вовсе, а просто нужна строка в желаемой кодировке. Ну и пусть для параметров тоже encoding учитывается.

Re: Путь приложения

Posted: Wed Dec 21, 2016 8:00 pm
by Serge
Pathoswithin
Если маркер будет в формате "/<байт маркера>/остальной путь", то нормально. Главное, чтобы путь оставался абсолютным, т.е начинался с / Тоже самое для текущего каталога.

Re: Путь приложения

Posted: Wed Dec 21, 2016 8:55 pm
by 0CodErr
Serge wrote:Если маркер будет в формате
А он вообще зачем? Разве без маркера ты не будешь знать кодировку?
Serge wrote:Тоже самое для текущего каталога.
А для текущего у нас теперь вот http://websvn.kolibrios.org/filedetails ... #line-1723 Причём, кодировку можно также задать и посредством префиксов(это если указать encoding = 0).

Re: Путь приложения

Posted: Wed Dec 21, 2016 9:57 pm
by Serge
0CodErr wrote:А он вообще зачем? Разве без маркера ты не будешь знать кодировку?
Вопрос был про маркер. Если маркер будет определять кодировку, как её без маркера узнать.

Re: Путь приложения

Posted: Wed Dec 21, 2016 10:19 pm
by 0CodErr
Serge, cтранные ты вопросы задаёшь :lol:
Конкретно сейчас это UTF8.
Но её можно будет(надеюсь :) ) задавать в заголовке приложения. Опять же, если ты её сам задал, то как ты можешь её не знать?