Потребовалось получить из массива строки из его элементов, разделенных запятой, длина каждой строки не больше $SMaxLength (учитывать текущую длину строки + разделитель + длину следующего элемента который будет дописан). Вывод в Edit.
Если сам элемент уже длиннее N (=20 возьмем), то выводится одной строкой.
Возникли сложности с проверкой длины каждой строки.
Сейчас пытаюсь сделать как-то так, что не совсем работает. Направьте в нужном направлении
Если сам элемент уже длиннее N (=20 возьмем), то выводится одной строкой.
Возникли сложности с проверкой длины каждой строки.
Сейчас пытаюсь сделать как-то так, что не совсем работает. Направьте в нужном направлении
Код:
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GuiEdit.au3>
$Form1 = GUICreate("Form1", 615, 438, 192, 124)
$Edit1 = GUICtrlCreateEdit("", 8, 8, 593, 417)
GUICtrlSetData(-1, "")
GUISetState(@SW_SHOW)
Dim $InputData[11] = ["55555", "88888888", "22", "333", "4444", "999999999", "7777777", "666666", "1", "одинадцать!", "четырнадцать!!"]
Global $SMaxLength = 20, $SLength, $SNextLength, $ArrayNextElementLength, $text = ""
For $i = 1 To Ubound($InputData) - 1
$ArrayNextElementLength = StringLen($InputData[$i])
$SLength = StringLen($text)
$SNextLength = $SLength + $ArrayNextElementLength + 1
If $SNextLength <= $SMaxLength Then
$text &= $InputData[$i] & ","
_GUICtrlEdit_AppendText($Edit1, $InputData[$i] & ",")
Else
_GUICtrlEdit_AppendText($Edit1, " Длина следующей строки была бы " & $SNextLength & ", поэтому пишем в новую." & @CRLF)
_GUICtrlEdit_AppendText($Edit1, $InputData[$i] & ",")
$text = ""
EndIf
Next
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd