Ввод \0 (0x00, нулевых символов) в редакторе

Столкнулись с проблемой в использовании Far? Здесь можно получить помощь.
Post Reply
User avatar
Grom PE
Posts: 10
Joined: Sun 21 Jun, 2015 14:24
Has thanked: 4 times

Ввод \0 (0x00, нулевых символов) в редакторе

Post by Grom PE » Sat 30 Sep, 2017 08:40

В доюникодные времена нулевой символ 0x00 можно было вводить в редакторе Far'а с помощью Alt+num256, а теперь эта комбинация вводит символ U+0100.

Ещё пробовал скриптом Lua:

Code: Select all

print("hello\0world")
editor.InsertText(-1, "hello\0world")
Но API обрезают строку на символе \0.

Пока вижу только костыльный способ через уродование буфера обмена, как раз там недавно специально поддержку нулей добавили.

Я что-то упускаю из вида?

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

Ввод \0 (0x00, нулевых символов) в редакторе

Post by zg » Sat 30 Sep, 2017 16:08

это ограничение InsertText. editor.SetString(nil,1,"hello\0world") работает.

User avatar
Grom PE
Posts: 10
Joined: Sun 21 Jun, 2015 14:24
Has thanked: 4 times

Ввод \0 (0x00, нулевых символов) в редакторе

Post by Grom PE » Sat 30 Sep, 2017 16:59

О! Это уже интересней. Теперь можно печатать строки с нулями:

Code: Select all

function binaryprint(text)
  local info = editor.GetInfo();
  local line = editor.GetString(-1, info.CurLine).StringText;
  line = line:sub(1, info.CurPos - 1) .. text .. line:sub(info.CurPos);
  editor.SetString(-1, info.CurLine, line);
  editor.SetPosition(-1, info.CurLine, info.CurPos + unicode.utf8.len(text));
end;

binaryprint("\0");

User avatar
DrKnS
Posts: 4642
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 4 times
Been thanked: 125 times
Contact:

Ввод \0 (0x00, нулевых символов) в редакторе

Post by DrKnS » Sat 30 Sep, 2017 21:41

Grom PE wrote:
Sat 30 Sep, 2017 08:40
В доюникодные времена нулевой символ 0x00 можно было вводить в редакторе Far'а с помощью Alt+num256
А теперь Alt+65536.

Post Reply

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