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

Applications development, KoOS API questions
  • 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.
  • Так в функциях 4 и 71.
    1 будет значить именно ср866, а 0 продолжит поддерживать маркеры, может кому-то понравится этот подход.
  • Ну, в принципе, если всё равно функции будут новые, то и делать там можно как угодно.
    Pathoswithin wrote:0 продолжит поддерживать маркеры, может кому-то понравится этот подход.
    Дополнительные возможности — это хорошо. Если будет время, тогда может и я добавлю SetEncoding.
  • Нет, кодировка для чтения папки проверяется глубоко в драйверах ФС, так что либо менять, либо не менять.
  • revision #6798

    Осталось окончательно решить с argv[0].
  • Если теперь можно передавать параметры в различных кодировках, то было бы логичным сделать возможность также и получать их в удобной для конкретного приложения кодировке.

    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';
  • revision #6800

    18.6 думаю тоже не нужно.
    71.1 сложно сделать иначе, нужно где-то хранить кодировку.
  • Pathoswithin wrote:71.1 сложно сделать иначе, нужно где-то хранить кодировку.
    Можно добавить новое поле APPDATA.Encoding.
    Ты ведь всё равно оставил способ задания кодировки посредством префиксов. По умолчанию без префикса это ASCII. Можно потом будет добавить новую сисфункцию SetEncoding, которая будет изменять значение кодировки по умолчанию, то есть если префикс отсутствует.
    Pathoswithin wrote:18.6 думаю тоже не нужно.
    Ну это, конечно, не так уж необходимо, чтобы использовать для SaveRamDisk юникодный путь. Просто другие подобные функции продублированы, а эта нет.
  • revision #6802

    Так что с argv[0], маркер сильно мешает?
  • Для argv[0] кодировку можно задавать в заголовке приложения вместо поля version, которое по факту не используется. Там как раз version = 1, а это ASCII.
    Вот из справки
    Format of an absolute path:
    /base/number/dir1/dir2/.../dirn/file,
    А маркер можно добавлять, если encoding в заголовке будет равно 0. Только тут не совсем логично получается. Мы же не передаём, а получаем, то есть, маркер и не нужен вовсе, а просто нужна строка в желаемой кодировке. Ну и пусть для параметров тоже encoding учитывается.
  • Pathoswithin
    Если маркер будет в формате "/<байт маркера>/остальной путь", то нормально. Главное, чтобы путь оставался абсолютным, т.е начинался с / Тоже самое для текущего каталога.
  • Serge wrote:Если маркер будет в формате
    А он вообще зачем? Разве без маркера ты не будешь знать кодировку?
    Serge wrote:Тоже самое для текущего каталога.
    А для текущего у нас теперь вот http://websvn.kolibrios.org/filedetails ... #line-1723 Причём, кодировку можно также задать и посредством префиксов(это если указать encoding = 0).
  • 0CodErr wrote:А он вообще зачем? Разве без маркера ты не будешь знать кодировку?
    Вопрос был про маркер. Если маркер будет определять кодировку, как её без маркера узнать.
  • Serge, cтранные ты вопросы задаёшь :lol:
    Конкретно сейчас это UTF8.
    Но её можно будет(надеюсь :) ) задавать в заголовке приложения. Опять же, если ты её сам задал, то как ты можешь её не знать?
  • Who is online

    Users browsing this forum: No registered users and 2 guests