Вверх ↑
Этот топик читают: Гость
Ответов: 188
Рейтинг: 2
#1: 2020-01-02 17:29:46 ЛС | профиль | цитата
С наступившим вас 2020 годом! Не все бухают вот и я один из них решил одну штуку с ваять и что-то у меня ступор не знаю с чего даже начать!
Суть такая.
Есть некий файл в нем нужно найти последовательность 4 байт после успешного поиска предложить замену и заменить 2 байта из этих четырех байт. В конце измененный файл сохранить!
казалось вроде бы проще быть не может. Никогда не работал с файлами и байтами! вроде и примеры изучаю но что то как то не складывается картина!
карма: 0

0
vip
#1.1контекстная реклама от партнеров
Ответов: 537
Рейтинг: 14
#2: 2020-01-02 17:43:38 ЛС | профиль | цитата
Этот вопрос уже зажался на форуме и не один раз
карма: 4

0
Ответов: 1925
Рейтинг: 172
#3: 2020-01-02 17:49:35 ЛС | профиль | цитата
Ага, пару месяцев назад было: https://forum.hiasm.com/topic/67484
карма: 9
0
Ответов: 188
Рейтинг: 2
#4: 2020-01-02 17:49:38 ЛС | профиль | цитата
Еще и поиск нормально не работает!
карма: 0

0
Ответов: 1925
Рейтинг: 172
#5: 2020-01-02 17:59:46 ЛС | профиль | цитата
zhorik5 писал(а):
поиск

https://yandex.ru/search/?text=site%3Ahiasm.com%20%D0%B8%D0%B7%D0%BC%D0%B5%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5%20%D0%B1%D0%B0%D0%B9%D1%82%20%D0%B2%20%D1%84%D0%B0%D0%B9%D0%BB%D0%B5&lr=55

Вот, например: https://forum.hiasm.com/topic/65163/0

Редактировалось 2 раз(а), последний 2020-01-02 18:01:17
карма: 9
0
Ответов: 188
Рейтинг: 2
#6: 2020-01-03 17:18:53 ЛС | профиль | цитата
хоть убейте не понимаю!

Add(Button,3788758,308,182){
Left=17
Top=16
Width=93
Caption="open file to bin"
link(onClick,1937952:doExecute,[(348,188)(348,230)(375,230)(375,188)])
}
Add(ODialog,1937952,378,182)
{
link(onExecute,3591058:doOpen,[])
}
Add(StreamConvertor,15142878,462,301)
{
Point(Data)
link(onResult,8206227:doEvent1,[])
link(Data,3591058:Stream,[])
}
Add(Memo,6805200,581,280)
{
Left=53
Top=53
Width=466
Height=415
ScrollBars=3
Point(Position)
}
Add(FileStream,3591058,462,182)
{
AutoCopy=0
Point(doPosition)
Point(doCopyFromStream)
link(onLoad,15142878:doConvert,[(510,188)(510,236)(447,236)(447,307)])
}
Add(Position,8549543,581,364)
{
Target="003D0BF6"
link(Str,5639363:Var2,[])
}
Add(Hub,8206227,504,301)
{
link(onEvent1,6805200:doText,[])
link(onEvent2,8549543:doSearch,[(525,314)(525,370)])
}
Add(GetDataEx,13632165,581,322)
{
link(Data,6805200:Text,[])
}
Add(GetDataEx,5639363,581,336)
{
link(Data,13632165:Var2,[])
}


Поиск 003D0BF6 осуществляется. А вот как заменить 003D0BF6 на 000D0AF6. вообще загадка.
изучение предыдущих примеров никак не помогло.

Редактировалось 1 раз(а), последний 2020-01-03 17:19:27
карма: 0

0
Ответов: 4621
Рейтинг: 746
#7: 2020-01-03 17:35:48 ЛС | профиль | цитата
С помощью FileStream.doPosition установить позицию на "найденная - 1", а с помощью DataToFileEx записать новое значение.
Либо произвести все замены в строке компонентом Replace, затем строку преобразовать из HEX в Stream и записать в исходный файл с помощью FileStream.doCopyFromStream.

Редактировалось 3 раз(а), последний 2020-01-03 17:38:31
карма: 26

0
Ответов: 188
Рейтинг: 2
#8: 2020-01-03 18:39:44 ЛС | профиль | цитата
Netspirit писал(а):
Либо произвести все замены в строке компонентом Replace

Вешается программа!Пробовал и MultiReplace тоже висит. файл hex 1mb

--- Добавлено в 2020-01-03 18:41:41

Netspirit писал(а):
а с помощью DataToFileEx записать новое значение.

а куда что подавать чтобы записать эти несчастные 4 байта?

--- Добавлено в 2020-01-03 18:43:59

дамп микросхемы 1мб в нем нужно сделать замену 4 байт. заменяемые данные располагаются примерно по середине. при этом нужно чтобы основной дамп не пострадал и адресация не нарушилась.

--- Добавлено в 2020-01-03 18:54:02

Поиск и изменение должны быть в этом файле

https://cloud.mail.ru/public/3VUC/3JejdMErH

Редактировалось 5 раз(а), последний 2020-01-03 18:54:02
карма: 0

0
Ответов: 188
Рейтинг: 2
#9: 2020-01-03 22:18:14 ЛС | профиль | цитата
все вот эти схемы работают очень долго почему?

Add(MainForm,3990039,154,294)
{
Width=1507
Height=1006
Caption="отключение иммо me 7.9.7 china"
link(onCreate,8722659:doEvent2,[])
}
Add(ODialog,1937952,266,301)
{
link(onExecute,7059904:doText,[])
}
Add(StreamConvertor,15142878,462,301)
{
Point(Data)
link(onResult,8206227:doEvent1,[])
link(Data,3591058:Stream,[(468,289)(426,289)(426,352)(384,352)])
}
Add(Memo,6805200,581,280)
{
Left=36
Top=153
Width=466
Height=415
ScrollBars=3
Point(Position)
}
Add(FileStream,3591058,378,301)
{
AutoCopy=0
Point(doCopyFromStream)
Point(doPosition)
link(onLoad,15142878:doConvert,[])
}
Add(Position,8549543,581,364)
{
Target="003D0BF6"
ZeroPos=0
Point(doReset)
link(onSearch,4939829:In,[])
link(Str,5639363:Var2,[])
}
Add(Hub,8206227,511,301)
{
link(onEvent1,6805200:doText,[])
link(onEvent2,8549543:doSearch,[(532,314)(532,370)])
}
Add(GetDataEx,13632165,581,322)
{
link(Data,6805200:Text,[])
}
Add(GetDataEx,5639363,581,336)
{
link(Data,13632165:Var2,[])
}
Add(Replace,4801814,987,315)
{
SubStr="003D0BF6"
DestStr="000D0AF6"
Point(CurentPos)
Point(CurentStr)
link(onReplace,9967344:doAdd,[])
}
Add(ArrayEnum,3075817,903,315)
{
link(onItem,4801814:doReplace,[])
link(Array,9324213:Array,[])
}
Add(Memo,9967344,1085,315)
{
Left=550
Top=152
Width=466
Height=415
ScrollBars=3
Point(Position)
}
Add(StreamConvertor,10169625,1085,406)
{
Mode=1
Point(Data)
link(onResult,10092302:doCopyFromStream,[])
link(Data,9967344:Text,[])
}
Add(SDialog,11222540,1218,392)
{
Point(StartDir)
Point(FileName)
}
Add(Button,10031172,413,483)
{
Left=85
Top=100
Width=90
Caption="поиск и замена"
link(onClick,6131048:doSearch,[(587,489)(587,524)])
}
Add(FileStream,10092302,1162,392)
{
Mode=1
Point(doCopyFromStream)
Point(doPosition)
link(onLoad,11222540:doExecute,[])
link(FileName,10486241:Result,[(1168,380)(1145,380)(1145,444)(1028,444)])
}
Add(Edit,7059904,322,301)
{
Left=119
Top=19
Width=230
Text=""
link(onChange,3591058:doOpen,[])
}
Add(StrCat,10486241,1022,399)
{
Str2="immo OFF"
link(onStrCat,10169625:doConvert,[(1070,405)(1070,412)])
link(Str1,15173515:Var,[])
}
Add(LineBreak,11388143,322,350)
{
Type=1
link(Data,7059904:Text,[])
Primary=[15173515,700,7]
}
Add(LineBreak,9365812,749,35)
{
Caption="on"
Primary=[4939829,-112,329]
}
Add(LineBreak,6276383,532,287)
{
Caption="clear"
link(Out,6805200:doClear,[])
Primary=[5775976,-203,-168]
}
Add(Hub,8722659,224,301)
{
InCount=2
OutCount=1
link(onEvent1,1937952:doExecute,[])
}
Add(CharArray,9324213,903,266)
{
}
Add(LineBreak,9386776,539,371)
{
link(Out,8549543:doReset,[])
Primary=[16744984,-210,-245]
}
Add(BlockFind,6131048,728,518)
{
Delete=0
UserReplace=0
StartBlock="["
EndBlock="]"
Point(doReplaceStr)
link(onSearch,248684:doGetIndex,[(782,524)(782,510)])
link(onEndSearch,1873054:doText,[(791,531)(791,503)(660,503)(660,440)])
link(Text,13632165:Var1,[(734,327)])
link(Replace,13547347:Value,[(741,485)(762,485)])
}
Add(Memory,13547347,756,427)
{
Default=Integer(1)
}
Add(StrList,248684,805,476)
{
Strings=#8:003D0BF6|
Point(doGetIndex)
Point(onGetIndex)
link(onGetIndex,9452056:doEvent,[])
}
Add(Memo,1873054,686,413)
{
Left=1023
Top=153
Width=457
Height=406
}
Add(IndexToChanel,9452056,854,483)
{
link(onEvent1,5251316:doData,[])
}
Add(DoData,5251316,910,483)
{
Data=String(000D0AF6)
link(onEventData,6131048:doReplaceStr,[(962,489)(962,563)(716,563)(716,531)])
}

карма: 0

0
Ответов: 1925
Рейтинг: 172
#10: 2020-01-03 22:51:17 ЛС | профиль | цитата
Потому что используются визуальные (видимые) элементы - они занимают много памяти. Попробуйте-ка это:
Add(MainForm,2953706,84,84)
{
Position=1
}
Add(FileStream,3591058,343,210)
{
Mode=2
AutoCopy=0
Point(doPosition)
Point(doCopyFromStream)
}
Add(Hub,7672151,217,210)
{
OutCount=5
link(onEvent1,3591058:doOpen,[])
link(onEvent2,7563050:In,[])
link(onEvent3,7228710:doFor,[(259,230)(259,412)])
link(onEvent4,3591058:doClose,[(287,237)(287,223)])
link(onEvent5,5887358:doMessage,[(255,244)(255,678)])
}
Add(DropFile,7368331,161,210)
{
link(onDropFile,7672151:doEvent1,[])
}
Add(Message,5707167,644,518)
{
Message="Замена произведена"
Caption="ОК"
}
Add(Convertor,7177771,490,406)
{
Mode=6
Digits=8
link(onResult,7695569:doCompare,[])
}
Add(DataToFileEx,15470337,441,406)
{
DataSize=4
BigEndian=0
link(onGet,7177771:doConvert,[])
link(Stream,3591058:Stream,[(447,310)(349,310)])
}
Add(If_else,7695569,539,406)
{
Op2=String(003D0BF6)
link(onTrue,7104584:doEvent1,[])
link(onFalse,13499098:doOperation,[(590,419)(590,615)])
AddHint(-32,41,76,13,Op2)
}
Add(Math,6335570,644,406)
{
OpType=1
Op2=4
ResultType=0
link(onResult,15485465:In,[])
link(Op1,13430363:Var,[])
}
Add(GetDataEx,9490686,357,252)
{
link(Data,3591058:Position,[])
}
Add(LineBreak,6470679,371,266)
{
Caption="pos"
Type=1
link(Data,14807262:Var2,[])
Primary=[13430363,273,112]
}
Add(LineBreak,7687455,294,224)
{
Caption="pos"
link(Out,1809828:doWork2,[])
Primary=[15485465,392,182]
}
Add(DoData,13926188,644,455)
{
Data=String(000D0AF6)
link(onEventData,12148725:doConvert,[])
AddHint(-48,37,76,13,Data)
}
Add(Hub,7104584,609,406)
{
OutCount=3
link(onEvent1,6335570:doOperation,[])
link(onEvent2,13926188:doData,[(633,419)(633,461)])
link(onEvent3,5707167:doMessage,[(633,426)(633,524)])
}
Add(Convertor,12148725,686,455)
{
Mode=5
Digits=8
link(onResult,12572938:In,[])
}
Add(LineBreak,2055529,399,413)
{
link(Out,15470337:doPut,[])
Primary=[12572938,329,42]
}
Add(Math,13499098,637,609)
{
OpType=1
Op2=3
ResultType=0
link(onResult,8372668:In,[])
link(Op1,287188:Var,[])
}
Add(GetDataEx,14807262,371,252)
{
Angle=3
link(Data,9490686:Var3,[])
}
Add(LineBreak,8869142,385,266)
{
Caption="pos"
Type=1
link(Data,10305145:Var2,[])
Primary=[287188,252,315]
}
Add(HubEx,1809828,329,224)
{
link(onEvent,3591058:doPosition,[])
}
Add(LineBreak,1926363,294,231)
{
Caption="pos"
link(Out,1809828:doWork3,[(333,237)])
Primary=[8372668,385,378]
}
Add(Hub,15386543,336,406)
{
InCount=2
OutCount=3
link(onEvent1,15470337:doGet,[])
link(onEvent2,12255921:doWork2,[(392,419)(392,503)])
link(onEvent3,6264518:doProcessMessages,[(371,426)(371,552)])
}
Add(LineBreak,2242394,399,266)
{
Caption="pos"
Type=1
link(Data,14392477:Var2,[])
Primary=[2446484,56,-7]
}
Add(GetDataEx,10305145,385,252)
{
Angle=3
link(Data,14807262:Var3,[])
}
Add(Application,6264518,392,546)
{
Wait=1
}
Add(GetDataEx,14392477,399,252)
{
Angle=3
link(Data,10305145:Var3,[])
}
Add(GetDataEx,5130241,350,280)
{
link(Data,3591058:Size,[])
}
Add(For,7228710,287,406)
{
IncludeEnd=1
link(onEvent,15386543:doEvent1,[])
link(End,1149433:Var,[])
}
Add(Message,5887358,280,672)
{
Message="Всё!"
link(onMessage,5773352:doData,[])
}
Add(ProgressBar,10016673,497,490)
{
Left=5
Top=35
Width=380
Smooth=1
Point(doMax)
}
Add(MultiElementEx,10431564,448,490)
{
link(cnt,13369395:Var,[])
link(onEventData,10016673:doPosition,[])
link(cnt1,10016673:doMax,[])
}
BEGIN_SDK
Add(EditMultiEx,5196661,21,21)
{
WorkCount=#6:doData|7:doValue|
EventCount=#11:onEventData|4:cnt1|
DataCount=#3:cnt|3:Op1|
HOffset=70
link(doData,14513411:doData,[(45,27)(45,90)])
link(doValue,8562347:doValue,[(42,34)(42,153)])
}
Add(DoData,14513411,70,84)
{
link(onEventData,5196661:cnt1,[(212,90)(212,34)])
link(Data,5196661:cnt,[(76,52)(97,52)])
}
Add(Memory,8562347,63,147)
{
link(onData,1263160:doOperation,[])
}
Add(Math,1263160,112,147)
{
OpType=8
Op2=1000
ResultType=0
link(onResult,10096636:doCase,[])
}
Add(Case,10096636,161,147)
{
link(onTrue,9465062:doData,[])
}
Add(DoData,9465062,210,154)
{
link(onEventData,5196661:onEventData,[(282,160)(282,27)])
link(Data,8562347:Value,[(216,142)(142,142)(142,191)(69,191)])
}
END_SDK
Add(LineBreak,4068050,399,490)
{
link(Out,10431564:doData,[])
Primary=[7563050,-154,-273]
}
Add(LineBreak,979311,350,294)
{
Caption="cnt"
Type=1
link(Data,5130241:Var2,[])
Primary=[13369395,98,168]
}
Add(LineBreak,13559468,364,294)
{
Caption="cnt"
Type=1
link(Data,5130241:Var3,[(370,285)])
Primary=[1149433,-70,84]
}
Add(DoData,5773352,322,672)
{
Data=Integer(0)
link(onEventData,2586497:In,[])
}
Add(HubEx,12255921,434,497)
{
link(onEvent,10431564:doValue,[])
}
Add(LineBreak,7188552,399,511)
{
link(Out,12255921:doWork3,[(438,517)])
Primary=[2586497,-35,161]
}
Просто киньте нужный файл на форму, кнопку даже трогать не надо. Он ищет непосредственно в файловых данных, считывая за раз по 4 байта и проверяя их на совпадение.
Проверьте, работает ли. Вроде должно.

Редактировалось 1 раз(а), последний 2020-01-03 23:40:44
карма: 9
0
Ответов: 9906
Рейтинг: 351
#11: 2020-01-03 23:16:57 ЛС | профиль | цитата
3042, вроде большенький уже....
А кольцеваниями -- увлекаешься.
Новичков плохому учишь
Ай-я-яй

Редактировалось 1 раз(а), последний 2020-01-03 23:18:25
карма: 9

0
Ответов: 188
Рейтинг: 2
#12: 2020-01-03 23:29:14 ЛС | профиль | цитата
3042 писал(а):
Просто киньте нужный файл на форму, кнопку даже трогать не надо.

ничего не происходит. И кнопок никаких нет! я кстати выше ссылку на файл в облаке дал. там бинарник неопасный

я сойду с ума скоро.

Редактировалось 1 раз(а), последний 2020-01-03 23:30:53
карма: 0

0
Ответов: 1925
Рейтинг: 172
#13: 2020-01-03 23:42:04 ЛС | профиль | цитата
Пардон, ошибся немного. Не учёл, что необязательно позиция блока кратна четырём. Уже исправил в посте выше схему.

Galkov, на скорую руку накидывал, но и это исправил. Скопируйте схему заново.
карма: 9
0
Ответов: 188
Рейтинг: 2
#14: 2020-01-03 23:49:27 ЛС | профиль | цитата
да работает огромное спасибо

можно еще наберусь наглости?))вот если бы описание как взаимодействуют компоненты и что зачем и почему следует вообще супер было бы)))
Вы просто мега крутой

--- Добавлено в 2020-01-03 23:52:08

Схема изменяет тот файл который на него кинули. Как сделать чтобы он с другим именем сохранял чтобы всегда оригинальный файл оставался без изменений!

Редактировалось 1 раз(а), последний 2020-01-03 23:52:08
карма: 0

0
Ответов: 8887
Рейтинг: 823
#15: 2020-01-04 00:03:14 ЛС | профиль | цитата
3042,
Пословица писал(а):
Назвался груздем - полезай в кузовок!

карма: 19

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)