|
|
|
Поиск и Замена последовательности байт в бинарном файле
|
|||
|---|---|---|---|
|
#18+
Прошу знатоков сильно не пинать новичка, а помочь отладить следующий код: Имеем файл " file.bin " длиной 64 байта следующего тестового содержания(первая строчка-адрес): 000102030405060708090A0B0C0D0E0FFFFFFF003132333400FFFF0031323300FFFFFFFFFFFFFF003132333400FFFFFF Программа ищет определенные последовательности байт (массив " Poisk ") и заменяет их на другие (массив " Zamena ") Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. Код был позаимствован вот от сюда: https://groups.google.com/forum/#!topic/fido7.ru.delphi.chainik/_U4HgdMDwpo , Но вместо FileMapping -га была сделана попытка применить TMemoryStream Что-то видимо нужно немного подправить в выделенном куске кода , у самого ума видимо еще не хватает и знаний!... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2017, 16:34:55 |
|
||
|
Поиск и Замена последовательности байт в бинарном файле
|
|||
|---|---|---|---|
|
#18+
Bellic Код: pascal 1. Заменить на PByte или PAnsiChar. Это однозначно. Если не поможет, тогда выкладывайте сюда что было в файле и что стало ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2017, 16:42:46 |
|
||
|
Поиск и Замена последовательности байт в бинарном файле
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_Bellic Код: pascal 1. Заменить на PByte или PAnsiChar. Это однозначно. Если не поможет, тогда выкладывайте сюда что было в файле и что стало Изначально (С тем кодом, что приведен выше) файл вообще не менялся... Сейчас попробую заменить P: PChar на P: PByte или P: PAnsiChar ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2017, 16:48:18 |
|
||
|
Поиск и Замена последовательности байт в бинарном файле
|
|||
|---|---|---|---|
|
#18+
Заменил: Код: pascal 1. 2. 3. 4. 5. И все сработало, как было задумано!!! (Результат на фото прилагается...) Осталось проверить - как будет работать, если Искомая последовательность будет в конце файла: .... FF FF 00 31 32 33 34 00 ... проверил и в конце файла... Замечательно! Спасибо Огромнейшее, _Vasilisk_ !!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2017, 17:05:35 |
|
||
|
Поиск и Замена последовательности байт в бинарном файле
|
|||
|---|---|---|---|
|
#18+
BellicЗаменил: Код: pascal 1. 2. 3. 4. 5. У Вас юникодная делфи. Соответственно Код: pascal 1. . А значит Код: pascal 1. смещало указатель не на k байт, а на 2*k ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2017, 17:46:28 |
|
||
|
Поиск и Замена последовательности байт в бинарном файле
|
|||
|---|---|---|---|
|
#18+
В следующей строке: Код: pascal 1. видимо тоже нужно было поменять Код: pascal 1. на Код: pascal 1. Хотя оно и так все работало, но поменял...) ЗЫ: При переносе изменений в ОСНОВНОЙ проект - почему-то опять поиск-замена перестали работать..((( НО это уже другая история - буду отлаживать все пошагово, с проверками переменных ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2017, 18:58:52 |
|
||
|
Поиск и Замена последовательности байт в бинарном файле
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_ , привет! Хотел в Личке пообщаться, но похоже ее тут не предусмотрено?..((( ... Маленький вопросик (правда ОффТопик..) Отлаживаю и прилизываю свою программу... В ней есть временное Disabled элементов на форме на время выполнения отдельных задач с последующим Enabled. В общем - эти Enabled-Disabled иногда неправильно срабатывают как надо... Нет ли у тебя готового кода, чтоб его можно было вставить в событие OnMouseMove нужных элементов, чтоб при пролете мышкой над ними как-то индицировалось состояние данного элемента? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2017, 10:35:06 |
|
||
|
Поиск и Замена последовательности байт в бинарном файле
|
|||
|---|---|---|---|
|
#18+
Bellic Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Вот это - зачем ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2017, 10:51:45 |
|
||
|
Поиск и Замена последовательности байт в бинарном файле
|
|||
|---|---|---|---|
|
#18+
schiВот это - зачем ? Не обращаем на мелочи внимание! Приведенный в начале текст программы - это всего лишь минимизированный " кусочек " из огромного проекта, сосредоточенный лишь на теме Топика!!! А в данной процедуре: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Были вырезаны дополнительные проверки на корректность Пути и Имени файла и прочие мелочи! ... Т.е. в конкретном случае в процедуре просто получаем FullFileName schi , я ответил на Ваш вопрос? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2017, 11:01:39 |
|
||
|
Поиск и Замена последовательности байт в бинарном файле
|
|||
|---|---|---|---|
|
#18+
Кстати - алгоритм отлично работает на больших двоичных файлах! Огромный респект _Vasilisk_ !!! (И привет Харькову! - я 4 года там жил и учился...) В результате время обработки одного и того же БИН-файла размером примерно 9 Мбайт сократилось с 24-х часов до 2-х минут!...))) Естественно - ищется и заменяется не одна "последовательность байт"! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2017, 11:07:22 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39554151&tid=2041575]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
426ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
2ms |
| others: | 204ms |
| total: | 716ms |

| 0 / 0 |
