|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
29.04.2012, 15:17 | #1 |
Форумчанин
Регистрация: 09.07.2011
Сообщений: 185
|
Сравнивание двух файлов (bmp)
Доброго времени суток , сравниваю два bmp файла по байтно,
первая картинка берется уже из готовой базы вторая скриншотом с добавлением во временный bmp . Сравнение делаю с помощью этого кода s:=TmemoryStream.create; f:=TmemoryStream.create; s.LoadFromFile(card[i]); f.LoadFromFile('c:/1.bmp'); if comparemem(s.memory, f.memory, s.size) then button5.Click else i:= i + 1; s.free; f.free; Большинство файлов сравнивает отлично но некоторые файлы не узнает в чем может быть причина? Ошибка следующего вида: Project Project1.exe raised exception class EAccessViolation with message 'Access violation at address 00404272 in modul Project1.exe' Read of address 00000031'.Proccess stopped. Use Step or Run to continue. После ошибки выделяет эту часть кода s:=TmemoryStream.create; В Label просматриваю как идет сканирование и видно что он пролистывает всю базу и не видит. Визуально видно что файлы копия похожи и вес и размер. Скриншот делается из трёх разных мест но скриншоты абсолютно одинаковы . В чем может быть проблема ? и как будет лучше её решить? |
29.04.2012, 15:31 | #2 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
для начала сравните размеры потоков наверно?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
29.04.2012, 15:35 | #3 |
Форумчанин
Регистрация: 09.07.2011
Сообщений: 185
|
|
29.04.2012, 16:18 | #4 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,291
|
Да, вы поняли не так.
TmemoryStream это и есть поток. У вас может быть разный размер у потока s и потока f. Вы должны сравнивать до минимума из размеров потоков. Или сразу не делать сравнения, если размеры потоков разные.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
Последний раз редактировалось BDA; 29.04.2012 в 16:20. |
29.04.2012, 16:30 | #5 | |
Форумчанин
Регистрация: 09.07.2011
Сообщений: 185
|
Цитата:
if s.size = f.size then -сравниваем end; Или всё более серьёзнее? |
|
29.04.2012, 16:49 | #6 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,291
|
ClMlD, по-моему, этого будет достаточно.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
|
30.04.2012, 01:46 | #7 |
Форумчанин
Регистрация: 09.07.2011
Сообщений: 185
|
Вобщем высполся и свежой головой опять занялся:
Код:
Может быть вы посмотрите ну или попробуете сравнить эти две картинки Вот картинка с экрана: 1.bmp А эта картинка с базы: 9b.bmp С виду обсалютно одинаковы, в чем загвостка не пойму Последний раз редактировалось ClMlD; 30.04.2012 в 01:48. |
30.04.2012, 02:14 | #8 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,291
|
Что вы подразумеваете под ошибкой? EAccessViolation?
Скомпилировал код в Delphi 7, TDLite Delphi 2006, Delphi Rad Studio 2010. Все 3 сказали, что картинки различны. Код:
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
|
30.04.2012, 02:31 | #9 |
Форумчанин
Регистрация: 26.03.2012
Сообщений: 665
|
ClMlD Вы бы показали код целиком, а то гадать приходиться.
|
30.04.2012, 03:10 | #10 |
Форумчанин
Регистрация: 09.07.2011
Сообщений: 185
|
Оке . В общем пишу что то на подобии покерного калькулятора чтобы он подщитывал шанс моей руки , и так как программа былабы написана мною я бы смог свободно прикрепить её к любому покер руму.
Код:
Последний раз редактировалось ClMlD; 30.04.2012 в 03:13. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Поиск файлов формата bmp по заданным параметрам | LinaSh | Помощь студентам | 17 | 18.04.2011 21:08 |
XOR двух bmp | Pavel_S | Мультимедиа в Delphi | 4 | 05.03.2011 07:53 |
Преобразование bmp файлов | Lerank | Помощь студентам | 2 | 21.09.2010 12:15 |
Сравнивание ячеек двух таблиц | Rainkhz | Общие вопросы Delphi | 2 | 29.05.2010 19:16 |