Что нового

Как найти общее количествострок через @LF ?

agikon

Знающий
Сообщения
789
Репутация
17
подскажите пожалуйста как через @LF найти общее количество строк?
взял @LF потомучто это перенос строки

Код:
#include <GUIConstantsEx.au3>
#include <EditConstants.au3>

$hGUI = GUICreate('', 200, 180)
        GUICtrlCreateEdit('1' & @CRLF & '2' & @CRLF & '3' & @CRLF & '4' & @CRLF & '5' & @CRLF & '6' & @CRLF & _
        '7' & @CRLF & '8' & @CRLF & '9' & @CRLF & '10', 10, 10, 20, 150, $ES_WANTRETURN)
$nEdit1 = GUICtrlCreateEdit('даные1' & @CRLF & 'даные2' & @CRLF & 'даные3' & @CRLF & 'даные4' & @CRLF & 'даные5' & @CRLF & 'даные6' & @CRLF & _
        'даные7' & @CRLF & 'даные8' & @CRLF & 'даные9' & @CRLF & 'даные10', 30, 10, 70, 150, $ES_WANTRETURN)

$num1 = GUICtrlCreateEdit('4', 120, 10, 20, 20, $ES_WANTRETURN)
$num2 = GUICtrlCreateEdit('7', 170, 10, 20, 20, $ES_WANTRETURN)

GuiCtrlCreateLabel("c", 110, 15, 9, 15)
GuiCtrlCreateLabel("по", 155, 15, 13, 15)

$nButton1 = GUICtrlCreateButton('копировать', 110, 30, 80, 20)
GUICtrlSetState(-1, $GUI_FOCUS)

$nButton2 = GUICtrlCreateButton('всего строк', 110, 50, 80, 20)


GUISetState()

While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            Exit
        Case $nButton1
            Local $new = ''
            $list = StringSplit(GUICtrlRead($nEdit1),@LF)
            for $i = GUICtrlRead($num1) to GUICtrlRead($num2)
                $new &=$list[$i]
            next
            MsgBox(0,0,$new)

     Case $nButton2
            MsgBox(0,'всего строк',$vse )



    EndSwitch
WEnd
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
agikon [?]
подскажите пожалуйста как через @LF найти общее количество строк?
А зачем через @LF? Можно, например, так.
Код:
#include <GUIConstantsEx.au3>
#include <EditConstants.au3>

$hGUI = GUICreate('', 200, 180)
$nEdit = GUICtrlCreateEdit('даные1' & @CRLF & 'даные2' & @CRLF & 'даные3' & @CRLF & 'даные4' & @CRLF & 'даные5' & @CRLF & 'даные6' & @CRLF & _
		'даные7' & @CRLF & 'даные8' & @CRLF & 'даные9' & @CRLF & 'даные10', 30, 10, 70, 150, $ES_WANTRETURN)
$nButton = GUICtrlCreateButton('всего строк', 110, 50, 80, 20)
GUICtrlSetState(-1, $GUI_FOCUS)
GUISetState()

While 1
	Switch GUIGetMsg()
		Case $GUI_EVENT_CLOSE
			Exit
		Case $nButton
			$iCount = GUICtrlSendMsg($nEdit, $EM_GETLINECOUNT, 0, 0)
			MsgBox(64, 'Info', $iCount)

	EndSwitch
WEnd
 
Автор
A

agikon

Знающий
Сообщения
789
Репутация
17
madmasles
Спасибо так даже лучше!

но почему у меня не выхидит по @LF подсчитать?
а именно неудаётся занести @LF в переменную.

вот например по такой схеме не ищет @LF
Код:
$search = @LF
$text= StringSplit(StringStripCR(GUICtrlRead($nEdit1)), @LF)


If StringInStr($text,$search, 1) Then
If @error = 0 Then


так вот постоянно "0" возвращает.
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
agikon [?]
постоянно "0" возвращает
StringSplit() возвращает массив, а не строку. И вы пытаетесь найти в этом массиве (точнее, в указателе на массив) символ @LF.

А в первом примере подсчитать можно так
Код:
Case $nButton2
            $vse = StringSplit(GUICtrlRead($nEdit1),@LF)
            MsgBox(0,'всего строк',$vse[0])
 
Верх