ASCII(0) в тексте

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

ASCII(0) в тексте

Post by cyberspace » Thu 03 Sep, 2015 11:54

Hello.

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

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

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

Большая просьба к авторам: подправьте, пожалуйста.
Если с обработкой такой "неправильной" текстовой строки, строки в нулем в середине, возникают трудности, то пусть он - Фар - хотя бы предупреждает. Как, например, сейчас Фар предупреждает о невозможности сохранить какие-либо символы в принятой кодировке.
--Have a nice day
\\Csp

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

ASCII(0) в тексте

Post by zg » Thu 03 Sep, 2015 18:33

разве это не ограничение системного буфера?

User avatar
John Doe
Бюрократ
Posts: 11075
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 11 times
Been thanked: 64 times

ASCII(0) в тексте

Post by John Doe » Thu 03 Sep, 2015 18:34

Вертикальные блоки как-то храним в системном, можно с нулём аналогично: в текст пойдёт строка с вырезанным нулём, а в приватном фрормате фар сам себе хозяин.

cyberspace
Posts: 40
Joined: Wed 22 Apr, 2009 02:38
Has thanked: 3 times

ASCII(0) в тексте

Post by cyberspace » Thu 03 Sep, 2015 23:57

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

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

В моем случае это был здоровенный текстовой файл. На 13 мегабайт. Который мне нужно было быстренько перекинуть из 866 в 1251.
Если б не последующий анализатор этого текста, то я бы и не заметил потерю части записей.
--Have a nice day
\\Csp

User avatar
John Doe
Бюрократ
Posts: 11075
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 11 times
Been thanked: 64 times

ASCII(0) в тексте

Post by John Doe » Fri 04 Sep, 2015 00:05

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: 7980
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 66 times
Been thanked: 97 times

ASCII(0) в тексте

Post by HaRT » Tue 08 Dec, 2015 14:10

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 писят шесят семисят » Thu 21 Apr, 2016 19:40

Невозможно скопировать в клипбоард и вставить бинарные данные редактируемого файла, если в них есть char(0). :facepalm:

Karagy
Posts: 56
Joined: Tue 02 May, 2006 08:43
Location: Питер
Been thanked: 3 times

ASCII(0) в тексте

Post by Karagy » Thu 21 Apr, 2016 20:06

Так и должно быть.

Shmuel
Posts: 5041
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 133 times

ASCII(0) в тексте

Post by Shmuel » Thu 21 Apr, 2016 20:14

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

Post Reply

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

Who is online

Users browsing this forum: No registered users and 3 guests