#include <Constants.au3>
#include <Array.au3>
$hFile = FileOpen(@ScriptDir & '\text.txt', 0) ; файл
If $hFile = -1 Then
MsgBox(4096, "Ошибка", "Невозможно открыть файл.")
Exit
EndIf
Local $aTagNames = ["метка1", "метка2", "метка3"] ; отслеживаемые метки
Local $sLine
Local $aArrayResult[0], $aArr[0]
While 1
$sLine = FileReadLine($hFile)
If @error = -1 Then ExitLoop
If Not $sLine Then ContinueLoop
If $sLine = "метка1" Then
_GetNextParams($hFile, $aArr, $aTagNames)
_ArrayAdd($aArrayResult, $sLine)
_ArrayAdd($aArrayResult, $aArr)
EndIf
If $sLine = "метка2" Then
_GetNextParams($hFile, $aArr, $aTagNames)
_ArrayAdd($aArrayResult, $sLine)
_ArrayAdd($aArrayResult, $aArr)
EndIf
WEnd
_ArrayDisplay($aArrayResult)
FileClose($hFile)
; #ФУНКЦИЯ# =====================================================================================================================
; Описание ....: поиск следующих параметров
; Параметры ...: $hFile - дескриптор файла
; $aSearchParams - массив, который будет заполнен найденными строками
; $aTagNames - Массив со всеми метками
; ===============================================================================================================================
Func _GetNextParams($hFile, ByRef $aSearchParams, $aTagNames)
ReDim $aSearchParams[0]
Local $sLine, $iPos
While 1
$iPos = FileGetPos ($hFile)
$sLine = FileReadLine($hFile)
If @error = -1 Then ExitLoop
If Not $sLine Then ContinueLoop
For $sTN In $aTagNames
If $sTN = StringStripWS($sLine, 3) Then
ExitLoop (2)
EndIf
Next
_ArrayAdd($aSearchParams, $sLine)
WEnd
FileSetPos($hFile, $iPos, $FILE_BEGIN)
Return $aSearchParams
EndFunc