1 (изменено: Indomito, 2013-10-27 22:18:57)

Тема: AHK: Перенос переменной в массив с предобработкой

Есть скрипт

+ открыть спойлер
CmdLine := "netsh interface ipv4 show addresses"
ret := RunCon(CmdLine, 0, Output)
MsgBox, Код завершения: %ret%`r`n`r`nВывод:`r`n%Output%

vOutput:=strOutput:="",Output:=Output
StringSplit, strOutput, Output, `"
Loop, %strOutput0%
   vOutput := vOutput strOutput%a_index%
   
;i:= InStr(vOutput, "интерфейс")
;msgbox, %i%

Output:=vOutput, vOutput:=strOutput:="" 
StringSplit, strOutput, Output, `r
Loop, %strOutput0%
   vOutput := vOutput strOutput%a_index%

Output:=vOutput, vOutput:=strOutput:="", arOutput[] := "", i:=1
StringSplit, strOutput, Output, `n
Loop, %strOutput0%
  { 
   vOutput :=  strOutput%a_index%
   arOutput[i] := strOutput%a_index%
   a := vOutput
   b := arOutput[i]
   msgbox, %i%  %a%  %b%   
   i++
  }  
exit

который пошагово удаляет из переменной Output символы `", `r`n, а остальное построчно должно записаться в массив  arOutput[] , но msgbox, %i%  %a%  %b%   показывает что переменная b пустая.
Что я не так написал?
Вроде всё верно и нет ничего необычного, записи в массив не происходит.

P.S. Данный скрипт использует функцию RunCon() из поста №34 темы AHK: Управлением сетевым адаптером

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro

2

Re: AHK: Перенос переменной в массив с предобработкой

Output:=Output

А смысл?

И зачем пошагово? Код какой-то запутанный. Какая конечная цель?

удаляет из переменной Output символы `", `r,  `n и они должны записаться в массив  arOutput[]

Символы `", `r,  `n записывать в массив? Зачем?

3

Re: AHK: Перенос переменной в массив с предобработкой

Я видимо там немного ошибся, по сути мне надо каждую строчку записать в массив убрав  `", `r,  `n и еще пробелы, а потом я этот массив обработаю и получу ещё один - результирующий.

Уже вариантов 5-7 написал, ну просто ступор какой то - ни один не делает то что мне нужно.

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro

4

Re: AHK: Перенос переменной в массив с предобработкой

Ни к чему эта возня с массивами. Надо просто взять из текста то, что нужно, с помощью RegExMatch.

5

Re: AHK: Перенос переменной в массив с предобработкой

Я до неё ещё не добрался, пока обычными средствами пытаюсь и я не понял как она работает - RegExMatch

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro

6

Re: AHK: Перенос переменной в массив с предобработкой

Прочитав тему, проблемы непонял.
В таких случаях обычно приводят конкретный пример строки, и то что должно получится.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

7 (изменено: Indomito, 2013-10-28 00:41:45)

Re: AHK: Перенос переменной в массив с предобработкой

Извиняюсь, забыл вставить, вот скриншот (это вывод одной перемененной Output в 3-ей строчке скрипта)

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro

8

Re: AHK: Перенос переменной в массив с предобработкой

Ничего не ясно, в текстовом виде разве нельзя представить?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

9 (изменено: Indomito, 2013-10-28 01:05:27)

Re: AHK: Перенос переменной в массив с предобработкой

Ты про скриншот или про то, что у меня не получается?

Если второе, то там идут двойные кавычки и при простом копировании переменная в переменную всё ОК, а вот поместить в массив надо обработать, да и не нужны мне пробелы в массиве и остальное, нужен только чистый текст, но построчно, как на скриншоте.

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro

10

Re: AHK: Перенос переменной в массив с предобработкой

Где там двойные кавычки, какие именно пробелы? Ты же опытный участник форума.
Просто приведите конкретную переменную для обработку. И результат что в итоге куда по каким переменным надо рассовать.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

11 (изменено: Indomito, 2013-10-28 02:25:02)

Re: AHK: Перенос переменной в массив с предобработкой

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

Вот что мне нужно, каждую строчку (ограниченную последовательностью [Cr] [Lf])  поместить в отдельный элемент массива, по следующему алгоритму.

  1. Игнорировать пустые строки, те которые содержат только [Cr] [Lf]

  2. Из каждой строки Output  убрать ["] [sps] [tab] [Cr] [Lf]

  3. Каждую полученную строчку поместить в отдельный элемент массива

Вроде всё просто и я это делал неоднократно, но тут не получается.

P.S. C обычными переменными всё получается, но с Output - проблема и в чём она я не могу понять.

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro

12

Re: AHK: Перенос переменной в массив с предобработкой

Навскидку так:


str =
(
"rfvsf se      scev ""


"rf"vsf  v ""


)
Arr := [], i := 0
Loop, parse, str, `r`n  
{ 
    Row := RegExReplace(A_LoopField, """| |" A_Tab)
    If Row is space 
        Continue
    Arr[++i] := Row 
}
Loop % Arr.maxindex()
    MsgBox,, % A_Index, % Arr[A_Index]
ExitApp

P.S. C обычными переменными всё получается, но с Output - проблема и в чём она я не могу понять.

Что за Output, и в чём её необычность?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

13 (изменено: Indomito, 2013-10-28 03:11:09)

Re: AHK: Перенос переменной в массив с предобработкой

serzh82saratov пишет:

Что за Output, и в чём её необычность?

в  AHK есть реализация stdout, но нет stdin - это его реализация.
У меня были трудности с командой netsh - она не выдавала результата, а просто выводила на экран, ну мне помогли и написали функцию.

UPD

serzh82saratov Большое спасибо, все работает, так как нужно, ну на первый взгляд, надо проверить более тщательно.

P.S. Я уж посимвольную обработку начал делать

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro

14 (изменено: Indomito, 2013-10-28 03:10:23)

Re: AHK: Перенос переменной в массив с предобработкой

-del

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro