Windows Script Host
Select messages from
# through # FAQ
[/[Print]\]
Goto page Previous  1, 2, 3 ... 15, 16, 17 ... 25, 26, 27  Next  :| |:
Total Commander -> Автоматизация Total Commander

#226:  Author: FlasherLocation: Москва PostPosted: Wed Nov 24, 2010 13:02
    —
Batya
А дальше, если ключ найден, то используем его в следующем методе.

Я в принципе вчера разобрался, что делать со значением переменной, чтобы выдёргивать нужный кусок. Конструкция Left("блабла", Len("блабла"-x). Но хотелось бы узнать именно, как работать с найденным ключём.

#227:  Author: BatyaLocation: Москва, Россия PostPosted: Wed Nov 24, 2010 14:17
    —
Flasher wrote:
А дальше, если ключ найден, то используем его в следующем методе.

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

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

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

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

Здесь пропустил скобку.

#228:  Author: FlasherLocation: Москва PostPosted: Wed Nov 24, 2010 14:21
    —
Batya wrote:
И в чём здесь проблема?
Можно, например, вывести его на экран
Ну и как его вывести? Как вообще указывать найденное в дальнейших методах?

#229:  Author: BatyaLocation: Москва, Россия PostPosted: Wed Nov 24, 2010 14:35
    —
Погоди, ты ничего не путаешь?
Элемент массива существует только при точном соответствии по ключу.
Т.е. здесь
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:
Как вообще указывать найденное в дальнейших методах?

В итоге, если найден элемент по переменной, используемой как ключ, то тебе и нужно дальше обрабатывать эту переменную.

#230:  Author: FlasherLocation: Москва PostPosted: Wed Nov 24, 2010 14:52
    —
Batya wrote:
Погоди, ты ничего не путаешь?
Элемент массива существует только при точном соответствии по ключу.
Ну это логично. А что я путаю?
Batya wrote:
В итоге, если найден элемент по переменной, используемой как ключ, то тебе и нужно дальше обрабатывать эту переменную.
Это я ещё вчера понял отсюда и реализовал. Просто я думал, что найденный элемент массива тоже можно как-то обрабатывать, а не только значение переменной, с которых совпал элемент массива.

#231:  Author: BatyaLocation: Москва, Россия PostPosted: Wed Nov 24, 2010 16:00
    —
Flasher wrote:
Просто я думал, что найденный элемент массива тоже можно как-то обрабатывать, а не только значение переменной, с которых совпал элемент массива.

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

Короче, не надо абстракций.
Опиши конкретную задачу.

#232:  Author: FlasherLocation: Москва PostPosted: Fri Nov 26, 2010 06:33
    —
Batya
Упрёк понятен. Как ты уже, наверно, понял, скрипт с реализацией тут.
Вот поясни конкретно, что имеется в виду под "ты можешь обратиться к найденному элементу именно по этому ключу"? Т.е. ровно как было предписано изначально?
Тогда у меня другой вопрос: можно ли задавать значения в массиве в виде объектов/методов, а не текста, а потом обращаться к найденным значениям по соответствующим им ключам? Если да, то как это будет выглядеть?

#233:  Author: BatyaLocation: Москва, Россия PostPosted: Fri Nov 26, 2010 11:29
    —
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:
можно ли задавать значения в массиве в виде объектов/методов, а не текста, а потом обращаться к найденным значениям по соответствующим им ключам?

Значения ассоциированного массива могут быть любыми - и объектами, и другими массивами. Ключи же - не знаю, не пробовал.

#234:  Author: FlasherLocation: Москва PostPosted: Fri Nov 26, 2010 11:43
    —
Batya
А я ведь Arrow никогда не пользовался. Удобная функция. Спасибо! Теперь почаще буду смотреть в "Прочие функции". Про то, чтобы впихнуть всё в одну переменную сразу что-то не подумал. Логично ведь. Smile
Не против, если я там свой скрипт заменю на переделанный?
Добавлено: ладно, я там просто ссылку на твой пост добавлю.

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

#235:  Author: VolniyLocation: Местный PostPosted: Fri Nov 26, 2010 12:27
    —
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.

Ключ (обычно это целочисленная переменная или строка) может быть чем угодно, кроме массива.

#236:  Author: BatyaLocation: Москва, Россия PostPosted: Fri Nov 26, 2010 12:53
    —
Flasher wrote:
Про ключи-то я и не спрашиваю, как ты мог заметить, они в данном скрипте являются объектами.

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

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

Не Arrow, а Array.

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

Не против.

Volniy
Спасибо за информацию.

#237:  Author: FlasherLocation: Москва PostPosted: Fri Nov 26, 2010 12:57
    —
Batya wrote:
У тебя это строка, а не объект.
Строка, использующая метод NameSpace объекта Shell. Что не так?
Batya wrote:
Не Arrow, а Array.
Ну описался. Прям обязательно было поправлять? Smile

#238:  Author: BatyaLocation: Москва, Россия PostPosted: Fri Nov 26, 2010 13:02
    —
Flasher wrote:
Строка, использующая метод NameSpace объекта Shell. Что не так?

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

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

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

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

А значения в массивах у тебя пока пустые. (Это я тоже, на всякий случай.)

#239:  Author: FlasherLocation: Москва PostPosted: Fri Nov 26, 2010 13:14
    —
Batya wrote:
Соответственно, ключём массива является строка (а не объект). Не надо сваливать всё в кучу.
Да я специально не сваливаю. Я по понятным причинам только вникаю в нюансы терминологии. Ну что'ж, будем знать.
Напиши тогда, как будет выглядеть использование объектов в подобном массиве. Интересно стало.
Batya wrote:
А значения в массивах у тебя пока пустые.
Ну да. А они мне в данном случае и не нужны. Если бы я использовал ListL/R.Items(L/R), то другое дело.

#240:  Author: RodnyLocation: Могилёв, Беларусь PostPosted: Sat Feb 12, 2011 20:26
    —
Альтернативой метода SetSrcPath (установить путь в панели-источнике TC) из Хелпера является только запуск через командную строку типа
Code:
.Run .ExpandEnvironmentStrings("%COMMANDER_PATH%\totalcmd.exe") & " /O /S /L=" & NewSrcPath

или есть ещё варианты?



Total Commander -> Автоматизация Total Commander


output generated using printer-friendly topic mod. All times are GMT + 4 Hours

Goto page Previous  1, 2, 3 ... 15, 16, 17 ... 25, 26, 27  Next  :| |:
Page 16 of 27

Powered by phpBB © 2001, 2005 phpBB Group