Forward slash как разделитель компонентов пути.

Вам не хватает чего-то в Far? Вы считаете, что вашу идею стоит услышать? Пишите сюда.
User avatar
John Doe
Бюрократ
Posts: 13866
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 74 times
Been thanked: 428 times
Contact:

Re: Forward slash как разделитель компонентов пути.

Post by John Doe »

Latest post of the previous page:

Skirda wrote:а ХЗ.
А хотелось бы.
Возможно ли научить mmode() отключать/включать "квотировование" бэкслешем?
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 8 times

Re: Forward slash как разделитель компонентов пути.

Post by Skirda »

John Doe wrote:Возможно ли научить mmode() отключать/включать "квотировование" бэкслешем?
нет, т.к. mmode вызывается в процессе выполнения макроса, а разбор строки - на этапе компиляции макроса.
We are the Borg. You will be assimilated.
So Say We All!
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Re: Forward slash как разделитель компонентов пути.

Post by DrKnS »

replace("!#!\\!.!", "\\", "/")
Я правильно понимаю - если пихать в макросы метасимволы, то оно таки подставляет, но спотыкается на слешах?

Если да - то это надо или чинить, или не уметь в макросах метасимволы вообще.
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 8 times

Re: Forward slash как разделитель компонентов пути.

Post by Skirda »

ты неправильно понял
replace - это кусок макроса, который запускается из юзерменю.
в момент вызова этого пункта будет примерно таким replace("c:\windows\foo.bat", "\\", "/"), т.е. это юзерменю сам метасимволы превратит в нужную строку. но вот после превращения как раз в макрос и попадает строка с '\'.
из-за того, что в макросах юзаются Це-строки, то макро-компилятор спотыкается в процессе разбора строки, пытаясь превратить \w в символ.

UPD: макросы ничего не знают про метасимволы
We are the Borg. You will be assimilated.
So Say We All!
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Re: Forward slash как разделитель компонентов пути.

Post by DrKnS »

Ага, ясно.

Предлагаю сделать как в C#:

@"c:\windows" == "c:\\windows"
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 8 times

Re: Forward slash как разделитель компонентов пути.

Post by Skirda »

это чё? расшифруй
We are the Borg. You will be assimilated.
So Say We All!
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Re: Forward slash как разделитель компонентов пути.

Post by DrKnS »

MSDN wrote:A regular string literal consists of zero or more characters enclosed in double quotes, as in "hello", and may include both simple escape sequences (such as \t for the tab character) and hexadecimal and Unicode escape sequences.

A verbatim string literal consists of an @ character followed by a double-quote character, zero or more characters, and a closing double-quote character. A simple example is @"hello". In a verbatim string literal, the characters between the delimiters are interpreted verbatim, the only exception being a quote-escape-sequence. In particular, simple escape sequences and hexadecimal and Unicode escape sequences are not processed in verbatim string literals. A verbatim string literal may span multiple lines.
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 8 times

Re: Forward slash как разделитель компонентов пути.

Post by Skirda »

а. идею понял. сделаем
We are the Borg. You will be assimilated.
So Say We All!
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 8 times

Re: Forward slash как разделитель компонентов пути.

Post by Skirda »

сделал.
по-русски как описать verb-константу?
слово "точная строка" как то звучит криво, или пусть так и называется?
We are the Borg. You will be assimilated.
So Say We All!
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Re: Forward slash как разделитель компонентов пути.

Post by DrKnS »

Пусть будет, чего свою терминологию придумывать.
User avatar
John Doe
Бюрократ
Posts: 13866
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 74 times
Been thanked: 428 times
Contact:

Re: Forward slash как разделитель компонентов пути.

Post by John Doe »

Можно "буквальная строка".
DrKnS wrote:Пусть будет, чего свою терминологию придумывать.
Какая уж там терминология, даже орфографию не правят...
Вообще verbatim — "дословно".
User avatar
John Doe
Бюрократ
Posts: 13866
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 74 times
Been thanked: 428 times
Contact:

Re: Forward slash как разделитель компонентов пути.

Post by John Doe »

А это будет?
Чтобы включить знак двойной кавычки в строку в кавычках с @, следует использовать знак кавычек дважды
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 8 times

Re: Forward slash как разделитель компонентов пути.

Post by Skirda »

обязательно и дважды-двойные кавычки тоже
После build 1652 реплэйс нужно переписать так:

Code: Select all

replace(@"!#!\!.!", @"\", "/")
или так

Code: Select all

replace(@"!#!\!.!", "\\", "/")
но первый аргумент должен быть "точной строкой"
We are the Borg. You will be assimilated.
So Say We All!
User avatar
John Doe
Бюрократ
Posts: 13866
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 74 times
Been thanked: 428 times
Contact:

Re: Forward slash как разделитель компонентов пути.

Post by John Doe »

Skirda wrote:обязательно и дважды-двойные кавычки тоже
Это не все проблемы решает :(
Пример: передача парамера в алиас-макрос:

Code: Select all

doskey msg=macro:post msgbox("",@"$*")
User avatar
DAtaMan
Posts: 262
Joined: Wed 24 Jun, 2009 10:01
Location: не отсюда

Re: Forward slash как разделитель компонентов пути.

Post by DAtaMan »

оффтоп :oops:
2B OR NOT 2B = FF (Иногда code - это просто код. Почти Дйерф Омолш Днумзигис)
To ban or not to ban, that is the question. ©
AnrDaemon
Posts: 93
Joined: Mon 14 Jun, 2010 20:25

Re: Forward slash как разделитель компонентов пути.

Post by AnrDaemon »

Skirda wrote:а ХЗ.

хмм, а кто мешает написать так:

Code: Select all

replace(PPanel.Path+"/"+PPanel.Current, "\\", "/")
ы?
Я как раз искал что-то подобное в энциклопедии. Видимо, где-то не там искал...

Code: Select all

macro:post print("view:<? diff
 !?$UnixDiff$Options ((-c, -b etc.)):?!
 -x 'CVS' -x '.svn' -I '\\$Id.*\\$' --strip-trailing-cr -- '" +
 replace(PPanel.Path + "/" + PPanel.Current, "\\", "/") + "' '" +
 replace(APanel.Path + "/" + APanel.Current, "\\", "/") + "'") Enter
Можно добавлять в копилку.
Post Reply

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