Что нового

Сортировка строк в ТХТ файле

OXIGEN

Новичок
Сообщения
30
Репутация
0
Подскажите пожалуйста по теме сортировки в тхт файле. Есть файл TXT, который выводится в редактируемое окно GUI.
Как осуществить стандартную сортировку строк по алфавиту снизу-вверх и сверху-вниз? Как доделать этот скриптик -

PHP:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <EditConstants.au3>

$sText = FileRead(@ScriptDir & '\1.txt')
Local $iEdit, $msg, $sText, $sort1, $sort2
GUICreate("Окно редактирования", 190, 650, 100, 200) 
$iEdit = GUICtrlCreateEdit($sText & @CRLF, 10, 10, 180, 550, $ES_AUTOVSCROLL + $WS_VSCROLL + $ES_NOHIDESEL + $ES_WANTRETURN)
GUICtrlSendMsg(-1, $EM_LIMITTEXT, -1, 0) 

$sort1 = GUICtrlCreateButton("Сортировка снизу-вверх", 30, 570, 130, 25)
$sort2 = GUICtrlCreateButton("Сортировка сверху-вниз", 30, 600, 130, 25)

GUISetState()
Send("{END}")

Do
    $msg = GUIGetMsg()
    Switch $msg
      
        Case $sort1
            ; Что сюда ?
            
        Case $sort2
            ; И сюда?
  
   EndSwitch
Until $msg = $GUI_EVENT_CLOSE
GUIDelete()

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

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
Код:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <EditConstants.au3>
#include <Array.au3>

$sText = FileRead(@ScriptDir & '\1.txt')
Local $iEdit, $msg, $sText, $sort1, $sort2
GUICreate("Окно редактирования", 190, 650, 100, 200)
$iEdit = GUICtrlCreateEdit($sText & @CRLF, 10, 10, 180, 550, $ES_AUTOVSCROLL + $WS_VSCROLL + $ES_NOHIDESEL + $ES_WANTRETURN)
GUICtrlSendMsg(-1, $EM_LIMITTEXT, -1, 0)

$sort1 = GUICtrlCreateButton("Сортировка снизу-вверх", 30, 570, 130, 25)
$sort2 = GUICtrlCreateButton("Сортировка сверху-вниз", 30, 600, 130, 25)

GUISetState()
Send("{END}")

Do
    $msg = GUIGetMsg()
    Switch $msg

        Case $sort1
            ; Что сюда ?
            Sort(1)

        Case $sort2
            ; И сюда?
            Sort()

   EndSwitch
Until $msg = $GUI_EVENT_CLOSE
GUIDelete()

Func Sort($iDescending = 0)
  Local $aText = StringSplit(GUICtrlRead($iEdit), @CRLF, 3)
  _ArraySort($aText, $iDescending)
  Local $sText = _ArrayToString($aText, @CRLF)
  GUICtrlSetData($iEdit, $sText)
EndFunc
 
Верх