Что нового

[Данные, строки] Сравнение строк в столбцах в текстовом файле с разделителем - табуляция

Автор
D

Dk

Новичок
Сообщения
358
Репутация
2
Re:

Alofa сказал(а):
Dk протестируйте ка на скорость пока это:
Код:
#include <Array.au3>
#include <WindowsConstants.au3>
#include <ListViewConstants.au3>
#include <GUIConstantsEx.au3>

Opt('GUIOnEventMode', 1)
Opt('TrayOnEventMode', 1)
Opt('TrayMenuMode', 3)

Local $vVar, $asText1, $asText2, $sFile2GTime, $iOffset, $sFile1 = @ScriptDir & '\1.txt', $sFile2 = @ScriptDir & '\2.txt'
Local $hGUI, $ListView, $hButt1, $hButt2, $hGUIState, $hExit

_OpenFile2()

$hGUI = GUICreate('Список:', 600, 175, -1, -1)
GUISetBkColor(0xB9D1EA)
$ListView = GUICtrlCreateListView('ASIN-10   |Price[New]|Price[Old]|SalesRank|Name|Date & Time', 5, 5, 590, 125, -1, BitOR($LVS_EX_FULLROWSELECT,$LVS_EX_GRIDLINES, $LVS_EX_HEADERDRAGDROP))
$hButt1 = GUICtrlCreateButton('Очистить список', 100, 140, 150, 25)
$hButt2 = GUICtrlCreateButton('Выйти из программы', 350, 140, 150, 25)
$hGUIState = TrayCreateItem('Отобразить/Скрыть Окно')
TrayCreateItem('')
$hExit = TrayCreateItem('Выход')
GUISetOnEvent($GUI_EVENT_CLOSE, '_CLOSEClicked')
GUICtrlSetOnEvent($hButt1, '_ListViewClear')
GUICtrlSetOnEvent($hButt2, '_Exit')
TrayItemSetOnEvent($hGUIState, '_CLOSEClicked')
TrayItemSetOnEvent($hExit, '_Exit')
GUISetState(@SW_HIDE)

While 1
	If FileGetTime($sFile2, 0, 1) <> $sFile2GTime Then _OpenFile2()
	$asText1 = _FileRead($sFile1)
	If @error Then Exit MsgBox(16, 'Ошибка!', 'Неудалось открыть файл "1.txt".')
	$iExtended = @extended
	$asText1 = StringRegExp($asText1, '\n"(\w{10,12})"\t(?:[^\t]+\t){2}([\d\,N/A]+)\t(?:[^\t]+\t){5}([\d\,N/A]+)', 3, $iOffset)
	
	For $i = 0 To UBound($asText1) - 3 Step 3
		$iIndex = _ArraySearch($asText2, $asText1[$i], 0, 0, 0, 1)
		If @error Then ContinueLoop
		$asText2Split = StringSplit($asText2[$iIndex], '|')
		If @error Then ExitLoop
		$vVar = ($asText1[$i + 2] = 'N/A') ? -1 : $asText1[$i + 2]
		If $asText2Split[2] <> 'N/A' Or $asText1[$i + 1] <> 'N/A' Then
			If StringReplace($asText2Split[2], ',', '.') / StringReplace($asText1[$i + 1], ',', '.') >= 2 And StringReplace($vVar, ',', '.') < 300000 Then
				GUICtrlCreateListViewItem($asText1[$i] & '|' & $asText1[$i + 1] & '|' & $asText2Split[2] & '|' & _
						$asText1[$i + 2] & '|' & $asText2Split[3] & '|' & @MDAY & '/' & @MON & '/' & @YEAR & ' ' & @HOUR & ':' & @MIN, $ListView)
				GUISetState(@SW_SHOWNORMAL)
				SoundPlay(@WindowsDir & '\media\Windows Ringin.wav')
			EndIf
		EndIf
		_ArrayDelete($asText2, $iIndex)
	Next
	
	$iOffset = ($iExtended >= 3) ? $iExtended - 2 : 1
	Sleep(250)
WEnd

;======================================================================================================================
Func _OpenFile2()
	Dim $asText2
	$iOffset = 1
	$asText2 = _FileRead($sFile2)
	If @error Then Exit MsgBox(16, 'Ошибка!', 'Неудалось открыть файл "2.txt".')
	FileWrite($sFile2, @CRLF & '>>>> Data is read. Time: ' & @MDAY & '/' & @MON & '/' & @YEAR & ' ' & @HOUR & ':' & @MIN & ' <<<<')
	$sFile2GTime = FileGetTime($sFile2, 0, 1)
	$asText2 = StringRegExpReplace($asText2, '\n"(\w{10,12})"\t"([^\t]+)"\t[^\t]+\t([\d\,N/A]+).+', '${1}|${3}|${2}|')
	$asText2 = StringRegExp($asText2, '\v(.+)\|', 3)
	If @error Then Exit MsgBox(16, 'Ошибка!', 'Не удалось корректно прочитать "2.txt".')
EndFunc   ;==>_OpenFile2

Func _FileRead($sFile)
	For $i = 0 To 20
		$sChars = FileRead($sFile)
		If $sChars Then Return $sChars
		Sleep(90)
	Next
	Return SetError(1)
EndFunc   ;==>_FileRead

Func _CLOSEClicked()
	GUISetState(BitAND(WinGetState($hGUI), 2) ? @SW_HIDE : @SW_SHOWNORMAL)
EndFunc   ;==>_CLOSEClicked

Func _ListViewClear()
	GUICtrlSendMsg($ListView, $LVM_DELETEALLITEMS, 0, 0)
EndFunc   ;==>_ListViewClear

Func _Exit()
	Exit
EndFunc   ;==>_Exit
Не вижу смысла заниматься остальными доработками, пока не устраним главный затык.

Хорошо. Я включил на тест. Сразу сказать не получиться, нужно подождать, что-бы больше примеров набралось - совпадений (особенно в конце файла). Оставлю на ночь и завтра обязательно напишу.


Добавлено:
Сообщение автоматически объединено:

Alofa сказал(а):
Dk протестируйте ка на скорость пока это:
Код:
#include <Array.au3>
#include <WindowsConstants.au3>
#include <ListViewConstants.au3>
#include <GUIConstantsEx.au3>

Opt('GUIOnEventMode', 1)
Opt('TrayOnEventMode', 1)
Opt('TrayMenuMode', 3)

Local $vVar, $asText1, $asText2, $sFile2GTime, $iOffset, $sFile1 = @ScriptDir & '\1.txt', $sFile2 = @ScriptDir & '\2.txt'
Local $hGUI, $ListView, $hButt1, $hButt2, $hGUIState, $hExit

_OpenFile2()

$hGUI = GUICreate('Список:', 600, 175, -1, -1)
GUISetBkColor(0xB9D1EA)
$ListView = GUICtrlCreateListView('ASIN-10   |Price[New]|Price[Old]|SalesRank|Name|Date & Time', 5, 5, 590, 125, -1, BitOR($LVS_EX_FULLROWSELECT,$LVS_EX_GRIDLINES, $LVS_EX_HEADERDRAGDROP))
$hButt1 = GUICtrlCreateButton('Очистить список', 100, 140, 150, 25)
$hButt2 = GUICtrlCreateButton('Выйти из программы', 350, 140, 150, 25)
$hGUIState = TrayCreateItem('Отобразить/Скрыть Окно')
TrayCreateItem('')
$hExit = TrayCreateItem('Выход')
GUISetOnEvent($GUI_EVENT_CLOSE, '_CLOSEClicked')
GUICtrlSetOnEvent($hButt1, '_ListViewClear')
GUICtrlSetOnEvent($hButt2, '_Exit')
TrayItemSetOnEvent($hGUIState, '_CLOSEClicked')
TrayItemSetOnEvent($hExit, '_Exit')
GUISetState(@SW_HIDE)

While 1
	If FileGetTime($sFile2, 0, 1) <> $sFile2GTime Then _OpenFile2()
	$asText1 = _FileRead($sFile1)
	If @error Then Exit MsgBox(16, 'Ошибка!', 'Неудалось открыть файл "1.txt".')
	$iExtended = @extended
	$asText1 = StringRegExp($asText1, '\n"(\w{10,12})"\t(?:[^\t]+\t){2}([\d\,N/A]+)\t(?:[^\t]+\t){5}([\d\,N/A]+)', 3, $iOffset)
	
	For $i = 0 To UBound($asText1) - 3 Step 3
		$iIndex = _ArraySearch($asText2, $asText1[$i], 0, 0, 0, 1)
		If @error Then ContinueLoop
		$asText2Split = StringSplit($asText2[$iIndex], '|')
		If @error Then ExitLoop
		$vVar = ($asText1[$i + 2] = 'N/A') ? -1 : $asText1[$i + 2]
		If $asText2Split[2] <> 'N/A' Or $asText1[$i + 1] <> 'N/A' Then
			If StringReplace($asText2Split[2], ',', '.') / StringReplace($asText1[$i + 1], ',', '.') >= 2 And StringReplace($vVar, ',', '.') < 300000 Then
				GUICtrlCreateListViewItem($asText1[$i] & '|' & $asText1[$i + 1] & '|' & $asText2Split[2] & '|' & _
						$asText1[$i + 2] & '|' & $asText2Split[3] & '|' & @MDAY & '/' & @MON & '/' & @YEAR & ' ' & @HOUR & ':' & @MIN, $ListView)
				GUISetState(@SW_SHOWNORMAL)
				SoundPlay(@WindowsDir & '\media\Windows Ringin.wav')
			EndIf
		EndIf
		_ArrayDelete($asText2, $iIndex)
	Next
	
	$iOffset = ($iExtended >= 3) ? $iExtended - 2 : 1
	Sleep(250)
WEnd

;======================================================================================================================
Func _OpenFile2()
	Dim $asText2
	$iOffset = 1
	$asText2 = _FileRead($sFile2)
	If @error Then Exit MsgBox(16, 'Ошибка!', 'Неудалось открыть файл "2.txt".')
	FileWrite($sFile2, @CRLF & '>>>> Data is read. Time: ' & @MDAY & '/' & @MON & '/' & @YEAR & ' ' & @HOUR & ':' & @MIN & ' <<<<')
	$sFile2GTime = FileGetTime($sFile2, 0, 1)
	$asText2 = StringRegExpReplace($asText2, '\n"(\w{10,12})"\t"([^\t]+)"\t[^\t]+\t([\d\,N/A]+).+', '${1}|${3}|${2}|')
	$asText2 = StringRegExp($asText2, '\v(.+)\|', 3)
	If @error Then Exit MsgBox(16, 'Ошибка!', 'Не удалось корректно прочитать "2.txt".')
EndFunc   ;==>_OpenFile2

Func _FileRead($sFile)
	For $i = 0 To 20
		$sChars = FileRead($sFile)
		If $sChars Then Return $sChars
		Sleep(90)
	Next
	Return SetError(1)
EndFunc   ;==>_FileRead

Func _CLOSEClicked()
	GUISetState(BitAND(WinGetState($hGUI), 2) ? @SW_HIDE : @SW_SHOWNORMAL)
EndFunc   ;==>_CLOSEClicked

Func _ListViewClear()
	GUICtrlSendMsg($ListView, $LVM_DELETEALLITEMS, 0, 0)
EndFunc   ;==>_ListViewClear

Func _Exit()
	Exit
EndFunc   ;==>_Exit
Не вижу смысла заниматься остальными доработками, пока не устраним главный затык.


Здравствуйте,
причина обнауржена. Скрипт просто не успевает, файл обновляется быстрее чем читается скриптом.

Я долго наблюдал и заметил
1) Что некоторые снижения цен он просто не показывает. Потом увидел, что почти все изменения цен находятся либо чуть ниже середины файла, дальше он просто не успевает - файл обновляется.
2) Чужая программа уже выслала мне все совпадения, а скрипт ещё только через 10 минут написал "файл прочитан"

3) В файле 11500 строк. Я добавил ToolTip на строки, что бы быть полностью уверенным и увидел, что скрипт доходит примерно до 7 тыс строк, а потом файл (1.тхт) обновляется. Сравнил скорость записи чужой программы, примерно 40 строк в секунду, скрипт около 9-11.

На сколько я знаю параллельные процессы в Autoit не возможны. Моё предложение по оптимизации топорное - 3 скрипта, один скрипт читает каждую вторую строку, другой каждую 3 строки итд. Так должен скрипт успевать вроде. Если есть более элегантное решение, то буду очень рад.

Я только сейчас УВИДЕЛ ВАШ НОВЫЙ СКРИПТ КОТОРЫЙ ВЫ ДОБАВИЛИ 23:15:50 (самый последний), ЕГО Я НЕ ТЕСТИРОВАЛ.
Сейчас буду тестировать его.


Протестировал самый последний скрипт к сожалению тоже самое.
Скрипт 1700 строк прочитал, а за это время было записанно 11500 строк и файл обновился.
Ещё заметил помимо медленного прочтения, скрипт может "призадуматься" - подвиснуть секунд на 10 а иногда даже на минуту, а потом просто идти дальше.
В последний раз скрипт просто завис минут на 6, потом продолжил.
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
Alofa
Файл можно прочитать в массив
Код:
FileReadToArray('1.txt')
50000 строк прочитают за 0.4 секунды.
Каждую строчку поделить по \t
Код:
Local $line = '"395453083X"	"Die Kochbibel - Gцttlich kochen mit der Kьchenmaschine"	29,91	5,89	29,95	"Gewцhnlich versandfertig in 24 Stunden"	N/A	N/A	N/A	6800	0	0	"9783954530830"	N/A	N/A	1248	1248	98	N/A	94	1244	984	384	N/A	"Becker Joest Volk Verlag"'
Local $aReg = StringRegExp($line, '([^\t]+)', 3)
ConsoleWrite('ASIN: ' & $aReg[0] & @CRLF)
ConsoleWrite('Name: ' & $aReg[1] & @CRLF)
ConsoleWrite('Lowest New Price: ' & $aReg[2] & @CRLF)
ConsoleWrite('Lowest Used Price: ' & $aReg[3] & @CRLF)


Не использовать в цикле _ArraySearch, написать свою.
Второй файл тоже также прочитать. Так вы знаете ASIN и значит легко найдете его во втором файле что бы сравнивать цены.


Добавлено:
Сообщение автоматически объединено:

А если строки что в 1 файле что во втором всегда на одинаковых местах, то вообще не использовать поиск.


Добавлено:
Сообщение автоматически объединено:

Еще можно сравнивать строки, если они не изменились, значит ее вообще не обрабатывать регуляркой. И продолжить цикл.
 
A

Alofa

Гость
inververs, спасибо учту. Так или иначе буду тестировать разные варианты.

inververs сказал(а):
... 50000 строк прочитают за 0.4 секунды.
Не думал что "_FileReadToArray()" так быстра - она же вроде построчно читает.

inververs сказал(а):
... Не использовать в цикле _ArraySearch
Функцию хоть сейчас можно убрать - это я ее поставил для 101% уверенности.

А вообще, я вот все думаю откуда такие задержки в работе: минуты, десятки минут?
Даже если шаманить скрипт и дальше, очень сомневаюсь что можно компенсировать это время. Потому как подозреваю, что это первичная программа на столько мешает (постоянным переписыванием файлов и загрузкой ЦП) + время на то чтобы скрипт прочитал файлы + построчное сравнение, отправка Email и т.п.
 

ildar

Осваивающий
Сообщения
252
Репутация
29
Dk можешь выложить большой файл 2.txt куда-нибудь на обменник для теста, заинтересовал ваш диспут :scratch:
 
Автор
D

Dk

Новичок
Сообщения
358
Репутация
2
Re: Сравнение строк в столбцах в текстовом файле с разделителем - табуляция

Alofa[
Даже если шаманить скрипт и дальше, очень сомневаюсь что можно компенсировать это время.

Давайте всё же попробуем, 0,4 с = 50.тыс строк это всё же быстро)
Жалко как то на пол пути ... :'( :-[ :-[


Добавлено:
Сообщение автоматически объединено:

ildar сказал(а):
Dk можешь выложить большой файл 2.txt куда-нибудь на обменник для теста, заинтересовал ваш диспут :scratch:

Так ведь дело не в размере файла, а в том что он пишится быстрей, чем успевает сравниваться. Поэтому просто от самого большого файла, толку не бидет.
Но если всё же важно, посоветуйте куда можно выложить. Я если честно никогда не пользовался загрузкой в общий доступ.
 

ra4o

AutoIT Гуру
Сообщения
1,165
Репутация
246
пишится быстрей, чем успевает сравниваться
с какой скоростью ведётся запись ? Можно для эмуляции работы Вашей программы написать скрипт , что-бы постоянно писал в файл 1.тхт. Так тест будет хоть как-то приближен к реалиям.
 
Автор
D

Dk

Новичок
Сообщения
358
Репутация
2
Re: Сравнение строк в столбцах в текстовом файле с разделителем - табуляция

ra4o сказал(а):
пишится быстрей, чем успевает сравниваться
с какой скоростью ведётся запись ? Можно для эмуляции работы Вашей программы написать скрипт , что-бы постоянно писал в файл 1.тхт. Так тест будет хоть как-то приближен к реалиям.

Запись идёт по разному, если по максимуму взять то 120 строк в секунду
 

ra4o

AutoIT Гуру
Сообщения
1,165
Репутация
246
Тогда уж точно нужен полный файл 2.тхт .Можно залить на любой файлообменник, яндекс диск и т.п.
 
Автор
D

Dk

Новичок
Сообщения
358
Репутация
2
A

Alofa

Гость
Re: Сравнение строк в столбцах в текстовом файле с разделителем - табуляция

Dk сказал(а):
...Жалко как то на пол пути ... :'( :-[ :-[
Dk я же вроде писал:
Alofa сказал(а):
... Так или иначе буду тестировать разные варианты.
Но если у кого-то еще все получится раньше - порадуюсь вместе с вами.
(заодно подсмотрю код - поучусь у профи).
 
Автор
D

Dk

Новичок
Сообщения
358
Репутация
2
Re: Сравнение строк в столбцах в текстовом файле с разделителем - табуляция

Сразу чувствуется, начались выходные :-\ :-\
 
A

Alofa

Гость
Еще один вариант:

Dk для достижения максимального быстродействия скрипта необходимо чтобы в начале его работы файл "1.txt" был абсолютно пуст (в идеале), а файл "2.txt" максимально заполнен. Подумайте, как можно организовать подобное условие?
Можно, к примеру, сделать так чтобы скрипт сам запускал вашу программу или при своем старте вообще удалял эти файлы. Но как при этом поведет себя ваша программа? Понаблюдайте, как она будет работать если при запуска не обнаружит "1.txt" и "2.txt" - какой файл будет создаваться первым или может вылетит с ошибкой..?

Ну а пока скрипт работает следующим образом: при старте он останавливается в ожидании обновления "1.txt"
За это отвечают следующие строки:
Код:
; ===== Этот блок приостанавливает скрипт пока "1.txt" не будет очищен =====
Do
	Sleep(250)
	$sFile1Size = FileGetSize($sFile1)
	If $sFile1SizePrev < $sFile1Size Then $sFile1SizePrev = $sFile1Size
Until $sFile1SizePrev > $sFile1Size
$sFile1SizePrev = 0
; ===========================================================================


Вы можете попробовать работу и без этого - просто удалите этот блок из скрипта.
... и только после этого начинает свою работу.

Dk сказал(а):
... Что некоторые снижения цен он просто не показывает...
Выяснилось, что в названиях некоторых товаров также может присутствовать "Tab" - а мы так не договаривались. В этом скрипте это исправленно.

Dk сказал(а):
... Так ведь дело не в размере файла, а в том что он пишится быстрей, чем успевает сравниваться.
На тестах у меня скрипт показывал скорость обработки до 1000 строк в секунду.
 

ildar

Осваивающий
Сообщения
252
Репутация
29
Код:
#include <Array.au3>

$sFile1 = @ScriptDir & '\1.txt'
$sFile2 = @ScriptDir & '\2.txt'

$hTimer = TimerInit()

;считываем данные из файла в массив
$aFile1 = FileReadToArray($sFile1)
$aFile2 = FileReadToArray($sFile2)

;первое сравнение данных
$iStr = 0
For $i = 1 + $iStr To UBound($aFile1)
   $aTXT1 = StringSplit($aFile1[$iStr], @TAB, 2)
   $aTXT2 = StringSplit($aFile2[$iStr], @TAB, 2)
   If $aTXT1[3] < $aTXT2[3]/2 And $aTXT1[9] < 300000 Then MsgBox(0, 'Не совпадают данные этой строки', $aTXT1[0])
   $iStr += 1
Next


$iDiff = TimerDiff($hTimer)
MsgBox(0, "Разница во времени", $iDiff)
MsgBox(0, '', 'End')
11500 строк в обоих файлах, за 1,3 сек
Alofa не лучше ли следить не за размером файла, а за временем изменения?
в начале
Код:
$t1 =  FileGetTime($sFile1, 0, 1)
$t2 =  FileGetTime($sFile2, 0, 1)
а далее
Код:
If $t2 <> FileGetTime($sFile2, 0, 1) Then		; если 2.txt обновился начинаем сначала
и делать
Код:
$aFile1 = FileReadToArray($sFile1)

каждый раз когда
Код:
If $t1 <> FileGetTime($sFile1, 0, 1
 
A

Alofa

Гость
ildar сказал(а):
... не лучше ли следить не за размером файла, а за временем изменения?
Нет не лучше. Файл "1.txt" постоянно дописывается новыми строками, а нам нужно узнать когда он будет полностью перезаписан, т.е. обнулен.

ildar сказал(а):
... и делать
Код:
$aFile1 = FileReadToArray($sFile1)
С учетом вышесказанного, это нужно будет делать ежесекундно, а смысл? Зачем каждый раз читать весь файл (да еще и в массив), если можно считывать только свежедописанные строки.
Куда более логично применить данную функцию к "2.txt". Да согласен работает быстро, а дальше что? Обрабатывать на лету каждую строку (элемент) массива функцией "StringRegExp()", образуя тем самым еще массив?
А так я сразу получаю разложенный по полочкам массив.
Код:
$asText2 = StringRegExp(FileRead($sFile2), '\n"(\w{10,12})"\t"(.+?)"\t.+?\t([\d\,N/A]+).+', 3)
 
Автор
D

Dk

Новичок
Сообщения
358
Репутация
2
Re: Сравнение строк в столбцах в текстовом файле с разделителем - табуляция

Добрый день,

я сейчас не могу тщательно протестить каждый скрипт, но обязательно это сделаю вечером,ОБЯЗАТЕЛЬНО.
Спасибо вам за Ваши старания.
 
A

Alofa

Гость
ildar и еще:
Код:
$aTXT1 = StringSplit($aFile1[$iStr], @TAB, 2)
$aTXT2 = StringSplit($aFile2[$iStr], @TAB, 2)

Alofa сказал(а):
Выяснилось, что в названиях некоторых товаров также может присутствовать "Tab"
 

ildar

Осваивающий
Сообщения
252
Репутация
29
Меня похоже не поняли
а нам нужно узнать когда он будет полностью перезаписан
это видимо в вашем случае нужно. Как только дописались строки
Код:
FileGetTime($sFile1, 0, 1)
изменился. Считать весь массив - доли секунды. А сравнивать только последние
Код:
For $i = 1 + $iStr To UBound($aFile1)
переменная $iStr будет смещать начало сравнения.
Выяснилось, что в названиях некоторых товаров также может присутствовать "Tab"
Не знал. В таком случае лучше вместо
Код:
StringSplit($aFile1[$iStr], @TAB, 2)
использовать вашу регулярку.
 
A

Alofa

Гость
ildar сказал(а):
... Как только дописались строки ...
Dk сказал(а):
... Файл 1.txt постоянно обновляется, происходит это следующим образом
Примерно каждую секунду записывается 20 строк, так доходит до 30 тыс. строк и происходит запись/перезапись файла 2.txt, а сам файл 1.txt обнуляется и с нуля опять идёт запись по 20 строк.

ildar сказал(а):
... использовать вашу регулярку.
Я далеко не волшебник - я только учусь. :smile: Поэтому перед тем как использовать что-то мое, лучше 100 раз перепроверить.
 
Автор
D

Dk

Новичок
Сообщения
358
Репутация
2
Сравнение строк в столбцах в текстовом файле с разделителем


Alofa

Протестировал Ваш скрипт.

Скорость хорошая - успевает. Больше не повисает.
Но есть очень сильная проблема в другом теперь.
Я как всегда для наглядности добавил ToolTip и увиодел следующее
Когда программа моя доходит до 11500 и начинает сравнивать 1.тхт с 2.тхт (это примерно занимает секунды 3), то скрипт ваш тоже доходит на до 11500, но во время 3 секунд, он начинает как сумасшедший читать строки "лететь вниз" по строкам. И пока программа думает 2-3 секунды, скрипт успевает дойти до примерно 1200 строк. После того как программа подумала -сравнила, она начинает писать с нуля, скрипт при этом СТОИТ - так как он ждёт, когда программа дойдёт до 1200 строк. И как только программа доходит до 1200 строк, скрипт подключается и идёт вместе. И такая история постоянно и получается скрипт стартует всегда с 1200-1800-ой строки.
ПС
1.тхт запускаю полностью пустым, как вы и говорили (что бы скрипт стартовал с первой строки) Получается файл 2.тхт обновился, а 1. тхт обновился только через секунды 3. Получается скрипт начинает читать заново старые строки в 1.тхт, потом 1.тхт обнуляется и скрипт сидит ждёт на той строчке где он остановился. Вообщем я предлагаю просто поставить задержку в 10 секунд после обновления файла 2.тхт для уверенности, чтоб не сразу стартовал.

Подскажите в каком месте мне надо слип поставить, я что-то не совсем могу понять. :-[ :-[ :-[




Добавлено:
Сообщение автоматически объединено:

Либо сейчас или уже завтра начну тестить скрипт Ildara. Для теста нужно несколько часов, что бы заметить все недостатки, если они есть, поэтому я так долго...
Ildar я обязательно буду тестирвоть его, Спасибо за Ваш вариант.
 
Верх