Управляющие/непечатные символы

Хотите говорить о Far и не знаете, куда обратиться?
Post Reply
User avatar
Dennis_Moore
Posts: 237
Joined: Tue 03 Mar, 2015 19:54
Location: Kiev
Has thanked: 5 times
Been thanked: 11 times

Управляющие/непечатные символы

Post by Dennis_Moore » Fri 23 Jun, 2017 20:02

HaRT wrote:
Fri 23 Jun, 2017 19:30
Lua тут ни при чём. Почитайте в Википедии про CR и LF
Я знаю про оличия в этом плане между ОС. Непонятно тогда почему в C такой код

Code: Select all

    
    printf("123456\rDEF");
выведет DEF456, а не
123456
DEF
Last edited by Dennis_Moore on Fri 23 Jun, 2017 20:04, edited 1 time in total.

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

Управляющие/непечатные символы

Post by HaRT » Fri 23 Jun, 2017 20:19

Dennis_Moore wrote:
Fri 23 Jun, 2017 20:02
выведет DEF456
Я проверил на RHEL5 с gcc 4.1.2 — выводится “DEF”, что вполне согласуется с назначением символа Carriage Return. То, что наблюдаете Вы, — это особенность виндовой консоли. А, скажем, на ленточном телетайпе получилось бы что-то вообще иное. Учите матчасть, не ленитесь, благо документации и прочих материалов хоть отбавляй.
Фар есть инструмент, а не нянька. © 2009 DrKnS

Shmuel
Posts: 5230
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 151 times

Управляющие/непечатные символы

Post by Shmuel » Fri 23 Jun, 2017 20:23

Dennis_Moore, Lua выводит то же самое, что и C. Но в LuaMacro функция print переопределена, чтобы сохранить совместимость с прежним Macro API. И (если не ошибаюсь) в Энциклопедии в описании print именно указывается употреблять \r для перевода строки.

P.S. Память подвела, в описании print про \r ничего нет (перепутал с ECTL_INSERTTEXT). Тем не менее, фаровский print работает так.
Last edited by Shmuel on Fri 23 Jun, 2017 20:34, edited 1 time in total.

User avatar
Dennis_Moore
Posts: 237
Joined: Tue 03 Mar, 2015 19:54
Location: Kiev
Has thanked: 5 times
Been thanked: 11 times

Управляющие/непечатные символы

Post by Dennis_Moore » Fri 23 Jun, 2017 20:31

Shmuel wrote:
Fri 23 Jun, 2017 20:23
Dennis_Moore, Lua выводит то же самое, что и C. Но в LuaMacro функция print переопределена, чтобы сохранить совместимость с прежним Macro API. И (если не ошибаюсь) в Энциклопедии в описании print именно указывается употреблять \r для перевода строки.
Да, уже проверил отдельным интерпретатором Lua и хотел написать.

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

Управляющие/непечатные символы

Post by DrKnS » Fri 23 Jun, 2017 20:34

Shmuel wrote:
Fri 23 Jun, 2017 20:23
в Энциклопедии в описании print именно указывается употреблять \r для перевода строки
Вроде ничего такого нет.

Shmuel
Posts: 5230
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 151 times

Управляющие/непечатные символы

Post by Shmuel » Fri 23 Jun, 2017 20:35

DrKnS, моё сообщение выше отредактировано.

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

Управляющие/непечатные символы

Post by DrKnS » Fri 23 Jun, 2017 20:46

Shmuel wrote:
Fri 23 Jun, 2017 20:23
ECTL_INSERTTEXT
Какая прелесть. В документации CR, в коде - '\n'.

User avatar
Dennis_Moore
Posts: 237
Joined: Tue 03 Mar, 2015 19:54
Location: Kiev
Has thanked: 5 times
Been thanked: 11 times

Управляющие/непечатные символы

Post by Dennis_Moore » Sat 24 Jun, 2017 12:44

DrKnS wrote:
Fri 23 Jun, 2017 20:46
Какая прелесть. В документации CR, в коде - '\n'.
Т.е. это баг и в ближайшее время у \r будет такое же поведение как у lua.exe ?

Shmuel
Posts: 5230
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 151 times

Управляющие/непечатные символы

Post by Shmuel » Sat 24 Jun, 2017 12:51

Это не баг, а (скажем так) несоответствие между документацией и реализацией.
Но это не о print говорится, а о ECTL_INSERTTEXT.
А зачем вам поведение \r как у lua.exe ? Меня и теперешнее поведение устраивает (но есть одна тонкость - я практически всегда пользуюсь только \n).

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

Управляющие/непечатные символы

Post by John Doe » Sat 24 Jun, 2017 13:56

Shmuel wrote:
Sat 24 Jun, 2017 12:51
я практически всегда пользуюсь только \n
Во всяком случае в некоторых местах именно \n используется как разделитель, и это документировано, например http://api.farmanager.com/ru/service_fu ... ssage.html

User avatar
Dennis_Moore
Posts: 237
Joined: Tue 03 Mar, 2015 19:54
Location: Kiev
Has thanked: 5 times
Been thanked: 11 times

Управляющие/непечатные символы

Post by Dennis_Moore » Sat 24 Jun, 2017 14:31

Shmuel wrote:
Sat 24 Jun, 2017 12:51
А зачем вам поведение \r как у lua.exe ?
Была одна мысль по использованию, но я понял что это мне не поможет.

Post Reply

Return to “Обсуждение Far Manager”