Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Windows Script Host
Goto page Previous  1, 2, 3 ... 15, 16, 17 ... 25, 26, 27  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Wed Nov 24, 2010 13:02    Post subject: Reply with quote

Batya
А дальше, если ключ найден, то используем его в следующем методе.

Я в принципе вчера разобрался, что делать со значением переменной, чтобы выдёргивать нужный кусок. Конструкция Left("блабла", Len("блабла"-x). Но хотелось бы узнать именно, как работать с найденным ключём.
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2218
Location: Москва, Россия

Post (Separately) Posted: Wed Nov 24, 2010 14:17    Post subject: Reply with quote

Flasher wrote:
А дальше, если ключ найден, то используем его в следующем методе.

И в чём здесь проблема?

Flasher wrote:
Но хотелось бы узнать именно, как работать с найденным ключём.

Как угодно.
Можно, например, вывести его на экран Wink

Flasher wrote:
Left("блабла", Len("блабла")-x)

Здесь пропустил скобку.
_________________
Нет, я не сплю. Я просто медленно моргаю.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Wed Nov 24, 2010 14:21    Post subject: Reply with quote

Batya wrote:
И в чём здесь проблема?
Можно, например, вывести его на экран
Ну и как его вывести? Как вообще указывать найденное в дальнейших методах?
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2218
Location: Москва, Россия

Post (Separately) Posted: Wed Nov 24, 2010 14:35    Post subject: Reply with quote

Погоди, ты ничего не путаешь?
Элемент массива существует только при точном соответствии по ключу.
Т.е. здесь
Code:
A = "C:\"
B = "C:\1\1"
C = "C:\"
D = "C:\1"
E = "C:\2"
Set List = CreateObject("Scripting.Dictionary")
List.Add  A, ""
List.Add  B, ""
MsgBox List.Exists(C)
MsgBox List.Exists(D)
MsgBox List.Exists(E)

"Истина" будет выведена только в первом случае, в остальных двух - "Ложь".

Flasher wrote:
Как вообще указывать найденное в дальнейших методах?

В итоге, если найден элемент по переменной, используемой как ключ, то тебе и нужно дальше обрабатывать эту переменную.
_________________
Нет, я не сплю. Я просто медленно моргаю.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Wed Nov 24, 2010 14:52    Post subject: Reply with quote

Batya wrote:
Погоди, ты ничего не путаешь?
Элемент массива существует только при точном соответствии по ключу.
Ну это логично. А что я путаю?
Batya wrote:
В итоге, если найден элемент по переменной, используемой как ключ, то тебе и нужно дальше обрабатывать эту переменную.
Это я ещё вчера понял отсюда и реализовал. Просто я думал, что найденный элемент массива тоже можно как-то обрабатывать, а не только значение переменной, с которых совпал элемент массива.
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2218
Location: Москва, Россия

Post (Separately) Posted: Wed Nov 24, 2010 16:00    Post subject: Reply with quote

Flasher wrote:
Просто я думал, что найденный элемент массива тоже можно как-то обрабатывать, а не только значение переменной, с которых совпал элемент массива.

Не сваливай понятия в одну кучу.
Элемент массива - это сущность, которая обусловлена ключом и значением.
У элемента массива можно поменять как значение, так и ключ.
Если ты нашёл элемент массива по ключу, хранящемуся в переменной, то ты можешь обратиться к найденному элементу именно по этому ключу.

Короче, не надо абстракций.
Опиши конкретную задачу.
_________________
Нет, я не сплю. Я просто медленно моргаю.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Fri Nov 26, 2010 06:33    Post subject: Reply with quote

Batya
Упрёк понятен. Как ты уже, наверно, понял, скрипт с реализацией тут.
Вот поясни конкретно, что имеется в виду под "ты можешь обратиться к найденному элементу именно по этому ключу"? Т.е. ровно как было предписано изначально?
Тогда у меня другой вопрос: можно ли задавать значения в массиве в виде объектов/методов, а не текста, а потом обращаться к найденным значениям по соответствующим им ключам? Если да, то как это будет выглядеть?
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2218
Location: Москва, Россия

Post (Separately) Posted: Fri Nov 26, 2010 11:29    Post subject: Reply with quote

Flasher
Честно говоря, пока нет времени понять твою логику с кучей If-ов. Позже разберусь.
Пока только немного упростил твой скрипт:
Code:
' Reload TC with return to different directories types
' and open archives
' Requirements: Script Helper ActiveX for TC by Volniy
' Parameters: "%X%P%Z" "%T"
' Flasher (c)
'=================================
LP = WScript.Arguments(0)
RP = WScript.Arguments(1)

With CreateObject("TCScript.Helper")
  .SendCommand "cm_ConfigSaveDirHistory"
  L = Replace(.INIRead(.MainINI,  "LeftHistory",  "0",  ""), "/", "\")
  R = Replace(.INIRead(.MainINI,  "RightHistory",  "0",  ""), "/", "\")
  .SendCommand "cm_Exit", True
End With

LM = Left(L, Len(L)-(Len(LP)-1))
RM = Left(R, Len(R)-(Len(RP)-1))

Dim ListL, ListR, NameArr, N, Param, TCexe
Set ListL = CreateObject("Scripting.Dictionary")
Set ListR = CreateObject("Scripting.Dictionary")
NameArr   = Array(&Ha, &H3, &H4, &H11, &H12)

With CreateObject("Shell.Application")
  For Each N In NameArr
    ListL.Add .NameSpace(N).Self.Path & "|" & LP , ""
    ListR.Add .NameSpace(N).Self.Path & "|" & RP , ""
  Next
End With

If L="::|"&LP And ListR.Exists(R) Then
  Param = "/L=""" & L  & """ /R=""" & RM & """"
ElseIf ListL.Exists(L) And R="::|"&RP Then
  Param = "/L=""" & LM & """ /R=""" & R  & """"
ElseIf ListL.Exists(L) And ListR.Exists(R) Then
  Param = "/L=""" & LM & """ /R=""" & RM & """"
ElseIf ListL.Exists(L) Then
  Param = "/R=""" & R  & """ /L=""" & LM & """"
ElseIf ListR.Exists(R) Then
  Param = "/L=""" & L  & """ /R=""" & RM & """"
Else
  Param = "/L=""" & L  & """ /R=""" & R  & """"
End If

TCexe = "%Commander_Path%\totalcmd.exe"
With CreateObject("WScript.Shell")
  .Run """" & .ExpandEnvironmentStrings(TCexe) & """ " & Param, 0
End With

WScript.Quit


Flasher wrote:
можно ли задавать значения в массиве в виде объектов/методов, а не текста, а потом обращаться к найденным значениям по соответствующим им ключам?

Значения ассоциированного массива могут быть любыми - и объектами, и другими массивами. Ключи же - не знаю, не пробовал.
_________________
Нет, я не сплю. Я просто медленно моргаю.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Fri Nov 26, 2010 11:43    Post subject: Reply with quote

Batya
А я ведь Arrow никогда не пользовался. Удобная функция. Спасибо! Теперь почаще буду смотреть в "Прочие функции". Про то, чтобы впихнуть всё в одну переменную сразу что-то не подумал. Логично ведь. Smile
Не против, если я там свой скрипт заменю на переделанный?
Добавлено: ладно, я там просто ссылку на твой пост добавлю.

Batya wrote:
Ключи же - не знаю, не пробовал.
Про ключи-то я и не спрашиваю, как ты мог заметить, они в данном скрипте являются объектами. Wink
Back to top
View user's profile Send private message
Volniy



Joined: 15 Dec 2004
Posts: 585
Location: Местный

Post (Separately) Posted: Fri Nov 26, 2010 12:27    Post subject: Reply with quote

Quote:
The key is used to retrieve an individual item and is usually a integer or a string, but can be anything except an array.

Ключ (обычно это целочисленная переменная или строка) может быть чем угодно, кроме массива.
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2218
Location: Москва, Россия

Post (Separately) Posted: Fri Nov 26, 2010 12:53    Post subject: Reply with quote

Flasher wrote:
Про ключи-то я и не спрашиваю, как ты мог заметить, они в данном скрипте являются объектами.

Ты не прав. У тебя это строка, а не объект.

Flasher wrote:
А я ведь Arrow никогда не пользовался.

Не Arrow, а Array.

Flasher wrote:
Не против, если я там свой скрипт заменю на переделанный?

Не против.

Volniy
Спасибо за информацию.
_________________
Нет, я не сплю. Я просто медленно моргаю.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Fri Nov 26, 2010 12:57    Post subject: Reply with quote

Batya wrote:
У тебя это строка, а не объект.
Строка, использующая метод NameSpace объекта Shell. Что не так?
Batya wrote:
Не Arrow, а Array.
Ну описался. Прям обязательно было поправлять? Smile
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2218
Location: Москва, Россия

Post (Separately) Posted: Fri Nov 26, 2010 13:02    Post subject: Reply with quote

Flasher wrote:
Строка, использующая метод NameSpace объекта Shell. Что не так?

Метод NameSpace объекта Shell возвращает строку. Соответственно, ключём массива является строка (а не объект). Не надо сваливать всё в кучу.

Flasher wrote:
Ну описался. Прям обязательно было поправлять?

На всякий случай.

Flasher wrote:
Про ключи-то я и не спрашиваю...

А значения в массивах у тебя пока пустые. (Это я тоже, на всякий случай.)
_________________
Нет, я не сплю. Я просто медленно моргаю.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Fri Nov 26, 2010 13:14    Post subject: Reply with quote

Batya wrote:
Соответственно, ключём массива является строка (а не объект). Не надо сваливать всё в кучу.
Да я специально не сваливаю. Я по понятным причинам только вникаю в нюансы терминологии. Ну что'ж, будем знать.
Напиши тогда, как будет выглядеть использование объектов в подобном массиве. Интересно стало.
Batya wrote:
А значения в массивах у тебя пока пустые.
Ну да. А они мне в данном случае и не нужны. Если бы я использовал ListL/R.Items(L/R), то другое дело.
Back to top
View user's profile Send private message
Rodny



Joined: 24 Jan 2007
Posts: 949
Location: Могилёв, Беларусь

Post (Separately) Posted: Sat Feb 12, 2011 20:26    Post subject: Reply with quote

Альтернативой метода SetSrcPath (установить путь в панели-источнике TC) из Хелпера является только запуск через командную строку типа
Code:
.Run .ExpandEnvironmentStrings("%COMMANDER_PATH%\totalcmd.exe") & " /O /S /L=" & NewSrcPath

или есть ещё варианты?
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander All times are GMT + 4 Hours
Goto page Previous  1, 2, 3 ... 15, 16, 17 ... 25, 26, 27  Next
Page 16 of 27

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group