![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| BLACK_KOT |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 305 Регистрация: 20.12.2006 Репутация: нет Всего: -1 |
когда на форму кидаешь картинку делфи сохраняет её в текстовом виде в файле формы .dfm примерно так:
моя прога работает с файлами .dfm , извлекая от туда нужное. например находит описание кнопки, её размеры, свойства, события и генерирует такуюже, только на winapi. как мне из этого текста собрать картинку? Это сообщение отредактировал(а) BLACK_KOT - 29.9.2010, 13:07 -------------------- .. я - демо версия Бога от Microsoft.. |
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
|
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
BLACK_KOT, универсального способа открытия любого dfm файла нет. Каждый компонент может сериализоваться особым способом.
Конкретно для битмапа имеем 07 - длина строки определяющая название метакласса, затем сама строка названия ASCII - "TBitmap", затем вероятно размер битмапа в байтах hex - 32 25 00 00 = 9522, после чего идет "BM" сигнатура битмапа. Фактически после размера битмапа в хексе все байты битмапа, которые нужно сконвертировать из текстового представления в бинарное и сохранить на диске. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| BLACK_KOT |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 305 Регистрация: 20.12.2006 Репутация: нет Всего: -1 |
всё ясно кроме этого. как мне сконвертировать из текстового представления в бинарное? вот конкретная картинка: (целиком)
тоесть я должен скопировать: 424D7E000000000000003E000000280000001000 0000100000000100010000000000400000000000000000000000020000000200 000000000000FFFFFF00FEBF0000F80F746FF0076772E0036869C0016170C001 000080000D0080000C018000000080000000C0010000C0010000E0030000F007 FFFFF80FFFFFFFFF0000 и конвертировать этот текст в бинарник. так? подскажите как это сделать -------------------- .. я - демо версия Бога от Microsoft.. |
||||
|
|||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
Любой объект из dfm можно сконвертить с помощью ObjectTextToBinary.
И наоборот - ObjectBinaryToText превратит объект, сохранённый в стрим, в его текстовое dfm представление. Ну, а если вручную, то поочерёдно каждую пару хекс символов поочереди перегоняешь в байт и пишешь в стрим. Добавлено через 3 минуты и 46 секунд А смысл расковыривать dfm ручками? Конвертни его целиком в бинарник, да работай с готовым бинарным стримом. Добавлено через 11 минут и 35 секунд Если охота ворочать бинарный стрим ручками, то можешь посмотреть, как это делает TReader - он просто разбирает его на составляющие, вытягивая проперти, классы, имена, значения, стримы и т.д. Собственно его сама дельфя и юзает. Это гораздо удобне, чем парсить текст dfm, в котором может быть что угодно, в том числе и не предусмотренное. Тогда твой код собъётся нафиг. А, парся бинарный стрим, можно просто проскимнуть неизвестные вещи. Там всё пишется единообразно. Либо пишется фиксированное простое значение, типа integer'a Либо 2 байта длина, а потом само тело значения, Либо идёт код начала списка, перечисление значения, код завершения списка. |
|||
|
||||
| BLACK_KOT |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 305 Регистрация: 20.12.2006 Репутация: нет Всего: -1 |
спасибо, Snowy
-------------------- .. я - демо версия Бога от Microsoft.. |
|||
|
||||
![]()
|
| Правила форума "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. |