ildar
Осваивающий
- Сообщения
- 252
- Репутация
- 30
Но все же было при тесте. Количество товаров остается неизменным? Он не может пополнятся?Такого не может быть
OffTopic:
Наш баламут потерялся?
Наш баламут потерялся?
Но все же было при тесте. Количество товаров остается неизменным? Он не может пополнятся?Такого не может быть
Да.ildar сказал(а):... Количество товаров остается неизменным? Он не может пополнятся?
Не верю.Dk сказал(а):К сожалению тоже самое...
Alofa сказал(а):Не верю.Dk сказал(а):К сожалению тоже самое...
В скрипт добавлена "ConsoleWrite()", которая пишет статистику в консоль. Предоставьте место где происходит смещение.
#include <Array.au3>
#include <WindowsConstants.au3>
#include <ListViewConstants.au3>
#include <GUIConstantsEx.au3>
Opt('GUIOnEventMode', 1)
Opt('TrayOnEventMode', 1)
Opt('TrayMenuMode', 3)
Global $sFile1 = @ScriptDir & '\1.txt', $hFile1, $sFile2 = @ScriptDir & '\2.txt'
Global $hGUI, $ListView, $hButt1, $hButt2, $hGUIState, $hExit
$hGUI = GUICreate('Список:', 619, 175, -1, -1)
GUISetBkColor(0xB9D1EA)
$ListView = GUICtrlCreateListView('|ASIN-10 |Price[New]|Price[Old]|SalesRank|Name|Date & Time', 5, 5, 609, 125, _
$LVS_NOSORTHEADER, BitOR($LVS_EX_CHECKBOXES, $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)
$sFile1 = @ScriptDir & '\1.txt'
$sFile2 = @ScriptDir & '\2.txt'
$hTimer = TimerInit()
;считываем данные из файла в массив
$aFile1 = FileReadToArray($sFile1)
$aFile2 = FileReadToArray($sFile2)
;_ArrayDisplay($aFile2)
;получаем время изменения файла
$t1 = FileGetTime($sFile1, 0, 1)
$t2 = FileGetTime($sFile2, 0, 1)
$iStr = 0
While 1
If $t2 <> FileGetTime($sFile2, 0, 1) Then ; если 2.txt обновился начинаем сначала
;MsgBox(0, 'Первое условие', 'Сработало 1')
$iStr = 0
$aFile2 = FileReadToArray($sFile2)
$t2 = FileGetTime($sFile2, 0, 1)
Else
EndIf
If $t1 <> FileGetTime($sFile1, 0, 1) And $t2 = FileGetTime($sFile2, 0, 1) Then
;MsgBox(0, 'Второе условие', 'Сработало 2')
$aFile1 = FileReadToArray($sFile1)
$t1 = FileGetTime($sFile1, 0, 1)
$j = UBound($aFile1)
If UBound($aFile1) > UBound($aFile2) Then $j = UBound($aFile2)
For $i = 1 + $iStr To $j - 1
$aTXT1 = StringRegExp($aFile1[$i], '"(\w{10,12})"\t"(.+?)"(?:\t[\d\,N/A]+)\t([\d\,N/A]+)(?:\t[\d\,N/A]+\t.+?"?)(?:\t[\d\,N/A]+){3}\t([\d\,N/A]+)\t', 3)
$aTXT2 = StringRegExp($aFile2[$i], '"(\w{10,12})"\t"(.+?)"(?:\t[\d\,N/A]+)\t([\d\,N/A]+)(?:\t[\d\,N/A]+\t.+?"?)(?:\t[\d\,N/A]+){3}\t([\d\,N/A]+)\t', 3)
ConsoleWrite($aTXT1[2] & ' -- ' & $aTXT2[2] & @CRLF)
If $aTXT1[2] < $aTXT2[2]/2 And $aTXT1[3] < 300000 Then
GUICtrlCreateListViewItem('|' & $aTXT1[0] & '|' & $aTXT1[2] & '|' & $aTXT2[2] & '|' & _
$aTXT1[3] & '|' & $aTXT1[1] & '|' & @MDAY & '/' & @MON & '/' & @YEAR & ' ' & @HOUR & ':' & @MIN & ':' & @SEC, $ListView)
GUISetState(@SW_SHOWNORMAL)
$iStr += 1
Else
EndIf
Next
Else
EndIf
Sleep(100)
WEnd
Func _CLOSEClicked()
GUISetState(BitAND(WinGetState($hGUI), 2) ? @SW_HIDE : @SW_SHOWNORMAL)
EndFunc
Func _ListViewClear()
GUICtrlSendMsg($ListView, $LVM_DELETEALLITEMS, 0, 0)
EndFunc
Func _Exit()
Exit
EndFunc
а вот это уже интересно. Тогда не надо тестить.либо, когда скрипт начинает читать первую строку в файле 1.тхт
#include <Array.au3>
#include <WindowsConstants.au3>
#include <ListViewConstants.au3>
#include <GUIConstantsEx.au3>
Opt('GUIOnEventMode', 1)
Opt('TrayOnEventMode', 1)
Opt('TrayMenuMode', 3)
Global $sFile1 = @ScriptDir & '\1.txt', $hFile1, $sFile2 = @ScriptDir & '\2.txt'
Global $hGUI, $ListView, $hButt1, $hButt2, $hGUIState, $hExit
$hGUI = GUICreate('Список:', 619, 175, -1, -1)
GUISetBkColor(0xB9D1EA)
$ListView = GUICtrlCreateListView('|ASIN-10 |Price[New]|Price[Old]|SalesRank|Name|Date & Time', 5, 5, 609, 125, _
$LVS_NOSORTHEADER, BitOR($LVS_EX_CHECKBOXES, $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)
$sFile1 = @ScriptDir & '\1.txt'
$sFile2 = @ScriptDir & '\2.txt'
$hTimer = TimerInit()
;считываем данные из файла в массив
$aFile1 = FileReadToArray($sFile1)
$aFile2 = FileReadToArray($sFile2)
;_ArrayDisplay($aFile2)
;получаем время изменения файла
$t1 = 0 ;FileGetTime($sFile1, 0, 1)
$t2 = FileGetTime($sFile2, 0, 1)
$iStr = 0
While 1
If $t2 <> FileGetTime($sFile2, 0, 1) Then ; если 2.txt обновился начинаем сначала
;MsgBox(0, 'Первое условие', 'Сработало 1')
$iStr = 0
$aFile2 = FileReadToArray($sFile2)
$t2 = FileGetTime($sFile2, 0, 1)
Else
EndIf
If $t1 <> FileGetTime($sFile1, 0, 1) And $t2 = FileGetTime($sFile2, 0, 1) Then
;MsgBox(0, 'Второе условие', 'Сработало 2')
$aFile1 = FileReadToArray($sFile1)
$t1 = FileGetTime($sFile1, 0, 1)
$j = UBound($aFile1)
If UBound($aFile1) > UBound($aFile2) Then $j = UBound($aFile2)
For $i = 1 + $iStr To $j - 1
$aTXT1 = StringRegExp($aFile1[$i], '"(\w{10,12})"\t"(.+?)"(?:\t[\d\,N/A]+)\t([\d\,N/A]+)(?:\t[\d\,N/A]+\t.+?"?)(?:\t[\d\,N/A]+){3}\t([\d\,N/A]+)\t', 3)
$aTXT2 = StringRegExp($aFile2[$i], '"(\w{10,12})"\t"(.+?)"(?:\t[\d\,N/A]+)\t([\d\,N/A]+)(?:\t[\d\,N/A]+\t.+?"?)(?:\t[\d\,N/A]+){3}\t([\d\,N/A]+)\t', 3)
ConsoleWrite($aTXT1[2] & ' -- ' & $aTXT2[2] & @CRLF)
If $aTXT1[2] < $aTXT2[2]/2 And $aTXT1[3] < 300000 Then
GUICtrlCreateListViewItem('|' & $aTXT1[0] & '|' & $aTXT1[2] & '|' & $aTXT2[2] & '|' & _
$aTXT1[3] & '|' & $aTXT1[1] & '|' & @MDAY & '/' & @MON & '/' & @YEAR & ' ' & @HOUR & ':' & @MIN & ':' & @SEC, $ListView)
GUISetState(@SW_SHOWNORMAL)
$iStr += 1
Else
EndIf
Next
Else
EndIf
Sleep(100)
WEnd
Func _CLOSEClicked()
GUISetState(BitAND(WinGetState($hGUI), 2) ? @SW_HIDE : @SW_SHOWNORMAL)
EndFunc
Func _ListViewClear()
GUICtrlSendMsg($ListView, $LVM_DELETEALLITEMS, 0, 0)
EndFunc
Func _Exit()
Exit
EndFunc
Alofa сказал(а):Не верю.Dk сказал(а):К сожалению тоже самое...
В скрипт добавлена "ConsoleWrite()", которая пишет статистику в консоль. Предоставьте часть этого списка, где происходит смещение - тогда поверю.
If $asText1[1] <> 'N/A' And $asText2[$iCount + 2] <> 'N/A' Then
If StringReplace($asText2[$iCount + 2], ',', '.') / StringReplace($asText1[1], ',', '.') >= 2 And $asText1[2] < 300000 Then
GUICtrlCreateListViewItem('|' & $asText1[0] & '|' & $asText1[1] & '|' & $asText2[$iCount + 2] & '|' & _
$asText1[2] & '|' & $asText2[$iCount + 1] & '|' & @MDAY & '/' & @MON & '/' & @YEAR & ' ' & @HOUR & ':' & @MIN & ':' & @SEC, $ListView)
$asText2[$iCount + 2]
$asText2[$iCount + 1]
ildar сказал(а):DkМое сообщение выше. Исправленное.
Да. Это название товара.ildar сказал(а):так должно быть?Код:$asText2[$iCount + 1]
If $aTXT1[2] = $aTXT1[2] And $aTXT1[3] < 3000000 Then
*Клик*.Dk сказал(а):Да, в редкторе тоже..
Alofa сказал(а):*Клик*.Dk сказал(а):Да, в редкторе тоже..
Dk вы можете скинуть пример "1.txt" и "2.txt" (строк на 10) где происходит смещение?
#include <Array.au3>
#include <WindowsConstants.au3>
#include <ListViewConstants.au3>
#include <GUIConstantsEx.au3>
#Include <Log.au3>
$hLog = _Log_Open(@ScriptDir & '\MyProg.log', '#########')
Opt('GUIOnEventMode', 1)
Opt('TrayOnEventMode', 1)
Opt('TrayMenuMode', 3)
Global $sFile1 = @ScriptDir & '\1.txt', $hFile1, $sFile2 = @ScriptDir & '\2.txt'
Global $hGUI, $ListView, $hButt1, $hButt2, $hGUIState, $hExit
$hGUI = GUICreate('Список:', 619, 175, -1, -1)
GUISetBkColor(0xB9D1EA)
$ListView = GUICtrlCreateListView('|ASIN-10 |Price[New]|Price[Old]|SalesRank|Name|Date & Time', 5, 5, 609, 125, _
$LVS_NOSORTHEADER, BitOR($LVS_EX_CHECKBOXES, $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)
$sFile1 = @ScriptDir & '\1.txt'
$sFile2 = @ScriptDir & '\2.txt'
$hTimer = TimerInit()
;считываем данные из файла в массив
$aFile1 = FileReadToArray($sFile1)
$aFile2 = FileReadToArray($sFile2)
;_ArrayDisplay($aFile2)
;получаем время изменения файла
$t1 = 0 ;FileGetTime($sFile1, 0, 1)
$t2 = FileGetTime($sFile2, 0, 1)
$iStr = 0
_Log_Report($hLog, 'Program start', 0)
While 1
_Log_Report($hLog, '$t1 = ' & $t1 & ' | ' & FileGetTime($sFile2, 0, 1), 3)
If $t2 <> FileGetTime($sFile2, 0, 1) Then ; если 2.txt обновился начинаем сначала
_Log_Report($hLog, '2.txt обновился', 2)
$iStr = 0
$aFile2 = FileReadToArray($sFile2)
$t2 = FileGetTime($sFile2, 0, 1)
Else
EndIf
If $t1 <> FileGetTime($sFile1, 0, 1) And $t2 = FileGetTime($sFile2, 0, 1) Then
_Log_Report($hLog, '1.txt обновился', 1)
$aFile1 = FileReadToArray($sFile1)
$t1 = FileGetTime($sFile1, 0, 1)
$j = UBound($aFile1)
If UBound($aFile1) > UBound($aFile2) Then $j = UBound($aFile2)
For $i = 1 + $iStr To $j - 1
$aTXT1 = StringRegExp($aFile1[$i], '"(\w{10,12})"\t"(.+?)"(?:\t[\d\,N/A]+)\t([\d\,N/A]+)(?:\t[\d\,N/A]+\t.+?"?)(?:\t[\d\,N/A]+){3}\t([\d\,N/A]+)\t', 3)
$aTXT2 = StringRegExp($aFile2[$i], '"(\w{10,12})"\t"(.+?)"(?:\t[\d\,N/A]+)\t([\d\,N/A]+)(?:\t[\d\,N/A]+\t.+?"?)(?:\t[\d\,N/A]+){3}\t([\d\,N/A]+)\t', 3)
ConsoleWrite($aTXT1[2] & ' -- ' & $aTXT2[2] & @CRLF)
If $aTXT1[2] < $aTXT2[2]/2 And $aTXT1[3] < 300000 Then
GUICtrlCreateListViewItem('|' & $aTXT1[0] & '|' & $aTXT1[2] & '|' & $aTXT2[2] & '|' & _
$aTXT1[3] & '|' & $aTXT1[1] & '|' & @MDAY & '/' & @MON & '/' & @YEAR & ' ' & @HOUR & ':' & @MIN & ':' & @SEC, $ListView)
GUISetState(@SW_SHOWNORMAL)
$iStr += 1
Else
EndIf
Next
Else
EndIf
Sleep(500)
WEnd
Func _CLOSEClicked()
GUISetState(BitAND(WinGetState($hGUI), 2) ? @SW_HIDE : @SW_SHOWNORMAL)
EndFunc
Func _ListViewClear()
GUICtrlSendMsg($ListView, $LVM_DELETEALLITEMS, 0, 0)
EndFunc
Func _Exit()
Exit
EndFunc
Alofa сказал(а):*Клик*.Dk сказал(а):Да, в редкторе тоже..
Dk вы можете скинуть пример "1.txt" и "2.txt" (строк на 10) где происходит смещение?
ildar сказал(а):Dk
для сбора логов. Долго гонять не обязательно. Нужно добавить в папку include то что во вложении Log.au3. В папке скрипта появится файл MyProg.log. Выложи его потом сюда.Код:#include <Array.au3> #include <WindowsConstants.au3> #include <ListViewConstants.au3> #include <GUIConstantsEx.au3> #Include <Log.au3> $hLog = _Log_Open(@ScriptDir & '\MyProg.log', '#########') Opt('GUIOnEventMode', 1) Opt('TrayOnEventMode', 1) Opt('TrayMenuMode', 3) Global $sFile1 = @ScriptDir & '\1.txt', $hFile1, $sFile2 = @ScriptDir & '\2.txt' Global $hGUI, $ListView, $hButt1, $hButt2, $hGUIState, $hExit $hGUI = GUICreate('Список:', 619, 175, -1, -1) GUISetBkColor(0xB9D1EA) $ListView = GUICtrlCreateListView('|ASIN-10 |Price[New]|Price[Old]|SalesRank|Name|Date & Time', 5, 5, 609, 125, _ $LVS_NOSORTHEADER, BitOR($LVS_EX_CHECKBOXES, $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) $sFile1 = @ScriptDir & '\1.txt' $sFile2 = @ScriptDir & '\2.txt' $hTimer = TimerInit() ;считываем данные из файла в массив $aFile1 = FileReadToArray($sFile1) $aFile2 = FileReadToArray($sFile2) ;_ArrayDisplay($aFile2) ;получаем время изменения файла $t1 = 0 ;FileGetTime($sFile1, 0, 1) $t2 = FileGetTime($sFile2, 0, 1) $iStr = 0 _Log_Report($hLog, 'Program start', 0) While 1 _Log_Report($hLog, '$t1 = ' & $t1 $ ' | ' & FileGetTime($sFile2, 0, 1), 3) If $t2 <> FileGetTime($sFile2, 0, 1) Then ; если 2.txt обновился начинаем сначала _Log_Report($hLog, '2.txt обновился', 2) $iStr = 0 $aFile2 = FileReadToArray($sFile2) $t2 = FileGetTime($sFile2, 0, 1) Else EndIf If $t1 <> FileGetTime($sFile1, 0, 1) And $t2 = FileGetTime($sFile2, 0, 1) Then _Log_Report($hLog, '1.txt обновился', 1) $aFile1 = FileReadToArray($sFile1) $t1 = FileGetTime($sFile1, 0, 1) $j = UBound($aFile1) If UBound($aFile1) > UBound($aFile2) Then $j = UBound($aFile2) For $i = 1 + $iStr To $j - 1 $aTXT1 = StringRegExp($aFile1[$i], '"(\w{10,12})"\t"(.+?)"(?:\t[\d\,N/A]+)\t([\d\,N/A]+)(?:\t[\d\,N/A]+\t.+?"?)(?:\t[\d\,N/A]+){3}\t([\d\,N/A]+)\t', 3) $aTXT2 = StringRegExp($aFile2[$i], '"(\w{10,12})"\t"(.+?)"(?:\t[\d\,N/A]+)\t([\d\,N/A]+)(?:\t[\d\,N/A]+\t.+?"?)(?:\t[\d\,N/A]+){3}\t([\d\,N/A]+)\t', 3) ConsoleWrite($aTXT1[2] & ' -- ' & $aTXT2[2] & @CRLF) If $aTXT1[2] < $aTXT2[2]/2 And $aTXT1[3] < 300000 Then GUICtrlCreateListViewItem('|' & $aTXT1[0] & '|' & $aTXT1[2] & '|' & $aTXT2[2] & '|' & _ $aTXT1[3] & '|' & $aTXT1[1] & '|' & @MDAY & '/' & @MON & '/' & @YEAR & ' ' & @HOUR & ':' & @MIN & ':' & @SEC, $ListView) GUISetState(@SW_SHOWNORMAL) $iStr += 1 Else EndIf Next Else EndIf Sleep(500) WEnd Func _CLOSEClicked() GUISetState(BitAND(WinGetState($hGUI), 2) ? @SW_HIDE : @SW_SHOWNORMAL) EndFunc Func _ListViewClear() GUICtrlSendMsg($ListView, $LVM_DELETEALLITEMS, 0, 0) EndFunc Func _Exit() Exit EndFunc
ildar сказал(а):Dk
Исправил, выше.
#Include <Log.au3>
$hLog = _Log_Open(@ScriptDir & '\MyProg.log', '#########')
_Log_Report($hLog, 'Program start', 0)
While 1
$t1 = FileGetTime($sFile1, 0, 1)
$t2 = FileGetTime($sFile2, 0, 1)
_Log_Report($hLog, '$t1 = ' & $t1 & ' | ' & $t2 = ' & $t2, 3)
Sleep(10000)
WEnd
Ну как я и думал... У меня вообще ниразу условие не сработало. Тут дело в чем-то другом :stars:Dk сказал(а):... Вот ровно с этими файлами я работал. Скрин показывает совпадения со смещением.