Вверх ↑
Ответов: 286
Рейтинг: 5
#1: 2021-10-18 13:55:46 ЛС | профиль | цитата
Я начал делать так.В файле программы-любой,В начале слова-в строках обычно стоит один или несколько пробелов.Я на этом решил сыграть.

Add(MainForm,2953706,294,35)
{
Width=711
Height=411
Caption="Пример использования компонента FileStream"
}
Add(FileStream,5579189,392,147)
{
Point(doPosition)
link(onLoad,7672151:doEvent1,[])
link(FileName,3229096:Value,[])
}
Add(Button,6901598,280,98)
{
Left=90
Top=20
Width=65
Caption="Оригинал"
link(onClick,10644980:doExecute,[])
}
Add(ODialog,10644980,336,98)
{
link(onExecute,3229096:doValue,[])
}
Add(Memo,8413688,938,259)
{
Left=5
Top=45
Width=250
Height=250
ScrollBars=3
}
Add(Hub,7672151,441,147)
{
link(onEvent1,7228710:doFor,[(490,153)(490,251)])
link(onEvent2,5579189:doClose,[(474,160)(474,200)(352,200)(352,160)])
}
Add(For,7228710,525,245)
{
IncludeEnd=1
Point(onBreak)
link(onEvent,8206227:doEvent1,[])
link(End,5579189:Size,[(538,220)(405,220)])
}
Add(Convertor,7177771,707,252)
{
Mode=6
link(onResult,5772768:doCompare,[])
}
Add(DataToFileEx,15470337,630,252)
{
BigEndian=0
Point(doPosition)
Point(Size)
link(onGet,7177771:doConvert,[])
link(Stream,5579189:Stream,[(636,234)(398,234)])
}
Add(Hub,8206227,574,245)
{
link(onEvent2,15470337:doGet,[])
}
Add(If_else,5772768,770,252)
{
Op2=String(20)
link(onTrue,6817673:doEvent1,[(814,258)(814,349)])
link(onFalse,8413688:doAdd,[])
}
Add(Hub,6817673,826,343)
{
OutCount=3
link(onEvent1,7228710:doStop,[(866,349)(866,307)(513,307)(513,258)])
link(onEvent2,12330014:doText,[(852,356)(852,391)(618,391)(618,356)])
}
Add(Edit,12330014,637,350)
{
Left=10
Top=320
Width=235
link(Str,7228710:Position,[(643,314)(531,314)])
}
Add(Memory,3229096,392,98)
{
}
Add(Button,6697792,210,147)
{
Left=265
Top=175
link(onClick,9830807:doEvent1,[])
}
Add(Hub,9830807,266,147)
{
link(onEvent1,5579189:doOpen,[])
}
Add(FileStream,11601875,406,392)
{
Point(doPosition)
link(onLoad,4543568:doEvent1,[])
link(FileName,10588058:Value,[])
}
Add(Button,9982498,294,343)
{
Left=410
Top=10
Width=130
Caption="Переведенный"
link(onClick,15567409:doExecute,[])
}
Add(ODialog,15567409,350,343)
{
link(onExecute,10588058:doValue,[])
}
Add(Memo,2066704,952,504)
{
Left=345
Top=45
Width=250
Height=250
ScrollBars=3
}
Add(Hub,4543568,455,392)
{
link(onEvent1,11727105:doFor,[(504,398)(504,496)])
link(onEvent2,11601875:doClose,[(488,405)(488,445)(366,445)(366,405)])
}
Add(For,11727105,539,490)
{
IncludeEnd=1
Point(onBreak)
link(onEvent,15592265:doEvent1,[])
link(End,11601875:Size,[(552,465)(419,465)])
}
Add(Convertor,11929277,721,497)
{
Mode=6
link(onResult,8197454:doCompare,[])
}
Add(DataToFileEx,8102585,644,497)
{
BigEndian=0
Point(doPosition)
Point(Size)
link(onGet,11929277:doConvert,[])
link(Stream,11601875:Stream,[(650,479)(412,479)])
}
Add(Hub,15592265,588,490)
{
link(onEvent2,8102585:doGet,[])
}
Add(If_else,8197454,784,497)
{
Op2=String(20)
link(onTrue,2257770:doEvent1,[(828,503)(828,594)])
link(onFalse,2066704:doAdd,[])
}
Add(Hub,2257770,840,588)
{
OutCount=3
link(onEvent1,11727105:doStop,[(880,594)(880,552)(527,552)(527,503)])
link(onEvent2,15668748:doText,[(866,601)(866,636)(632,636)(632,601)])
}
Add(Edit,15668748,651,595)
{
Left=350
Top=315
Width=235
link(Str,11727105:Position,[(657,559)(545,559)])
}
Add(Memory,10588058,406,343)
{
}
Add(Button,2227539,224,392)
{
Left=605
Top=170
link(onClick,9058230:doEvent1,[])
}
Add(Hub,9058230,280,392)
{
link(onEvent1,11601875:doOpen,[])
}


Находим слово.Потом в переведенном то же самое и Сравниваем и так по очереди.Естественно через For
--- Добавлено в 2021-10-18 14:14:34

Не правильно выразил мысль.Включаем перебор по байтово через for первый файл.Как только доходит до пробела счетчик останавливается.У нас целое слово в Hex.Переходим к перебору второго файла по байтово до пробела.останавливаем перебор.Сравниваем оба слова если есть разница в кол-ве байт Записываем позицию и слова в таблицу.Дописываем недостающие байты пробелами в первый файл и дальше перебор с новой позиции.Так нельзя?
карма: 0

0
Редактировалось 1 раз(а), последний 2021-10-18 14:14:34