|
0 / 0 / 0
Регистрация: 24.06.2011
Сообщений: 15
|
|||||||||||
Hex-Editor: как осуществить поиск по файлу02.12.2011, 20:12. Показов 8385. Ответов 10
Метки нет (Все метки)
Вот такая вот незадача возникла.
Необходимо реализовать на C# 16-ричный редактор. Скриншот моей программы ниже Загружается файл, читается и добавляется в ListBox Для работы реализован класс HexItem
Когда я открываю файл, то читаю данные следующим образом - Открыл файл FIleStream-om, ставлю указатель на начало файла, и в цикле читаю по 16 байт, пока не достигну конца файла. Вот код функции
Задание: вводится адрес в 16-ричном формате, и если есть строка с таким адресом в файле - то мы скроллим список до этой строки и выделяем ее. Тут-то я и столкнулся с проблемой. Ведь данные я читаю как массив байтов, из которых, просто потом строю строку с их 16-ричным представлением, которую и вывожу в ЛистБокс. А данные для поиска вводятся в строке еще и не в байтовых значения а в HEX. Нужен совет, каким образом добиться поиска по файлу. Может что-то типа такого: 1. Строка читается из т.п. 2. Строка конвертируется в массив байт (перепробовал несколько методов) что-то у меня не вышло.. 3. В цикле происходит поиск по списку, пока адрес не совпадет с введенным... И еще такая трабла, ведь пользователь может ввести и несколько значений подряд, как тогда быть, ведь надо еще и определить правильность ввода данных. В общем ОЧЕНЬ НУЖНА ПОМОЩЬ!!! ВСЕМ ЗАРАНЕЕ СПАСИБО!!!!!!!!!!!!
0
|
|||||||||||
| 02.12.2011, 20:12 | |
|
Ответы с готовыми решениями:
10
Осуществить поиск заданных слов по файлу Осуществить поиск по файлу с возможностью редактирования данных
|
|
162 / 158 / 19
Регистрация: 22.11.2011
Сообщений: 371
|
|
| 02.12.2011, 21:05 | |
|
Проблема в общем-то вся в том, что конечные данные находятся в ListBox, по которому крайне трудно ориентироваться и что-либо делать. При загрузке файла я бы посоветовал загружать их в свою структуру, с которой потом можно будет производить все необходимые действия, а вот уже массив этих структур отображать в ListBox, дабы последний не был основным "полигоном" для действий.
0
|
|
|
0 / 0 / 0
Регистрация: 24.06.2011
Сообщений: 15
|
|
| 03.12.2011, 13:33 [ТС] | |
|
Так оно так и есть: этот функционал можно реализовать за счет класса HexItem, который описан выше. Я вот не могу разобраться как правильно делать поиск. Ведь данные читаются в виде байт, отображаются в виде Hex, и данные для поиска тоже необходимо вводить в Hex.
А метод .GetBytes как-то у меня некорректно работает.
0
|
|
|
162 / 158 / 19
Регистрация: 22.11.2011
Сообщений: 371
|
||
| 03.12.2011, 13:38 | ||
|
Про то, как отображаются данные лучше забыть вообще. Пользователь видит то, что должен, а программе-то с этим работать надо.
0
|
||
|
0 / 0 / 0
Регистрация: 24.06.2011
Сообщений: 15
|
||||||
| 03.12.2011, 14:45 [ТС] | ||||||
|
Сейчас, к сожалению, точный листинг привести не смогу. Но как-то так
Допустим нам нужно перейти по адресу (возьму адрес со скриншота) 2с2e45. Значит мы получаем текст из текстового поля в меню
0
|
||||||
|
162 / 158 / 19
Регистрация: 22.11.2011
Сообщений: 371
|
||||||
| 03.12.2011, 14:51 | ||||||
1
|
||||||
|
0 / 0 / 0
Регистрация: 24.06.2011
Сообщений: 15
|
|
| 03.12.2011, 14:59 [ТС] | |
|
Ааааа.. Я смотрел на МСДН-овский пример, не на тот метод, который оказывается нужен был.
Этот метод возвращает что-то в случае неудачи? Чтобы знать вдруг пользователь неправильно ввел адрес. И еще вопрос такой: у меня в полях класс HexItem данные об адресе хранятся в переменной Offset типа long. Ее тоже нужно преобразовывать к байтам?
0
|
|
|
162 / 158 / 19
Регистрация: 22.11.2011
Сообщений: 371
|
|
| 03.12.2011, 15:36 | |
|
Неудачи тут быть не может. 2 Возможных исключения:
ArgumentNullException, если null передадите в качестве текста EncoderFallbackException, если какой-нибудь символ не получится перевести в байт(ы), но трудно сказать как Вы можете получить такое ![]() Что касается long... Зачем тогда вообще пляски с приведением введённого пользователем адреса к массиву байт? Известно ведь, что первая строка имеет адрес 00000000, вторая 00000010, ну и т.д. Вам тогда введённое пользователем к long привести и найти HexItem по Offset.
1
|
|
|
0 / 0 / 0
Регистрация: 24.06.2011
Сообщений: 15
|
|
| 03.12.2011, 16:22 [ТС] | |
|
Спасибо!
А вот что насчет вопроса по long: просто в задании требуется, чтобы не только по адресу был переход, а задан вариант: введен адрес и следующие за ним в строке байты....
0
|
|
|
0 / 0 / 0
Регистрация: 24.06.2011
Сообщений: 15
|
||||||
| 06.12.2011, 14:51 [ТС] | ||||||
|
Возникла проблема с коррректным отображением текстового значения байт, причем если выводить эти значения с помощью MessageBox - все выводится на ура. А вот при добавлении этой строки в список - выводится мало что. Нужно, как пример отредактировать с помощью моего просмотрищика exe файл, в котором есть строка Hello World. Это строка находится по тексту, мы на нее переходим, но вместо слова Hello World три жалких иероглифа((((. Попытка вывести это через MessageBox - все ок.
Судя по всему дело в неправльной кодировке, и необходимо перевести строку в ascii кодировку, но как-то не могу разорбраться как это сделать. Вот листинг вывода строки в listbox
Всем спасибо за внимание проявленное к моей теме!
0
|
||||||
|
6 / 6 / 1
Регистрация: 01.05.2012
Сообщений: 17
|
|
| 01.05.2012, 11:40 | |
|
Мой контрольчик посмотрите, создал как раз для обучения и пойдёт
http://simplehexviewcontrol.codeplex.com/
0
|
|
| 01.05.2012, 11:40 | |
|
Помогаю со студенческими работами здесь
11
Создать программу-Hex Editor Как осуществить в дельфи осуществить поиск по таблице из другой формы? Как обратиться к mif/hex файлу в FPGA?
В WYSIWYG editor SPAW2 ява перекодирует цвет с HEX(HTML) на RGB. Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
|
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут.
https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc
Первый документ красиво выглядит, но без схемы.
Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
|
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере".
Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
|
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти".
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
В качестве источника данных. . .
|
|
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер
Написал заготовку:
dotnet new console --aot -o UrlHandler
var items = args. Split(":");
var tag = items;
var id = items;
var executable = args;. . .
|
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
|
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений.
9TO2GP2bpX4
a42b81fb172ffc12ca589c7898261ccb/
https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/
Слева синяя линия -. . .
|
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. .
Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
|