Tad, что, так хочется три пиастра?)) Подскажи лучше, если знаешь как.)
Этот топик читают: Гость
Ответов: 24
Рейтинг: 0
|
|||
карма: 0 |
|
Ответов: 16884
Рейтинг: 1239
|
|||
Erik писал(а): ПодскажиНа ещё одну - используй файловые потоки. Но, судя по всему, тебе хочется получить готовую программу - а это в КуплюПродам. |
|||
карма: 25 |
|
Ответов: 24
Рейтинг: 0
|
|||
Тут вот в чём дело, у меня не получается загрузить именно hex-файл, с текстовым файлом проблем нет. Если же загружать файл компонентом DataToFile, как в примере из справки, то например 40-мегабайтный файл загружаться будет не реально долго.
|
|||
карма: 0 |
|
Ответов: 8926
Рейтинг: 823
|
|||
Erik, а что вы имеете ввиду под термином "hex-файл"?
|
|||
карма: 19 |
|
Ответов: 24
Рейтинг: 0
|
|||
hex-файл - бинарник, не текстовый файл. Ну например вот известный hex-редактор 010 Editor, http://s42.radikal.ru/i097/1506/9b/fe0aab737b10.jpg, вот видите там, File -> New -> New Hex File, вот я тоже самое имею ввиду.
Вот например такая схема, всё просто как на ладони, но не работает. code_35813.txt |
|||
карма: 0 |
| ||
файлы: 1 | code_35813.txt [1.1KB] [260] |
Ответов: 8926
Рейтинг: 823
|
|||
Erik, полагаю, что все, любые, файлы на вашем (и на моём) компьютере -- суть "бинарники", т. к. хранятся на диске и существуют в ОЗУ (памяти) в виде двух состояний "0" и "1" ячеек. Восемь ячеек составляют "байт" (первые ПК были 8-ми разрядными), который имеет 256 состояний от "00000000" до "11111111", смотреть и понимать эти ноли и единицы не очень удобно, а алфавита из 256 букв нет, исключительно для удобства при отображении байта на экране его разделяют пополам и ОТОБРАЖАЮТ парой символов "0--9, A, B, C, D, E, F".
Конечно, эти символы имеют свои коды в принятой таблице кодов для байта и можно сохранить любой файл их используя, при этом размер файла увеличится ровно в два раза и будет не понятен для машины без обратного преобразования. |
|||
карма: 19 |
|
Ответов: 4630
Рейтинг: 749
|
|||
карма: 26 |
| ||
файлы: 1 | code_35814.txt [581B] [480] |
Ответов: 24
Рейтинг: 0
|
|||
code_35814.txt Да, смотри, если это текстовый файл, то всё отлично работает http://s008.radikal.ru/i303/1506/74/70c6a1350b58.jpg А если это hex-файл 123.sf2 то этот код работает так - никак. http://s020.radikal.ru/i713/1506/95/e3a501bfa43b.jpg Файл 123.sf2 http://rghost.ru/7rDTnLKcB Упс, вот так работает
|
|||
карма: 0 |
|
Ответов: 4630
Рейтинг: 749
|
|||
Erik писал(а): то этот код работает так - никакНо для поиска/замены тебе это не нужно - на выходе со StreamConvertor получается строка содержащая целый файл без каких-либо потерь. Просто не надо ожидать увидеть её в RichEdit. Подавай её сразу на обработку. Erik писал(а): вот так работаетДля бинарного файла это не подходит (разве только для отображения и то необходимость сомнительна). |
|||
карма: 26 |
|
Ответов: 24
Рейтинг: 0
|
|||
Подавай её сразу на обработку Ну хорошо, а вот такой вариант, что я не правильно делаю?
|
|||
карма: 0 |
| ||
файлы: 1 | code_35815.txt [626B] [239] |
Ответов: 4630
Рейтинг: 749
|
|||
Последовательность действий неправильная.
code_35816.txt Кстати, почитай справку по DataToFile (св-во Type). Перечисленные там режимы пишут строки в файл со всякими добавлениями. То-есть, со стандартным DataToFile невозможно сразу получить идентичный конечный файл. Можно результат сконвертировать обратно в Stream и сделать FileStream.doCopyFromStream. Можно извернуться, поставив Type=dtAnsiString и после записи уменьшить размер файла на один байт. Но и этого в стандартной поставке нет. Можно использовать модифицированный DataToFile |
|||
карма: 26 |
| ||
файлы: 1 | code_35816.txt [708B] [331] |
Ответов: 24
Рейтинг: 0
|
|||
Ну вот так пробую, тоже не работает.
code_35817.txt Можно использовать модифицированный DataToFile А если использовать модифицированный DataToFile, то какой режим нужно ставить? |
|||
карма: 0 |
| ||
файлы: 1 | code_35817.txt [693B] [231] |
Ответов: 4630
Рейтинг: 749
|
|||
Внимательно смотри какие компоненты какие данные выдают. Диалог в поток выдаёт имя файла (а выход с StrToStream теряется). Для doCopyFromStream нужно в потоке передать Stream. Тогда имя файла можно только подать на верхнюю точку, для чего оно сначала сохраняется в Memory.
code_35818.txt Erik писал(а): какой режим нужно ставить? |
|||
карма: 26 |
| ||
файлы: 1 | code_35818.txt [959B] [297] |
Ответов: 24
Рейтинг: 0
|
|||
Netspirit, огромное тебе спасибо! Без твоей помощи у меня бы ничего не получилось. Сейчас схемка приобрела вот такой вид.
code_35819.txt И вот последний момент. В компоненте Replace DestStr у меня стоит 00, поэтому у меня +L заменяется также двумя символами 00, что в HEX 3030, а мне нужно, чтобы +L заменялся в HEX 0000, если я в Replace DestStr никаких символов не указываю, то так тоже не работает, вот это последнее в чём мне нужна помощь. |
|||
карма: 0 |
| ||
файлы: 1 | code_35819.txt [2.9KB] [234] |
Ответов: 824
Рейтинг: 138
|
|||
карма: 1 |
| ||
файлы: 1 | code_35820.txt [1.7KB] [317] |