![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| h1tter |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 25.6.2006 Репутация: нет Всего: нет |
Помогите справиться с почти ламерской задачкой
Как преобразовать файл в строку(Файл бинарный), пробовал отображать файл в память но запутался с указателями.Вот:
Если можно помогите заставить работать этот код, а лучше предложите свой! Весь процесс должен быть быстрым(Как можно быстрее!), |
|||
|
||||
| Poseidon |
|
|||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 53 Всего: 133 |
Ничего не понял. Ты хочешь bin перевести в string? Зачем? Не могу понять причин постановки этой задачи
-------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
|||
|
||||
| Yanis |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2937 Регистрация: 9.2.2004 Где: Москва Репутация: 72 Всего: 111 |
h1tter
А что тебе с этим бинарным файлом делать то надо? Загнать всё в строку не получится потому, что в файле может встретиться байт $00 и тогда строка обрежется на этой позиции. НО для текстовых мона и так:
|
|||
|
||||
| Matematik |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1027 Регистрация: 11.3.2006 Репутация: 17 Всего: 50 |
Мне казалось в string можно загнать все что угодно
Делаю я примерно так
Это сообщение отредактировал(а) Matematik - 2.7.2006, 22:42 |
|||
|
||||
| Mechanic |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 228 Регистрация: 5.5.2006 Где: Kharkov, Ukraine Репутация: 6 Всего: 7 |
Весь прикол в PChar, ить он не понимает #0 внутри строки. Насколько я понял по вот этому ('OMON-File Scan!'
Ну раз файл маппится в память, то нужно просто тип указателя нужный создать. Что за строковые функи юзятся? Может быть, вовсе не обязательно данные как строку воспринимать? Если типа RScan, то это всё равно PChar, и опять тот же #0 в качестве гемора.. Добавлено @ 22:50 Медленнее, чем с мапом, но вполне жизнеспособно, даже с #0 - контентом. Чего не скажешь о TStringStream.DataString.. --------------------
Tell me the extensions of the files You backup and I'll tell You who You are.. ©Mch |
|||
|
||||
| h1tter |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 25.6.2006 Репутация: нет Всего: нет |
Так вот самая х*ень заключается в энтом #0, он мне все портит, а в файле как-раз этих #0. Просто есть файл (Любой:Бинарный, рисунок,и.т.д..) а на выходе должна быть строка |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
h1tter, я так понял эта задача к программе антивируса.
Чтобы переделать bin в делфийскую строку, придется сделать новый файл размером старый + 9 байт, первые 4 байта счетчик ссылок, можно установить в 1, вторые 4 байта - чистый размер строки, последний байт будет #0. После этого можно его мапить. Например если адрес первого байта отобразить в указатель p, то получим
Но это все имеет смысл только если файлы больше чем могут поместится в ОЗУ, иначе не нужно ни каких отображений. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| h1tter |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 25.6.2006 Репутация: нет Всего: нет |
Ok! [/code] Можно пример показать? А если использовать TMemoryStream и его свойство Memory, но тогда как? |
|||
|
||||
| Alexeis |
|
||||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Уточните задачу - файл, помещается в память или нет. Если помещается, то смысла в мапинге нет. Судя по прозьбе примера с TMemoryStrea, все таки пытаетесь загрузить файл в память целиком. Добавлено @ 14:38
Это сообщение отредактировал(а) alexeis1 - 4.7.2006, 14:39 Присоединённый файл ( Кол-во скачиваний: 16 )
1.zip 0,23 Kb-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
||||
|
|||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |