Что нового

[Данные, строки] Сортировка чисел по условию через регулярные выражения

ViktorSPB

Новичок
Сообщения
109
Репутация
0
Добрый день! К сожалению, не нашел общего FAQа по рег. выражениям, туда бы мой вопрос отнести..
А заключается он в следующем.
Есть строка
120000,34,S@CRLF
120010,3,B@CRLF
120015,55,S@CRLF
120013,5,S@CRLF
и тд.
С помощью рег.выражений можно вытащить строки с символов S или B например.
А существуют ли шаблоны, которые вытащат строки по условию, например, число в каких-то пределах. В данном случае задать шаблон - первое число в пределах от 120010 до 120015.
Бывают такие?

Судя по всему, глупый я вопрос задал.. Не судите строго, я совсем еще мало знаю об Аутоит да и вообще тот еще "программер" :stars:
 

VladUs

Скриптер
Сообщения
621
Репутация
182
Код:
$test = "120015,3,S@CRLF"
$pattern = "12001[0-5]+,\d+,(S|B).*"

$aRet = StringRegExp ( $test, $pattern ,2)

If $aRet <> 1 Then
    ConsoleWrite($aRet[0] & @CRLF)
Else
    ConsoleWrite("Совпадений не найдено" & @CRLF) 
EndIf
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,673
Репутация
2,485
ViktorSPB [?]
не нашел общего FAQа по рег. выражениям
:shok:
А это что? Это лучше чем FAQ.

существуют ли шаблоны, которые вытащат строки по условию, например, число в каких-то пределах. В данном случае задать шаблон - первое число в пределах от 120010 до 120015.
Код:
$sPattern = '12001[0-5]'
 

AZJIO

Меценат
Меценат
Сообщения
2,892
Репутация
1,196
VladUs
проверь
Код:
$test = "15,3,S@CRLF"
$pattern = "[120010-120015]+,\d+,(S|B).*"

$aRet = StringRegExp ( $test, $pattern ,2)

If $aRet <> 1 Then
	MsgBox(0, 'Сообщение', $aRet[0])
Else
	MsgBox(0, 'Сообщение', 'не найдено')
EndIf
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,673
Репутация
2,485
VladUs
Насколько я знаю, в группе нельзя задать диапазон чисел больше чем 0-9, в этом случае будет совпадать любое из чисел в группе и от 0 до 1 (...0-1...).
Поэтому остальные числа нужно вытащить за пределы группы.
 

AZJIO

Меценат
Меценат
Сообщения
2,892
Репутация
1,196
VladUs
Этот диапазон [120010-120015]+ читается так: повтор цифр один и более раз из набора 1,2,0,0, диапазон 0-1, и цифры 2,0,0,1,5 итого удалив повторы набор означает диапазон 0-2 и 5. То есть любое число состоящее из цифр 0,1,2,5. То что в квадратных скобках каждый символ сам по себе, кроме диапазонов и метасимволов.
 
Автор
V

ViktorSPB

Новичок
Сообщения
109
Репутация
0
Creator, да, Вы правы насчет FAQ! Я раньше по урокам и начинал знакомство с рег. выражениями. До них в моем понимании регулярные выражения были.. э... мат)
Помню, что не осилил тогда и видел обработки не чисел, а символов. Если обрабатывались числа, то по сути это были не числа, а символы чисел, и такое понятие как больше или меньше к ним не относилось. Например шаблон [0-9] был поиском цифр. Но не чисел.
А тут задача стоит обрабатывать числа. И пример может быть шире, например есть 10000 строк. И я хочу с расчитанным шагом собрать данные.
То есть если шаг 100, и начальное число 12000, то я хочу вытащить значения от 12000 до 12100. А еще может быть от 12010 до 12147. а потом от 12148 до 12284.. Тут просто цифрами не обойтись, под каждое входное значение с точки зрения цифр шаблон разный.
Благодарю всех за то, что отозвались, сейчас буду пробовать ваши варианты.
 

AZJIO

Меценат
Меценат
Сообщения
2,892
Репутация
1,196
ViktorSPB
Используй RegExp. Там есть библиотека примеров Library_Example.ini, если её открыть в RegExp, то там готовые примеры для демонстрации каждого метасимвола регулярных выражений. Кнопка "Т" позволяет проверить работу диапазонов квадратных скобок или метасимволов, показывая какие символы из диапазона будут захвачены. И добавить вызов RegExp в SciTE или Notepad++, у меня по клавише Alt+R вызывается программа прямо в редакторе. По F1 вызывается справка по регулярным выражениям. Так что все удобства.

По поводу чисел можно делать массив из групп и при шаге объединения данных проверять больше или меньше значение группы в сравнении с другим числом.
 
Автор
V

ViktorSPB

Новичок
Сообщения
109
Репутация
0
AZJIO, да, я закачивал её себе и пользовался, но тут вижу версия новее. Спасибо. Я проверял через эту утилиту шаблоны, но для меня оказалось более верным решением экспериментировать в отдельном скрипте, не все мне понятно было в утилите и не всегда результат с утилиты соответствовал тому, что получалось в скрипте. У меня 9 шаблонов. Может, еще есть? Я просто пользоваться наверное этой утилитой не умею. И Help вызвать не догадывался :-[
Спасибо, буду разбираться, надеюсь, получится. Судя по всему, я смог донести задачу, и если Вы мне рекомендуете дальше решать её рег.выражениями, значит это реально и можно с числами работать. Пока я сделал переборами.. но это, конечно не эффективно. Но пока для меня единственный понятный способ. Даже сейчас.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,673
Репутация
2,485
Или написать свою функцию для парсинга диапазонов в шаблоне, как то так:

Код:
$sTest = "2010"
$sPattern = "^[90-12147]$"

$aRet = _StringRegExp($sTest, $sPattern, 3)

If IsArray($aRet) Then
    ConsoleWrite($aRet[0] & @CRLF)
Else
    ConsoleWrite("Совпадений не найдено" & @CRLF) 
EndIf

Func _StringRegExp($sString, $sPattern, $iFlag = 1)
	Local $aRanges = StringRegExp($sPattern, '\[(\d+-\d+)\]', 3)
	
	If UBound($aRanges) < 1 Then
		Return StringRegExp($sString, $sPattern, $iFlag)
	EndIf
	
	For $i = 0 To UBound($aRanges)-1
		$aSplit = StringSplit($aRanges[$i], '-')
		
		For $iNum = $aSplit[1] To $aSplit[$aSplit[0]]
			If StringRegExp($sString, StringReplace($sPattern, '[' & $aRanges[$i] & ']', $iNum)) Then
				$sPattern = StringReplace($sPattern, '[' & $aRanges[$i] & ']', $iNum)
				Return StringRegExp($sString, $sPattern, $iFlag)
			EndIf
		Next
	Next
	
	Return 0
EndFunc
 
Автор
V

ViktorSPB

Новичок
Сообщения
109
Репутация
0
CreatoR, вот.. Теперь я вижу что в правильном направлении думал. Все-таки рег. выражения это способ обработки строк, символов, не, в данном случае чисел.
Функцию написать, которая с точки зрения цифр создаст паттерн для анализа - больше или меньше одно число другого. Это ясно.
Как Вы думаете, а не быстрее ли Аутоиту будет перебрать построчно данные например, ну как я сейчас делаю, чем каждый раз формировать паттерн.. (Я вообще не уверен, что смогу его сделать) Пока рег. выражения для меня были отличным инструментом повышения производительности в обработке. Потому и решил попробовать применить для этой, по сути, не относящейся к прямому назначению задаче. Не знаимаюсь ли я оперцией на глазу через..
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,673
Репутация
2,485
ViktorSPB [?]
не быстрее ли Аутоиту будет перебрать построчно данные например
Ну так перебрать это одно, а нужно же в этих строках искать диапазон, или что имеется в виду?
 

AZJIO

Меценат
Меценат
Сообщения
2,892
Репутация
1,196
ViktorSPB
Как на счёт того примера что я предлагал в предыдущем вашем вопросе? Я так понял это продолжение... Там удобство в том что группы перед присоединении информации можно проверить на соответствие указанному диапазону. Если памяти не хватило, то можно через каждые 1000 строк сбрасывать информацию в файл и очищать переменную.

CreatoR
Код:
$sTest = "2010"
$sPattern = "[90-12147]"

уже неправильно выдаёт. Тот же вариант с IP, при точном определении нужно сделать слишком сложное регулярное выражение.
 
Автор
V

ViktorSPB

Новичок
Сообщения
109
Репутация
0
Объясню.
Есть данные такого например вида, читаю их в строку из файла построчно, добавив разделитель(хотя по хорошему все надо делать через рег выражения)..
06/04/2012,10:00:13,S,121215,1
06/04/2012,10:00:14,S,121005,1
06/04/2012,10:00:14,S,120400,1
06/04/2012,10:00:14,S,120005,1
06/04/2012,10:00:14,S,119900,1
06/04/2012,10:00:14,S,119840,2
06/04/2012,10:00:14,S,119620,8
06/04/2012,10:00:14,S,119100,1
06/04/2012,10:00:14,S,119005,1
06/04/2012,10:00:14,S,119000,1
06/04/2012,10:00:14,S,119000,1
06/04/2012,10:00:14,S,118900,1
06/04/2012,10:00:14,S,118620,3
06/04/2012,10:00:18,B,119725,1
06/04/2012,10:00:22,B,119650,1
06/04/2012,10:00:23,S,119685,1
06/04/2012,10:00:24,S,119575,1
06/04/2012,10:00:24,S,119510,1
06/04/2012,10:00:24,S,119000,2
06/04/2012,10:00:25,B,119000,4
06/04/2012,10:00:25,B,119000,4
06/04/2012,10:00:25,B,119000,4
06/04/2012,10:00:25,B,119000,6
06/04/2012,10:00:25,S,119670,3
06/04/2012,10:00:25,B,119900,2
06/04/2012,10:00:26,B,119000,2
06/04/2012,10:00:26,B,119800,1
06/04/2012,10:00:26,B,119900,2
06/04/2012,10:00:27,S,120005,1
06/04/2012,10:00:27,S,120005,6
06/04/2012,10:00:27,S,119575,1
06/04/2012,10:00:28,B,119000,4
06/04/2012,10:00:30,B,118950,5
06/04/2012,10:00:30,B,118950,10
06/04/2012,10:00:30,B,118950,7
06/04/2012,10:00:31,S,119430,1
06/04/2012,10:00:32,S,119265,1
06/04/2012,10:00:35,S,118640,1
06/04/2012,10:00:35,B,119200,1
06/04/2012,10:00:37,B,119225,1
06/04/2012,10:00:39,B,119280,1
06/04/2012,10:00:41,S,118640,1
06/04/2012,10:00:46,S,119325,1
06/04/2012,10:00:47,S,119175,1
06/04/2012,10:00:48,B,119320,1
06/04/2012,10:00:57,S,119225,1
06/04/2012,10:01:01,S,119135,1
06/04/2012,10:01:04,S,119115,1
06/04/2012,10:01:04,S,119115,1
06/04/2012,10:01:04,S,119115,1
06/04/2012,10:01:07,B,119260,1
06/04/2012,10:01:07,S,119235,1
06/04/2012,10:01:07,B,119240,1
06/04/2012,10:01:07,B,119240,1
06/04/2012,10:01:09,S,119265,1
06/04/2012,10:01:15,S,119185,3
06/04/2012,10:01:16,B,119330,3
06/04/2012,10:01:16,S,119225,3
06/04/2012,10:01:16,B,119330,3
06/04/2012,10:01:17,S,119230,1
06/04/2012,10:01:19,B,119360,1
06/04/2012,10:01:19,S,119340,2
06/04/2012,10:01:20,B,119395,1
06/04/2012,10:01:21,S,119410,1
06/04/2012,10:01:21,B,119415,1
06/04/2012,10:01:21,B,119415,1
06/04/2012,10:01:23,S,119325,1
06/04/2012,10:01:23,S,119325,1
06/04/2012,10:01:23,S,119325,1
06/04/2012,10:01:23,S,119295,1
06/04/2012,10:01:23,B,119405,1
06/04/2012,10:01:26,B,119400,1
06/04/2012,10:01:26,B,119405,1
06/04/2012,10:01:28,S,119385,1
06/04/2012,10:01:28,B,119400,1
06/04/2012,10:01:28,B,119400,1
06/04/2012,10:01:29,B,119405,1
06/04/2012,10:01:29,B,119415,1
06/04/2012,10:01:29,B,119415,1
06/04/2012,10:01:30,B,119415,1
06/04/2012,10:01:30,B,119465,1
06/04/2012,10:01:31,B,119465,1
06/04/2012,10:01:33,S,119445,2
06/04/2012,10:01:36,S,119445,1
06/04/2012,10:01:36,S,119445,1
06/04/2012,10:01:38,S,119400,1
06/04/2012,10:01:38,S,119400,1
06/04/2012,10:01:40,B,119465,1
06/04/2012,10:01:40,B,119465,1
06/04/2012,10:01:40,B,119465,1
06/04/2012,10:01:41,S,119465,1
06/04/2012,10:01:41,S,119465,3
06/04/2012,10:01:45,S,119400,4
06/04/2012,10:02:03,B,119305,1
06/04/2012,10:02:03,B,119305,1
06/04/2012,10:02:03,B,119305,1
06/04/2012,10:02:10,B,119210,1
06/04/2012,10:02:10,B,119230,1
06/04/2012,10:02:10,B,119260,1
06/04/2012,10:02:10,B,119270,1
06/04/2012,10:02:14,S,119200,10
06/04/2012,10:02:23,B,119225,1
06/04/2012,10:02:23,B,119225,1
06/04/2012,10:02:23,B,119225,1
06/04/2012,10:02:23,S,119225,5
06/04/2012,10:02:26,B,119245,1
06/04/2012,10:02:26,B,119245,1
06/04/2012,10:02:26,B,119245,1
06/04/2012,10:02:32,S,119225,1
06/04/2012,10:02:54,B,119305,1
06/04/2012,10:03:02,S,119260,7
06/04/2012,10:03:03,B,119300,1
06/04/2012,10:03:05,B,119280,1
06/04/2012,10:03:07,B,119280,1
06/04/2012,10:03:07,B,119300,1
06/04/2012,10:03:07,B,119300,1
06/04/2012,10:03:07,S,119300,2
06/04/2012,10:03:21,B,119305,1
06/04/2012,10:03:21,B,119305,1
06/04/2012,10:03:21,B,119305,1
06/04/2012,10:03:21,B,119305,1
06/04/2012,10:03:21,B,119305,1
06/04/2012,10:03:21,B,119305,1
06/04/2012,10:03:21,B,119305,1
06/04/2012,10:03:22,B,119305,1
06/04/2012,10:03:22,B,119305,1
06/04/2012,10:03:22,B,119305,1
06/04/2012,10:03:22,B,119305,1
06/04/2012,10:03:22,B,119305,1
06/04/2012,10:03:22,B,119305,1
06/04/2012,10:03:25,B,119305,1
06/04/2012,10:03:25,B,119305,1
06/04/2012,10:03:25,B,119305,1
06/04/2012,10:03:29,B,119305,1
06/04/2012,10:03:29,B,119305,1
06/04/2012,10:03:29,B,119305,1
06/04/2012,10:03:29,B,119305,1
06/04/2012,10:03:29,B,119305,1
06/04/2012,10:03:43,B,119400,1
06/04/2012,10:03:53,S,119365,5
06/04/2012,10:03:53,S,119350,2
06/04/2012,10:03:57,B,119400,3
06/04/2012,10:03:57,B,119400,4
06/04/2012,10:03:57,B,119400,1
06/04/2012,10:03:57,B,119400,1
06/04/2012,10:03:57,B,119400,1
06/04/2012,10:03:57,B,119400,1
06/04/2012,10:03:57,B,119400,1
06/04/2012,10:03:57,B,119400,1
06/04/2012,10:03:57,B,119400,1
06/04/2012,10:03:57,B,119400,1
06/04/2012,10:03:57,B,119400,1
06/04/2012,10:03:57,B,119400,1
06/04/2012,10:03:57,S,119370,1
06/04/2012,10:03:57,B,119405,1
06/04/2012,10:03:58,B,119425,1
06/04/2012,10:03:59,S,119400,1
06/04/2012,10:03:59,S,119390,1
06/04/2012,10:03:59,S,119390,1
06/04/2012,10:03:59,B,119395,1
06/04/2012,10:04:03,B,119420,1
06/04/2012,10:04:03,B,119420,1
06/04/2012,10:04:03,B,119485,1
06/04/2012,10:04:06,S,119420,1
06/04/2012,10:04:06,S,119415,1
06/04/2012,10:04:09,B,119490,1
06/04/2012,10:04:09,B,119490,1
06/04/2012,10:04:09,B,119490,1
06/04/2012,10:04:09,B,119490,1
06/04/2012,10:04:13,S,119490,1
06/04/2012,10:04:27,B,119555,3
06/04/2012,10:04:27,B,119555,3
06/04/2012,10:04:39,S,119540,1
06/04/2012,10:04:40,S,119540,1
06/04/2012,10:04:47,S,119505,1
06/04/2012,10:04:48,S,119505,1
06/04/2012,10:04:48,S,119490,3
06/04/2012,10:04:49,S,119505,1
06/04/2012,10:04:49,S,119470,1
06/04/2012,10:04:53,B,119510,1
06/04/2012,10:04:59,S,119525,1
06/04/2012,10:05:06,S,119505,1
06/04/2012,10:05:06,S,119505,1
06/04/2012,10:05:09,B,119520,1
06/04/2012,10:05:13,S,119505,1
06/04/2012,10:05:15,B,119525,1
06/04/2012,10:05:16,B,119525,1
06/04/2012,10:05:17,B,119525,1
06/04/2012,10:05:17,B,119530,1
06/04/2012,10:05:17,B,119530,1
06/04/2012,10:05:29,B,119530,1
06/04/2012,10:05:29,B,119530,1
06/04/2012,10:05:29,B,119530,1
06/04/2012,10:05:29,B,119530,1
06/04/2012,10:05:29,B,119530,1
06/04/2012,10:05:29,B,119530,1
06/04/2012,10:05:29,B,119530,1
06/04/2012,10:05:29,B,119530,1
06/04/2012,10:05:30,S,119545,1
06/04/2012,10:05:31,S,119510,1
06/04/2012,10:05:31,S,119485,2
06/04/2012,10:05:31,S,119475,1
06/04/2012,10:05:33,B,119555,1
06/04/2012,10:05:33,B,119555,2
06/04/2012,10:05:33,B,119555,3
06/04/2012,10:05:34,S,119535,2
06/04/2012,10:05:34,B,119555,1
06/04/2012,10:05:34,B,119555,3
06/04/2012,10:05:34,B,119555,3
06/04/2012,10:05:35,B,119555,1
06/04/2012,10:05:35,B,119555,1
06/04/2012,10:05:36,B,119555,1
06/04/2012,10:05:37,B,119555,1
06/04/2012,10:05:37,B,119555,1
06/04/2012,10:05:37,B,119555,1
06/04/2012,10:05:37,B,119555,1
06/04/2012,10:05:38,B,119555,1
06/04/2012,10:05:38,B,119555,1
06/04/2012,10:05:39,B,119555,1
06/04/2012,10:05:39,B,119555,1
06/04/2012,10:05:39,B,119555,1
Мне надо предварительно расчитав диапазон цен в скрипте (цена это то, что после символа B или S) вынуть из строки все подстроки, в которых цена попала в этот диапазон. Если диапазон 150 и начальная цена 119600, то, например, мне нужны все подстроки, в которых цены находятся в интервале от 119600 до 119750.
Надеюсь, теперь я яснее выразился.. Понимаю, что вникнуть не просто, если не в теме, спасибо, что стараетесь помочь.

AZJIO, трудно мне понять Вас, извините.. Что касается метасимволов и прочих проверок в RegExp, я не стал дальше расспрашивать, потому что пока матчасть плохо знаю и мне даже не совсем понятно о чем Вы говорили.. Извините, очень сожалею, что такой я неблагодарный вопрошатель получился. Стараюсь разобраться, не совсем уж лентяй, но не все получается :-[
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,673
Репутация
2,485
AZJIO [?]
уже неправильно выдаёт
Поправил.

ViktorSPB
Для данного случая, проще сделать так:

Код:
$vTest = _
	'120000,34,S@CRLF' & @CRLF & _
	'120010,3,B@CRLF' & @CRLF & _
	'120015,55,S@CRLF' & @CRLF & _
	'120023,55,S@CRLF' & @CRLF & _
	'120145,5,S@CRLF' & @CRLF

$aLines = StringSplit($vTest, @CRLF, 1)
$sData = ''

$iRange1 = 120010
$iRange2 = 121000

For $i = 1 To $aLines[0]
	For $x = $iRange1 To $iRange2
		If StringRegExp($aLines[$i], '(?i)^' & $x & ',\d+,S@CRLF') Then
			$sData &= $aLines[$i] & @CRLF
		EndIf
	Next
Next

ConsoleWrite($sData)
 

AZJIO

Меценат
Меценат
Сообщения
2,892
Репутация
1,196
ViktorSPB
Вот к примеру у меня 3 числа захватил из вышеуказанного списка
Код:
$v = FileRead(@ScriptDir&'\file.txt')
$v = StringRegExp($v, '(?m)(\d\d)/(\d\d)/(\d{4}),(\d\d):(\d\d):(\d\d,)S,(\d{6})(,\d)', 3)
$out = ''
For $i = 0 To UBound($v)-1 Step 8
	; MsgBox(0, 'Сообщение', $v[$i+6])
	If $v[$i+6]<119600 Or $v[$i+6]>119750 Then ContinueLoop
    $out &= $v[$i+2]&$v[$i]&$v[$i+1]&','&$v[$i+3]&$v[$i+4]&$v[$i+5]&$v[$i+6]&$v[$i+7]&@CRLF
Next
MsgBox(0, 'Сообщение', $out)


в утилите и не всегда результат с утилиты соответствовал тому, что получалось в скрипте.
Отписывайте на странице утилиты. У меня всё работает точно.
 
Автор
V

ViktorSPB

Новичок
Сообщения
109
Репутация
0
AZJIO, только сейчас добрался, проверил Ваш вариант.
Суть ясна, формируется массив из ВСЕХ данных, потом этот массив обрабатывается.
Тут все понятно, вопросы могут возникнуть когда строк 1.5 млн. Хватило бы памяти. Или 15 млн.. Ну и способ ничем не отличается от обычного перебора.
Я же ветку эту завел, чтобы найти способ рег. выражением сразу отпарсить то что мне нужно. Теперь думаю что да, как и написал Creator, нужно, получив два пограничных числа, создать правило анализа, то есть сформировать патерн, согласно которому и будут определяться входящие в диапазон значения.
И задача это не простая для меня.
Например:
12400 и 12555.
это значит,
1) правило должно искать совпадения первых двух цифр полное, ибо они равны.
2) третья цифра может быть 4 и следующей до 5 включительно, то есть 2 цифры - 4 и 5.
3) четвертая цифра может быть при третьей < 5 но >= 4 любой десятичной, но при третьей = 5 только имеющаяся 5 и все меньшие 5
4)пятая. при четвертой = наибольшему (то есть 5 в данном случае) все <= 5 (последней цифре). при четвертой <5 и >= 4 - любые.
И все эти четыре пункта через AND.
То есть идет эта обработка, в результате которой появляется патерн. И потом по нему далее обрабатывается все первоначальная строка.
Тут у меня вопрос, реально ли такой патерн создать? Вообще, в принципе, одной строкой или приемлемо несколькими?
Мне не сложные патерны трудно написать, потому для меня важно знать мнение опытных людей. Реально ли такое сделать?
Если дочитали до конца и постарались вникнуть, большое спасибо всем за участие.
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
ViktorSPB
А если так подойти к решению данной задачи?
Код:
Dim $hFile = FileOpen("test.txt", 0)

Dim $sCoinci = ''
Dim $iStart = 119600
Dim $iRange = 150
Dim $sChar = 'S'
;~ Dim $sChar = 'B'

If $hFile = -1 Then
    Exit
EndIf

While 1
    Local $sLine = FileReadLine($hFile)
    If @error = -1 Then ExitLoop

	If StringInStr($sLine, $sChar) <> 0  Then
		$sCoinci = StringRegExpReplace($sLine, '.*' & $sChar & ',(\d+)', '$1')
		If $sCoinci >= $iStart And $sCoinci <= ($iStart+$iRange) Then
			ConsoleWrite($sLine & @CR)
		EndIf
	EndIf
WEnd

FileClose($hFile)
 
Верх