Что нового

Сравнить 2 текстовых файла.

ZanMax

Тестер
Сообщения
120
Репутация
5
Проблемка есть 2 файла на Асамблере %) вот так вот.
Нужно сравнить и найти отличия.
Думаю как-то построчно нужно ? или как ?
помогите.
 

snoitaleR

AutoIT Гуру
Сообщения
854
Репутация
223
ZanMax
Не совсем связано с AUTOIT, но...

Я вот этой утилиткой сравниваю текстовые файлы (600 КБ)...
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 224
Репутация
2 344
snoitaleR [?]
Не совсем связано с AUTOIT
А точнее совсем не связано с AutoIt :smile:
Тогда зачем это выкладывать?

Вот простая функция сравнения двух файлов:

Код:
$sRet = _CompareFiles_Proc(@ScriptDir & "\test.txt", @ScriptDir & "\test2.txt")

If $sRet = "" Then
	MsgBox(64, "Compare Results", "There is no differences between the two files!")
Else
	$sRet = StringReplace($sRet, "%ff", "test.txt")
	$sRet = StringReplace($sRet, "%sf", "test2.txt")
	
	MsgBox(64, "Compare Results", _
		StringFormat("Differences in the files:\n\n%s", $sRet))
EndIf

Func _CompareFiles_Proc($sCompare_FirstFile, $sCompare_SecondFile)
	If Not FileExists($sCompare_FirstFile) Or Not FileExists($sCompare_SecondFile) Then Return SetError(1, 0, 0)
	
	Local $sRead_FirstFile = FileRead($sCompare_FirstFile)
	Local $sRead_SecondFile = FileRead($sCompare_SecondFile)

	If $sRead_FirstFile == $sRead_SecondFile Then Return ""
	
	Local $aFirstFile_Array = StringSplit(StringStripCR($sRead_FirstFile), @LF)
	Local $aSecondFile_Array = StringSplit(StringStripCR($sRead_SecondFile), @LF)
	
	Local $iFirstFile_Ubound = UBound($aFirstFile_Array)-1
	Local $iSecondFile_Ubound = UBound($aSecondFile_Array)-1
	
	Local $iBiggest_Ubound = $iFirstFile_Ubound
	If $iSecondFile_Ubound > $iFirstFile_Ubound Then $iBiggest_Ubound = $iSecondFile_Ubound
	
	Local $sRet = ""
	
	For $i = 1 To $iBiggest_Ubound
		If $i > $iFirstFile_Ubound Then
			$sRet &= $i & " =>		Missing line in the first file <%ff>" & @LF
		ElseIf $i > $iSecondFile_Ubound Then
			$sRet &= $i & " =>		Missing line in the second file <%sf>" & @LF
		ElseIf StringCompare($aFirstFile_Array[$i], $aSecondFile_Array[$i], 1) <> 0 Then
			$sRet &= $i & " =>		Lines are different in bouth files" & @LF
		EndIf
	Next
	
	Return StringStripWS($sRet, 3)
EndFunc
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4 020
Репутация
622
по-моему лучший способ сравнить два файла на идентичность - это сравнить их хеш-суммы.
md5, crc32, sha1, etc.
если я правильно понял
----------
update
сори, не сразу обратил внимание еще и на строку - найти отличия.
 

snoitaleR

AutoIT Гуру
Сообщения
854
Репутация
223
CreatoR
Я подумал, что ради сравнения двух файлов мастерить целую утилиту было бы не рационально, и предложил готовую утилиту...
К сожалению, на примете нету утилиты сравнения, созданной на AUTOIT...
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 224
Репутация
2 344
snoitaleR [?]
Я подумал, что ради сравнения двух файлов мастерить целую утилиту было бы не рационально, и предложил готовую утилиту
А кто говорил про утилиту? автору темы нужен пример сравнения файлов и вывод отличий, если у тебя нет такого примера, то это не значит что нужно давать сторонние утилиты, я уверен что в гугле таких полно, и автор мог бы сам найти такую программу если бы она ему нужна была.

Это форум поддержки по AutoIt, и если каждый будет давать решения в виде сторонних утилит, то этот форум будет бесполезен :smile:

P.S
И почему ты считаешь что писать утилиту на AutoIt было бы не рационально? вполне достойная задача, и я уверен что на оф. форуме уже выкладывали подобные утилиты/скрипты.
 

snoitaleR

AutoIT Гуру
Сообщения
854
Репутация
223
CreatoR
Я предположил, что сравнение будет однократным...
 
Автор
Z

ZanMax

Тестер
Сообщения
120
Репутация
5
snoitaleR сказал(а):
CreatoR
Я предположил, что сравнение будет однократным...
Нет. Сравнение будет не однократным.
Нужно именно на AutoIT так как хочу немного дописать под себя. :smile:
Спасибо большое.
 

Bloodrinker

<Блуждающий...>
Сообщения
228
Репутация
19
на асме говоришь? я вот тоже его учить начинаю... ибо нужен мне... гребаное низкоуровневое программирование блин... :-[ такая дурь этот асм... да еще с компиляторами проблемы все под ДОС... под вин32 нашел masm32 да и тот чтото кривовато работает... еще нашел парочку IDE но там вообще непойми чего...

PS: кстати, насчет md5, тоже такие проги искал чтоб сверять... там любые файлы/папки сверять можно, или только определенные форматы?
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4 020
Репутация
622
Bloodrinker [?]
любые файлы/папки сверять можно, или только определенные форматы
любые. формат данных абсолютно никакой рояли не играет, т.к. на вход подается бинарный поток и затем производится действие
 
Верх