ASCII(0) в тексте

Вам не хватает чего-то в Far? Вы считаете, что вашу идею стоит услышать? Пишите сюда.
Post Reply
cyberspace
Posts: 43
Joined: Wed 22 Apr, 2009 02:38
Has thanked: 4 times

ASCII(0) в тексте

Post by cyberspace »

Hello.

Дано: в текстовом файле посреди строки встречается nul, байт=0.
Понятно, что такого быть не должно, это был какой-то глюк программы, создавшей текстовой файл.

Редактор обращается с этим нулём корректно. Отображает его как пустое место, как пробел. При записи файла после редактирования - сохраняет всё правильно.

А вот при копировании выделенного фрагмента в буфер - ошибается.
Far2 b1807 копирует в буфер только до этого нулевого байта.
Far3 b4040 урезает, укорачивает только строку, в которой был этот nul, следующие строки в порядке.
Понятно, ASCIIZ-строки это наше всё.

Большая просьба к авторам: подправьте, пожалуйста.
Если с обработкой такой "неправильной" текстовой строки, строки в нулем в середине, возникают трудности, то пусть он - Фар - хотя бы предупреждает. Как, например, сейчас Фар предупреждает о невозможности сохранить какие-либо символы в принятой кодировке.
--Have a nice day
\\Csp
User avatar
zg
zero-gravity
Posts: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

ASCII(0) в тексте

Post by zg »

разве это не ограничение системного буфера?
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

ASCII(0) в тексте

Post by John Doe »

Вертикальные блоки как-то храним в системном, можно с нулём аналогично: в текст пойдёт строка с вырезанным нулём, а в приватном фрормате фар сам себе хозяин.
cyberspace
Posts: 43
Joined: Wed 22 Apr, 2009 02:38
Has thanked: 4 times

ASCII(0) в тексте

Post by cyberspace »

zg wrote: разве это не ограничение системного буфера?
Если воспользоваться другим редактором, я проверил на NP++, то через буфер копируется полностью.
Значит затык не в самом буфере.

Да по фигу. Если это ограничение сложно обойти, то предупреждение зело будет полезно.

В моем случае это был здоровенный текстовой файл. На 13 мегабайт. Который мне нужно было быстренько перекинуть из 866 в 1251.
Если б не последующий анализатор этого текста, то я бы и не заметил потерю части записей.
--Have a nice day
\\Csp
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

ASCII(0) в тексте

Post by John Doe »

cyberspace wrote: я проверил на NP++, то через буфер копируется полностью.
Какой-то у вас другой NP++.
У меня заменяется на пробелы.

Update
Нашёл в глубинах меню команды

Code: Select all

Copy Binary Content
Cut Binary Content
Paste Binary Content
Использует собственный формат буфера "Notepad++ Binary Text" (4 байта).
При этом в стандартных форматах действительно присутствуют нули, и вставить их куда-либо стандартными средствами нельзя.
(зря они так сделали, лучше бы в своём формате хранили полную бинарную копию с нулями, а в стандартных пробелы для совместимости)
User avatar
HaRT
Moderator
Posts: 10806
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 220 times
Been thanked: 357 times

ASCII(0) в тексте

Post by HaRT »

DrKnS wrote:
HaRT wrote:
zg wrote: в стандартном CF_UNICODETEXT просто ссылка на обычную сишную строку
Неужто даже GlobalSize не помогает не обрывать строку раньше времени?
А где написано, что выделенный размер равен используемому?
Он и не равен, но он по крайней мере не меньше — т.е. технически возможно вытянуть из буфера все данные, если пользователь попросил, а там уж пусть сам разбирается.
Фар есть инструмент, а не нянька. © 2009 DrKnS
писят шесят семисят
Posts: 37
Joined: Thu 02 Jul, 2015 22:11
Has thanked: 4 times
Been thanked: 1 time

Вы, парни, используете null-terminated strings в редакторе?

Post by писят шесят семисят »

Невозможно скопировать в клипбоард и вставить бинарные данные редактируемого файла, если в них есть char(0). :facepalm:
Karagy
Posts: 57
Joined: Tue 02 May, 2006 08:43
Location: Питер
Been thanked: 3 times

ASCII(0) в тексте

Post by Karagy »

Так и должно быть.
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

ASCII(0) в тексте

Post by Shmuel »

писят шесят семисят wrote: Невозможно скопировать в клипбоард и вставить бинарные данные редактируемого файла, если в них есть char(0)
Начиная с Far 3.0.4496 должно работать.
Post Reply

Return to “Предложения и идеи”