Отсутствие заключительного '\' в APanel.Path

Здесь обсуждается всё, что касается макросов.
User avatar
Wave
Posts: 1885
Joined: Thu 04 Aug, 2005 18:47
Has thanked: 14 times
Been thanked: 26 times

SetPath и корень диска

Post by Wave »

Latest post of the previous page:

Я не уверен, ошибка ли это, но столкнулся с таким вот поведением.

Станем в корень диска D:\ например.
  1. p = APanel.Path;
  2.  
  3. f = APanel.Current;
  4.  
  5. Panel.SetPath(0, "D:\\subfolder", "anyfile.txt");
  6.  
  7. -- чего-то поделали
  8.  
  9. Panel.SetPath(0, p, f);
Ожидание: окажусь в корне D:\ где и был до макроса.
Реальность: D:\subfolder\..

Если мы не в корне, макрос работает, как и задумывалось. А в корне — p == "D:" — и потому не работает. Приходится дополнительную проверку добавлять,
  1. if #p == 2 then p = p .. "\\" end; -- если длина строки == 2 то это корень диска и ему нужно добавить \
Мне не влом лишнюю строчку добавить, но это как бы идеологически неправильно; она ухудшает читаемость; о ней нужно вовремя вспомнить; если о ней не знать или не помнить, будут сюрпризы.
Пользуюсь ФАРом больше 20 лет © собирательный.
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Re: SetPath и корень диска

Post by DrKnS »

Post Reply

Return to “Обсуждение макросов”