Вверх ↑
Этот топик читают: Гость
Ответов: 24
Рейтинг: 0
#1: 2015-05-29 10:50:44 ЛС | профиль | цитата
Есть файл вида:

hhSFkh +10 ouhhjk -10 jvuj
yuuuu +10 iyg-bhjj-10-10jooj
546556 GFgg shdr-10ou+10
uuuyyy+10uby
-10buvu i9io12+10

Необходимо заменить +10 и -10 на пробелы но только после сигнатуры shdr, до неё +10 и -10 трогать нельзя. У меня получается найти сигнатуру shdr и заменить +10 и -10 во всём файле, но вот заменить именно после сигнатуры shdr не получается, подскажите как решить задачу. Это файл sf2.
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#2: 2015-05-29 12:32:40 ЛС | профиль | цитата
Где это, которое
Erik писал(а):
У меня получается найти сигнатуру shdr

Схема где ?
Erik писал(а):
Необходимо заменить +10 и -10 на пробелы но только после сигнатуры shdr
На сколько пробелов ?
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 1343
Рейтинг: 31
#3: 2015-05-29 12:47:04 ЛС | профиль | цитата
вот, доделать ток вычисление..

code_35752.txt
карма: 2

0
файлы: 1code_35752.txt [2.2KB] [456]
Ответов: 2059
Рейтинг: 132
#4: 2015-05-29 13:05:38 ЛС | профиль | цитата
Erik
В MultiReplace не удаётся вставить пробел, по этому два Replace.
На IC получится 2-3 строчки.

Add(MainForm,2953706,21,105)
{
Height=518
}
Add(Memory,13532481,266,210)
{
Default=String(shdr)
}
Add(Button,10259420,70,231)
{
Left=15
Top=15
link(onClick,9760371:doSearch,[(160,237)(160,272)])
}
Add(Memo,12747753,539,406)
{
Left=130
Top=215
Width=225
Height=170
}
Add(Memo,12060446,208,167)
{
Left=125
Top=15
Width=225
Height=170
Strings=#26:hhSFkh +10 ouhhjk -10 jvuj|28:yuuuu +10 iyg-bhjj-10-10jooj|24:546556 GFgg shdr-10ou+10|13:uuuyyy+10uby |17:-10buvu i9io12+10|
}
Add(Position,9760371,217,266)
{
link(onSearch,1666015:doEvent1,[(271,272)(271,279)])
link(Str,5402306:Var2,[(223,239)(214,239)])
link(Target,13532481:Value,[(230,254)(272,254)])
}
Add(GetDataEx,5402306,208,224)
{
link(Data,16107030:Var2,[])
}
Add(Length,2571579,350,273)
{
link(onLength,10626147:doOperation,[])
link(Str,16107030:Var3,[(356,222)])
}
Add(Hub,1666015,294,273)
{
OutCount=4
link(onEvent1,2571579:doLength,[])
link(onEvent2,3993741:doOperation,[(322,286)(322,321)])
link(onEvent3,1679079:doCopy,[(320,293)(320,328)(254,328)(254,363)])
link(onEvent4,5729566:doCopy,[(320,300)(320,356)(198,356)(198,412)])
}
Add(Math,10626147,420,273)
{
OpType=1
link(onResult,3980877:doOperation,[])
link(Op2,14165964:Var3,[(433,261)(329,261)(329,313)])
}
Add(GetDataEx,16107030,208,217)
{
link(Data,12060446:Text,[])
}
Add(GetDataEx,14165964,217,308)
{
link(Data,9760371:Position,[])
}
Add(Math,3980877,476,273)
{
Op2=1
}
Add(Replace,6349976,308,406)
{
SubStr="-10"
DestStr=" "
link(onReplace,13680865:doReplace,[])
}
Add(Replace,13680865,371,406)
{
SubStr="+10"
DestStr=" "
link(onReplace,1466735:doStrCat,[])
}
Add(Copy,5729566,210,406)
{
link(onCopy,6349976:doReplace,[])
link(Str,11311020:Var2,[])
link(Position,8763828:Var2,[])
link(Count,3980877:Result,[(230,356)(482,356)])
}
Add(StrCat,1466735,441,406)
{
link(onStrCat,12747753:doAdd,[])
link(Str1,6657274:Value,[])
}
Add(Copy,1679079,266,357)
{
Position=1
link(onCopy,6657274:doValue,[(370,363)(370,370)])
link(Str,11311020:Var3,[(272,345)(246,345)(246,362)])
link(Count,3993741:Result,[(286,352)(342,352)])
}
Add(GetDataEx,8763828,217,329)
{
link(Data,14165964:Var2,[])
}
Add(Memory,6657274,441,364)
{
}
Add(GetDataEx,11311020,210,357)
{
link(Data,5402306:Var3,[(216,318)(223,318)(223,229)])
}
Add(Math,3993741,336,315)
{
OpType=1
Op2=1
link(Op1,8763828:Var3,[(342,303)(284,303)(284,334)])
}


карма: 6

0
файлы: 1code_35753.txt [1.6KB] [466]
Ответов: 16884
Рейтинг: 1239
#5: 2015-05-29 13:09:28 ЛС | профиль | цитата
Rysik, вот
code_35754.txt без вычислений и ничего доделывать не надо.
flint2 писал(а):
На IC получится 2-3 строчки.
Даже я, которого упрекают в излишней любви к IC, здесь бы его (IC) не применял.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
файлы: 1code_35754.txt [655B] [350]
Ответов: 24
Рейтинг: 0
#6: 2015-05-29 13:23:03 ЛС | профиль | цитата
Ребята, я уточню, это hex файл, его структуру нужно сохранить, всё что до shdr трогать нельзя, а вот после shdr +10 и -10 нужно заменить, каждое на три пробела, сколько бы их не встретилось этих +10 и -10 в файле.
карма: 0

0
Ответов: 2059
Рейтинг: 132
#7: 2015-05-29 13:24:11 ЛС | профиль | цитата

Erik, Так?
code_35755.txt
Tad,
здесь бы его (IC) не применял.

Задача немного сложнее и квадратиков стало быть больше.
карма: 6

0
файлы: 1code_35755.txt [2.3KB] [546]
Ответов: 8926
Рейтинг: 823
#8: 2015-05-29 13:25:19 ЛС | профиль | цитата
"А я угадаю эту мелодию с первой ноты!"
Erik, правильно заданый вопрос содержит 90% ответа!
Erik писал(а):
..только после сигнатуры shdr..
Если ваш ключ раположен в начале файла заменять всё?
Если ваш ключ раположен в начале строки заменять всё до окончания строки?
Заменить непосредственно примыкающий к "сигнатуре" и только одно сочетание символов "+-10"?
Между "сигнатурой" и заменяемым сочетанием символов могут быть другие символы и сколько?
Или продолжим гадать на кофейной гуще?
карма: 19

0
Ответов: 2059
Рейтинг: 132
#9: 2015-05-29 13:29:53 ЛС | профиль | цитата
ЛеонидЛеонид,
Если ваш ключ раположен в начале файла заменять всё?
Если ваш ключ раположен в начале строки заменять всё до окончания строки?
Заменить непосредственно примыкающий к "сигнатуре" и только одно сочетание символов "+-10"?
Между "сигнатурой" и заменяемым сочетанием символов могут быть другие символы и сколько?

Первое, что я хотел написать
карма: 6

0
Ответов: 4630
Рейтинг: 749
#10: 2015-05-29 13:36:51 ЛС | профиль | цитата
Не знаю, у меня не возникло вопросов, как у Леонида - что может быть непонятного в "заменить всё после shdr"? С точки зрения програмиста - Replace, начиная с указанной позиции.
карма: 26

0
Ответов: 2059
Рейтинг: 132
#11: 2015-05-29 13:43:42 ЛС | профиль | цитата
Netspirit
С точки зрения програмиста - Replace, начиная с указанной позиции

А до какой? Будут ли ещё вхождения shdr?
От этого и зависит как делать.
карма: 6

0
Ответов: 16884
Рейтинг: 1239
#12: 2015-05-29 13:48:58 ЛС | профиль | цитата
После
Erik писал(а):
Ребята, я уточню, это hex файл, его структуру нужно сохранить
т.е.

686853466B68202B3130206F7568686A
6B202D3130206A76756A797575757520
2B3130206979672D62686A6A2D31302D
31306A6F6F6A35343635353620474667
6720736864722D31306F752B31307575
757979792B31307562792D3130627576
Значит всё, написанное и созданное выше теряет смысл и идёт в мусор.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 4630
Рейтинг: 749
#13: 2015-05-29 13:54:07 ЛС | профиль | цитата
flint2 писал(а):
А до какой?
Всё. Зачем нужно знать "до какой"?
flint2 писал(а):
Будут ли ещё вхождения shdr?
С постановки вопроса выходит, что нужно заменить после первого вхождения и до конца. Автор либо не учел повторных вхождений, либо их наличие не играет роли.

Tad писал(а):
всё, написанное и созданное выше идёт в мусор.
Если ты понял, что такое "hex файл"... В приведенном в первом посте куске я "hex" не увидел.

Если имелось в виду "двоичный", "нетекстовый" формат, то замена 3-х символов на три другие "сохранит структуру".
карма: 26

0
Ответов: 2059
Рейтинг: 132
#14: 2015-05-29 13:54:14 ЛС | профиль | цитата
Тогда ТЗ не корректно!
Нельзя заменять пробелами. нужно ещё 2 байта вставлять.
Какие? Нули 20, 00, 00?
Netspirit, Я так и сделал
(По поводу от забора и до обеда.)
карма: 6

0
Ответов: 24
Рейтинг: 0
#15: 2015-05-29 14:03:41 ЛС | профиль | цитата
Ребята, спасибо за отклик.

Netspirit

С постановки вопроса выходит, что нужно заменить после первого вхождения и до конца


Вы совершенно правы.

flint2

Ваша схема работает, но заменяла +10 или -10 на один пробел, в элементах Replace в каждом добавил по два пробела, теперь то что нужно.



http://itmages.ru/image/view/2592466/c7ce1b4e
карма: 0

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