Символ "00"

Столкнулись с проблемой в использовании Far? Здесь можно получить помощь.
wakh
Posts: 128
Joined: Wed 27 Apr, 2005 09:16
Location: Перогиреево
Has thanked: 6 times
Contact:

Символ "00"

Post by wakh »

Есть файл в кодировке 1200 (UTF-16) в котором есть символ "00".
Редактор фара спотыкается об него. В буфер не копирует и ставить не умеет. Можно заставить?
Занимаюсь роликами и SEO, обращайтесь :)
2useven10
Posts: 5211
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 310 times

Символ "00"

Post by 2useven10 »

версия фар?
2useven10
Posts: 5211
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 310 times

Символ "00"

Post by 2useven10 »

... транковая.

А какой редактор нормально с этим нулевым символом работает?

М$ студия, к примеру, в буфер его берёт (фар нет), но вставляет только текст до него.
User avatar
zg
zero-gravity
Posts: 6016
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Символ "00"

Post by zg »

так в стандартном CF_UNICODETEXT просто ссылка на обычную сишную строку. обсуждали совсем недавно.
wakh
Posts: 128
Joined: Wed 27 Apr, 2005 09:16
Location: Перогиреево
Has thanked: 6 times
Contact:

Символ "00"

Post by wakh »

Версия ФАРа 3.0.4455 х64
Занимаюсь роликами и SEO, обращайтесь :)
User avatar
HaRT
Moderator
Posts: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Символ "00"

Post by HaRT »

zg wrote: в стандартном CF_UNICODETEXT просто ссылка на обычную сишную строку
Неужто даже GlobalSize не помогает не обрывать строку раньше времени?
zg wrote: обсуждали совсем недавно
Где-то тут на форуме? Что-то я не смог найти…
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Символ "00"

Post by DrKnS »

HaRT wrote:
zg wrote: в стандартном CF_UNICODETEXT просто ссылка на обычную сишную строку
Неужто даже GlobalSize не помогает не обрывать строку раньше времени?
А где написано, что выделенный размер равен используемому?
User avatar
zg
zero-gravity
Posts: 6016
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Символ "00"

Post by zg »

HaRT wrote:
zg wrote: в стандартном CF_UNICODETEXT просто ссылка на обычную сишную строку
Неужто даже GlobalSize не помогает не обрывать строку раньше времени?
CF_UNICODETEXT
Unicode text format. Each line ends with a carriage return/linefeed (CR-LF) combination. A null character signals the end of the data.
HaRT wrote:
zg wrote: обсуждали совсем недавно
Где-то тут на форуме? Что-то я не смог найти…
да.
2useven10
Posts: 5211
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 310 times

Символ "00"

Post by 2useven10 »

Ну во-первых ни разу не cсылка на строку. HGLOBAL содержит весь текст.

Во вторых GlobalSize(hMem) может быть больше запрошенного размера,
хотя у себя (Win10 x64) под отладчиком мне такого получить не удалось.
Даже если такое произойдёт, для своих блоков мы можем это отследить и добить блок до выделенного размера
(например пробелами). Кроме того, так как дополнительный терминирующий \0 пишут все (и мы тоже),
реальный конец текста найти можно (для своих блоков гарантированно).

Проблема может быть только для чужих блоков. Надо выяснить когда запрошенный и реальный размер HGLOBAL
могут не совпадать, я бы не удивился, если на современных системах такого вообще не может быть...
User avatar
zg
zero-gravity
Posts: 6016
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Символ "00"

Post by zg »

это как при реаллоке в меньший размер адрес не может поменяться. ну-ну.
почему нельзя добавить свой формат с размером и когда можно — использовать его?
2useven10
Posts: 5211
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 310 times

Символ "00"

Post by 2useven10 »

аналогия с реаллоком вряд ли уместна.
речь только о том, что GlobalSize(GlobalAlloc(size, flags)) >= size (согласно MSDN).

'свой' можно, просто добавить блок с размером, и если он есть - использовать.
но вставка чужих блоков останется кривой.
User avatar
HaRT
Moderator
Posts: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Символ "00"

Post by HaRT »

2useven10 wrote: 'свой' можно, просто добавить блок с размером, и если он есть - использовать.
Мне тоже думалось что-то такое.
2useven10 wrote:но вставка чужих блоков останется кривой.
Можно сделать какой-нибудь Paste Special:
HaRT wrote: вытянуть из буфера все данные, если пользователь попросил, а там уж пусть сам разбирается.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
zg
zero-gravity
Posts: 6016
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Символ "00"

Post by zg »

2useven10 wrote:но вставка чужих блоков останется кривой.
с чего вдруг? есть размер, вставляем с размером, нет, как сейчас.
2useven10
Posts: 5211
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 310 times

Символ "00"

Post by 2useven10 »

именно. также криво, как сейчас. v-студия в блок пишет честные данные со всеми нулями. фар берёт только до первого нуля (впрочем как и сама студия).
User avatar
zg
zero-gravity
Posts: 6016
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Символ "00"

Post by zg »

так нельзя по другому брать, по спекам однозначно \0 — конец данных.
Post Reply

Return to “Нужна помощь”