GetCPBuffer - функция определения кодовой страницы

Разработка Far.
User avatar
Skirda
Posts: 3474
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 4 times

GetCPBuffer - функция определения кодовой страницы

Post by Skirda »

Mantis#2751.

Необходима FSF-функция определения кодовой страницы буфера:

Code: Select all

typedef unsigned __int64 UCDFLAGS;

struct FARUCD
{
    size_t structSize;
    const void* data;
    size_t size;
    UCDFLAGS Flags;
    UINT codepage;
    size_t offset;
    void* reserved;
}

BOOL DetectCodepage(FARUCD*);
FARUCD:
structSize - размер структуры
data - что тестим
size - размер тестирования
Flags - разнообразные флаги
codepage - сюда Far пишет кодовую страницу
offset - сюда Far пишет смещение данных относительно data (пропуск сигнатур)
reserved - неопознанноё прочее (зарезервировано)

DetectCodepage() вернёт TRUE в случае "успешного" опознания данных (переменная FARUCD::codepage будет содержать "найденное/вычисленное" значение кодовой страницы данных) или FALSE, в случае непонятного содержимого.


Вижу потребность по крайне мере в FarCmds и TempPanel, чтобы не тянуть весь UCD.
Last edited by Skirda on Thu 01 Jan, 1970 01:00, edited 0 times in total.
Reason: Структура&function by DrKnS + offset
We are the Borg. You will be assimilated.
So Say We All!

User avatar
zg
zero-gravity
Posts: 5696
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 132 times
Contact:

Re: GetCPBuffer - функция определения кодовой страницы

Post by zg »

а потом добавлять GetCPBufferEx с languagefilter?

User avatar
Skirda
Posts: 3474
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 4 times

Re: GetCPBuffer - функция определения кодовой страницы

Post by Skirda »

zg wrote:а потом добавлять GetCPBufferEx с languagefilter?
Покажи свой вариант декларации функции "с languagefilter".
We are the Borg. You will be assimilated.
So Say We All!

User avatar
zg
zero-gravity
Posts: 5696
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 132 times
Contact:

Re: GetCPBuffer - функция определения кодовой страницы

Post by zg »

Skirda wrote:Покажи свой вариант декларации функции "с languagefilter".
мне эта функция не нужна, своего варианта нет.

User avatar
Skirda
Posts: 3474
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 4 times

Re: GetCPBuffer - функция определения кодовой страницы

Post by Skirda »

zg wrote:
Skirda wrote:Покажи свой вариант декларации функции "с languagefilter".
мне эта функция не нужна, своего варианта нет.
А в чем тогда смысл предыдущего высказывания? Флейм?
We are the Borg. You will be assimilated.
So Say We All!

User avatar
zg
zero-gravity
Posts: 5696
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 132 times
Contact:

Re: GetCPBuffer - функция определения кодовой страницы

Post by zg »

Skirda wrote:А в чем тогда смысл предыдущего высказывания? Флейм?
смысл в том, для того, что бы увидеть, что предлагаемый интерфейс уже сейчас не покрывает всех возможностей и при этом не имеет никакого задела на будущее, не нужно хотеть использовать этот интерфейс.

User avatar
Skirda
Posts: 3474
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 4 times

Re: GetCPBuffer - функция определения кодовой страницы

Post by Skirda »

zg wrote:
Skirda wrote:А в чем тогда смысл предыдущего высказывания? Флейм?
смысл в том, для того, что бы увидеть, что предлагаемый интерфейс уже сейчас не покрывает всех возможностей и при этом не имеет никакого задела на будущее, не нужно хотеть использовать этот интерфейс.
Мы в этом подфоруме вообще то пытаемся вроде как АПИ "изменять". То, что предложенное мной - это лишь идея. Я в курсе, что вариант не совершенен (был бы иного мнения - оно бы уже было в реализации).
Если у тебя нет конкретных предложений по улучшению этого интерфейса, то смысл высказываться? Критикуешь - предлагай. Твой вариант "мне эта функция не нужна" не подпадает под смысл ("технический") подфорума "Development".
Предлагаю дальше не флеймить, если нет конкретных предложений.
We are the Borg. You will be assimilated.
So Say We All!

User avatar
DrKnS
Posts: 5480
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 6 times
Been thanked: 272 times

Re: GetCPBuffer - функция определения кодовой страницы

Post by DrKnS »

Skirda wrote:off - смещение в байтах начала текста (для пропуска сигнатур типа 0xFEFF, 0xFFFE, 0xBFBBEF)
Смещение не нужно (проверка сигнатуры - часть процесса автоопределения, зачем её пропускать??)
Возвращает кодовую страницу (значение, применимое для первого параметра MultiByteToWideChar())
Как сигнализировать о неудаче? Возвращать должно true/false

Имя функции не символизирует.

Как-то так:

Code: Select all

struct params
{
    size_t structSize;
    int* codepage  // <- сюда пишем
    const void* data;
    size_t size;
    DWORD Flags;
    void* reserved
    ... %whatever%
}

BOOL TryToDecectCodepage(params*);

User avatar
HaRT
Moderator
Posts: 9230
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 91 times
Been thanked: 193 times

Re: GetCPBuffer - функция определения кодовой страницы

Post by HaRT »

DrKnS wrote:Как-то так:

Code: Select all

struct params
{
    size_t structSize;
    int* codepage  // <- сюда пишем
    const void* data;
    size_t size;
    DWORD Flags;
    void* reserved
    ... %whatever%
}

BOOL TryToDecectCodepage(params*);
Это в FAR API так принято, что “сюда пишем”, “сюда не пишем”, “тут я рыбу заворачивал”?
Лично я привык считать, что по хорошему надо одну константную структуру на вход и одну неконстантную на выход…
Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
DrKnS
Posts: 5480
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 6 times
Been thanked: 272 times

Re: GetCPBuffer - функция определения кодовой страницы

Post by DrKnS »

Да, повсеместно.

User avatar
zg
zero-gravity
Posts: 5696
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 132 times
Contact:

Re: GetCPBuffer - функция определения кодовой страницы

Post by zg »

Skirda wrote:Если у тебя нет конкретных предложений
у меня было конкретное указание на непокрытие даже текущих возможностей ucd.

User avatar
Skirda
Posts: 3474
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 4 times

Re: GetCPBuffer - функция определения кодовой страницы

Post by Skirda »

DrKnS wrote:
Skirda wrote:off - смещение в байтах начала текста (для пропуска сигнатур типа 0xFEFF, 0xFFFE, 0xBFBBEF)
Смещение не нужно (проверка сигнатуры - часть процесса автоопределения, зачем её пропускать??)
Эмм... MultiByteToWideChar понимает сигнатуры в начале буфера?
DrKnS wrote:
Возвращает кодовую страницу (значение, применимое для первого параметра MultiByteToWideChar())
Как сигнализировать о неудаче? Возвращать должно true/false
...

Code: Select all

struct params
{
    size_t structSize;
    int* codepage  // <- сюда пишем
    const void* data;
    size_t size;
    DWORD Flags;
    void* reserved
    ... %whatever%
}

BOOL TryToDecectCodepage(params*);
[/quote]
Вариант.
Перепишу первый топик.
zg wrote:у меня было конкретное указание на непокрытие даже текущих возможностей ucd.
Не попал. Снова.
We are the Borg. You will be assimilated.
So Say We All!

User avatar
DrKnS
Posts: 5480
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 6 times
Been thanked: 272 times

Re: GetCPBuffer - функция определения кодовой страницы

Post by DrKnS »

Skirda wrote:Эмм... MultiByteToWideChar понимает сигнатуры в начале буфера?
При чём здесь MultiByteToWideChar?

User avatar
Skirda
Posts: 3474
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 4 times

Re: GetCPBuffer - функция определения кодовой страницы

Post by Skirda »

DrKnS wrote:
Skirda wrote:Эмм... MultiByteToWideChar понимает сигнатуры в начале буфера?
При чём здесь MultiByteToWideChar?
первый параметр... чтобы преобразовать data к видечар.
We are the Borg. You will be assimilated.
So Say We All!

User avatar
DrKnS
Posts: 5480
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 6 times
Been thanked: 272 times

Re: GetCPBuffer - функция определения кодовой страницы

Post by DrKnS »

Так мы хотим преобразовать к юникоду или таки определить кодовую страницу?

Post Reply

Return to “Development”