1

Тема: AHK: Команда - Sort

Много с этой командой было и есть не до конца сформулированных вопросов и "загадок".

Например: опция F. В данном примере, почему список переворачивается?
Что функция ReverseDirection вообще делает, для этого превращения?


Str =
(
Заголовок темы должен начинаться с префикса «AHK: ». 
О том, как правильно составить текст заголовка, читайте здесь. 
У нас не чат, мы пишем грамотно. 
Предложения должны начинаться с большой буквы и заканчиваться точкой. 
Не приветствуются всяческие жаргонные выражения. 
Для оформления кода обязательно используйте тег code. 
)
 
Sort, Str, F ReverseDirection  
MsgBox % Str

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

2

Re: AHK: Команда - Sort

Вот так будет понятнее:

Str =
(
Заголовок темы должен начинаться с префикса «AHK: ». 
О том, как правильно составить текст заголовка, читайте здесь. 
У нас не чат, мы пишем грамотно. 
Предложения должны начинаться с большой буквы и заканчиваться точкой. 
Не приветствуются всяческие жаргонные выражения. 
Для оформления кода обязательно используйте тег code. 
)
 
Sort, Str, F ReverseDirection  
MsgBox % Str

ReverseDirection(a1, a2, offset)  {
   MsgBox, % a1 "`n" a2 "`n" offset
   return offset  
}

Разбивает на строки, сравнивает последовательно каждую с остальными, располагает в соответствии с полученным значением offset. (Offset is positive if a2 came after a1 in the original list; negative otherwise.)

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3 (изменено: serzh82saratov, 2014-01-20 18:58:56)

Re: AHK: Команда - Sort

Разбивает на строки, сравнивает последовательно каждую с остальными, располагает в соответствии с полученным значением offset. (Offset is positive if a2 came after a1 in the original list; negative otherwise.)

Не понимаю почему Offset изменяется, кто "ему говорит об этом"?
Где указывается, что он должен смещатся "вниз" после каждой итерации?

И не будет ли это быстрее работать для "переворота":


Str =
(
Заголовок темы должен начинаться с префикса «AHK: ». 
О том, как правильно составить текст заголовка, читайте здесь. 
У нас не чат, мы пишем грамотно. 
Предложения должны начинаться с большой буквы и заканчиваться точкой. 
Не приветствуются всяческие жаргонные выражения. 
Для оформления кода обязательно используйте тег code. 
)

Delimiter = `n
Arr := StrSplit(Str,Delimiter) 

Loop % MaxIndex := Arr.MaxIndex()
    Res .= Arr[MaxIndex-A_Index+1] Delimiter
     
MsgBox % RTrim(Res, Delimiter)

конечно понимая что вызов StrSplit требует времени, но в дальнейшем сокращает кол-во итераций.

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

4

Re: AHK: Команда - Sort

serzh82saratov пишет:

Не понимаю почему Offset изменяется, кто "ему говорит об этом"?
Где указывается, что он должен смещатся "вниз" после каждой итерации?

Механизм работы данной функции мне неизвестен, нужно исходники смотреть.

serzh82saratov пишет:

И не будет ли это быстрее работать для "переворота":

Это легко определить самостоятельно путём эксперимента.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

5

Re: AHK: Команда - Sort

Это легко определить самостоятельно путём эксперимента.

Согласен. Но мне интересно это понять на теоретическом уровне.

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

6

Re: AHK: Команда - Sort

Тогда исследуй исходники AHK_L .

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

7

Re: AHK: Команда - Sort

Давно хотел спросить: можно ли командой удалить дубликаты строк из списка — но без сортировки?

8

Re: AHK: Команда - Sort

Если без сортировки — то не в этой теме.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

9

Re: AHK: Команда - Sort

Но ведь удаление дубликатов строк командой Sort делается, с чего бы не в этой?
Или можно как-то иначе?

10

Re: AHK: Команда - Sort

Можно. Создай новую тему или посмотри пример.
Хотя там с массивами, это слишком сложно для такой задачи, можно обработку сделать в 2 строки с помощью Loop, Parse и InStr()

11

Re: AHK: Команда - Sort

DD пишет:

Но ведь удаление дубликатов строк командой Sort делается, с чего бы не в этой?

Не понял сперва вопроса. С помощью Sort без сортировки у меня не вышло.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder