View previous topic :: View next topic |
Author |
Message |
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Wed Nov 24, 2010 13:02 Post subject: |
|
|
Batya
А дальше, если ключ найден, то используем его в следующем методе.
Я в принципе вчера разобрался, что делать со значением переменной, чтобы выдёргивать нужный кусок. Конструкция Left("блабла", Len("блабла"-x). Но хотелось бы узнать именно, как работать с найденным ключём. |
|
Back to top |
|
|
Batya
Joined: 15 Dec 2004 Posts: 2220 Location: Москва, Россия
|
(Separately) Posted: Wed Nov 24, 2010 14:17 Post subject: |
|
|
Flasher wrote: | А дальше, если ключ найден, то используем его в следующем методе. |
И в чём здесь проблема?
Flasher wrote: | Но хотелось бы узнать именно, как работать с найденным ключём. |
Как угодно.
Можно, например, вывести его на экран
Flasher wrote: | Left("блабла", Len("блабла")-x) |
Здесь пропустил скобку. _________________ Нет, я не сплю. Я просто медленно моргаю. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Wed Nov 24, 2010 14:21 Post subject: |
|
|
Batya wrote: | И в чём здесь проблема?
Можно, например, вывести его на экран | Ну и как его вывести? Как вообще указывать найденное в дальнейших методах? |
|
Back to top |
|
|
Batya
Joined: 15 Dec 2004 Posts: 2220 Location: Москва, Россия
|
(Separately) Posted: Wed Nov 24, 2010 14:35 Post subject: |
|
|
Погоди, ты ничего не путаешь?
Элемент массива существует только при точном соответствии по ключу.
Т.е. здесь
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 |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Wed Nov 24, 2010 14:52 Post subject: |
|
|
Batya wrote: | Погоди, ты ничего не путаешь?
Элемент массива существует только при точном соответствии по ключу. | Ну это логично. А что я путаю?
Batya wrote: | В итоге, если найден элемент по переменной, используемой как ключ, то тебе и нужно дальше обрабатывать эту переменную. | Это я ещё вчера понял отсюда и реализовал. Просто я думал, что найденный элемент массива тоже можно как-то обрабатывать, а не только значение переменной, с которых совпал элемент массива. |
|
Back to top |
|
|
Batya
Joined: 15 Dec 2004 Posts: 2220 Location: Москва, Россия
|
(Separately) Posted: Wed Nov 24, 2010 16:00 Post subject: |
|
|
Flasher wrote: | Просто я думал, что найденный элемент массива тоже можно как-то обрабатывать, а не только значение переменной, с которых совпал элемент массива. |
Не сваливай понятия в одну кучу.
Элемент массива - это сущность, которая обусловлена ключом и значением.
У элемента массива можно поменять как значение, так и ключ.
Если ты нашёл элемент массива по ключу, хранящемуся в переменной, то ты можешь обратиться к найденному элементу именно по этому ключу.
Короче, не надо абстракций.
Опиши конкретную задачу. _________________ Нет, я не сплю. Я просто медленно моргаю. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Fri Nov 26, 2010 06:33 Post subject: |
|
|
Batya
Упрёк понятен. Как ты уже, наверно, понял, скрипт с реализацией тут.
Вот поясни конкретно, что имеется в виду под "ты можешь обратиться к найденному элементу именно по этому ключу"? Т.е. ровно как было предписано изначально?
Тогда у меня другой вопрос: можно ли задавать значения в массиве в виде объектов/методов, а не текста, а потом обращаться к найденным значениям по соответствующим им ключам? Если да, то как это будет выглядеть? |
|
Back to top |
|
|
Batya
Joined: 15 Dec 2004 Posts: 2220 Location: Москва, Россия
|
(Separately) Posted: Fri Nov 26, 2010 11:29 Post subject: |
|
|
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 |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Fri Nov 26, 2010 11:43 Post subject: |
|
|
Batya
А я ведь Arrow никогда не пользовался. Удобная функция. Спасибо! Теперь почаще буду смотреть в "Прочие функции". Про то, чтобы впихнуть всё в одну переменную сразу что-то не подумал. Логично ведь.
Не против, если я там свой скрипт заменю на переделанный?
Добавлено: ладно, я там просто ссылку на твой пост добавлю.
Batya wrote: | Ключи же - не знаю, не пробовал. | Про ключи-то я и не спрашиваю, как ты мог заметить, они в данном скрипте являются объектами. |
|
Back to top |
|
|
Volniy
Joined: 15 Dec 2004 Posts: 585 Location: Местный
|
(Separately) Posted: Fri Nov 26, 2010 12:27 Post subject: |
|
|
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 |
|
|
Batya
Joined: 15 Dec 2004 Posts: 2220 Location: Москва, Россия
|
(Separately) Posted: Fri Nov 26, 2010 12:53 Post subject: |
|
|
Flasher wrote: | Про ключи-то я и не спрашиваю, как ты мог заметить, они в данном скрипте являются объектами. |
Ты не прав. У тебя это строка, а не объект.
Flasher wrote: | А я ведь Arrow никогда не пользовался. |
Не Arrow, а Array.
Flasher wrote: | Не против, если я там свой скрипт заменю на переделанный? |
Не против.
Volniy
Спасибо за информацию. _________________ Нет, я не сплю. Я просто медленно моргаю. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Fri Nov 26, 2010 12:57 Post subject: |
|
|
Batya wrote: | У тебя это строка, а не объект. | Строка, использующая метод NameSpace объекта Shell. Что не так?
Batya wrote: | Не Arrow, а Array. | Ну описался. Прям обязательно было поправлять? |
|
Back to top |
|
|
Batya
Joined: 15 Dec 2004 Posts: 2220 Location: Москва, Россия
|
(Separately) Posted: Fri Nov 26, 2010 13:02 Post subject: |
|
|
Flasher wrote: | Строка, использующая метод NameSpace объекта Shell. Что не так? |
Метод NameSpace объекта Shell возвращает строку. Соответственно, ключём массива является строка (а не объект). Не надо сваливать всё в кучу.
Flasher wrote: | Ну описался. Прям обязательно было поправлять? |
На всякий случай.
Flasher wrote: | Про ключи-то я и не спрашиваю... |
А значения в массивах у тебя пока пустые. (Это я тоже, на всякий случай.) _________________ Нет, я не сплю. Я просто медленно моргаю. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Fri Nov 26, 2010 13:14 Post subject: |
|
|
Batya wrote: | Соответственно, ключём массива является строка (а не объект). Не надо сваливать всё в кучу. | Да я специально не сваливаю. Я по понятным причинам только вникаю в нюансы терминологии. Ну что'ж, будем знать.
Напиши тогда, как будет выглядеть использование объектов в подобном массиве. Интересно стало. Batya wrote: | А значения в массивах у тебя пока пустые. | Ну да. А они мне в данном случае и не нужны. Если бы я использовал ListL/R.Items(L/R), то другое дело. |
|
Back to top |
|
|
Rodny
Joined: 24 Jan 2007 Posts: 949 Location: Могилёв, Беларусь
|
(Separately) Posted: Sat Feb 12, 2011 20:26 Post subject: |
|
|
Альтернативой метода SetSrcPath (установить путь в панели-источнике TC) из Хелпера является только запуск через командную строку типа
Code: | .Run .ExpandEnvironmentStrings("%COMMANDER_PATH%\totalcmd.exe") & " /O /S /L=" & NewSrcPath |
или есть ещё варианты? |
|
Back to top |
|
|
|
|
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
|