![]() |
1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
![]() ![]() |
![]() |
willhunting |
![]()
Сообщение
#1
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 52 Пол: Мужской Репутация: ![]() ![]() ![]() |
Пытаюсь запустить хэш-функцию( md5).
код взял на каком-то сайте md5.cpp
md5.h
Вылетает fatal error C1083: Cannot open include file: 'system.hpp': No such file or directory Error executing cl.exe. среда VC++6 создал проект Win32 App на VC++ 6.0 . И вставил файлы md5.cpp,md5.h |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Судя по
AnsiString MD5(AnsiString in);, код ни разу не для VC, а для Билдера... Кстати, это вообще не С++, это чистый С, поэтому расширение файла желательно сделать md5.c, а не md5.cpp |
willhunting |
![]()
Сообщение
#3
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 52 Пол: Мужской Репутация: ![]() ![]() ![]() |
А, да это действительно builder, спасибо. Только здесь можно вычислять md5 от строки. А что надо изменить, что бы вычислять md5 от файла ?
|
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
Считай весь файл в строку и вычисли ее MD5...
|
willhunting |
![]()
Сообщение
#5
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 52 Пол: Мужской Репутация: ![]() ![]() ![]() |
Считай весь файл в строку и вычисли ее MD5... Как сделать строку из файла произвольного формата ? Т.е. например из файлов mpeg, jpeg или какой-нибудь базы данных(архивируя или не архивируя) ? И какая длина строки получиться при этом ? Я тут пробовал открыть видео файл блокнотом ![]() ![]() |
volvo |
![]()
Сообщение
#6
|
Гость ![]() |
А, так тебе для бинарного файла: Вот так, например:
#define BUFSIZE 32768 |
willhunting |
![]()
Сообщение
#7
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 52 Пол: Мужской Репутация: ![]() ![]() ![]() |
Т.е. нужно вместо этого
AnsiString MD5(AnsiString in) { ставить это MD5Init(); ? или после MD5Init(); ? А нет судя по printf("MD5 = %s\n", buffer);это для с. |
volvo |
![]()
Сообщение
#8
|
Гость ![]() |
То, что я привел - надо написать в основной программе. У тебя здесь основной программы нет, только сама библиотека... Где main() ? Как ты сумел найти MD5 от AnsiString-а? Вот туда вместо тех вызовов, что у тебя, поставь мой код...
Цитата это для с. Блин... Да, это я, как всегда, глючу... Я С не использую, только С++... Ну, тогда замениunsigned char *buffer = new unsigned char[BUFSIZE];на unsigned char *buffer = (unsigned char *)malloc(BUFSIZE * sizeof(unsigned char));, и для удаления - не delete, а free... |
willhunting |
![]()
Сообщение
#9
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 52 Пол: Мужской Репутация: ![]() ![]() ![]() |
было
//--------------------------------------------------------------------------- стало //--------------------------------------------------------------------------- поменял Edit2->Text=buffer; ругается [C++ Error] Unit1.cpp(54): E2034 Cannot convert 'unsigned char *' to 'AnsiString' на free [C++ Error] Unit1.cpp(51): E2188 Expression syntax Сообщение отредактировано: volvo - 12.03.2010 22:09 |
volvo |
![]()
Сообщение
#10
|
Гость ![]() |
Ну, а я сделал так:
//---------------------------------------------------------------------------, и работает... Что я делаю не так? |
willhunting |
![]()
Сообщение
#11
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 52 Пол: Мужской Репутация: ![]() ![]() ![]() |
volvo, просто огромное спасибо тебе !
зы ура заработало ![]() |
willhunting |
![]()
Сообщение
#12
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 52 Пол: Мужской Репутация: ![]() ![]() ![]() |
так...
интересно, а можно выгружать содержательную информацию(не учитывать служебную информацию) из базы данных и брать хэш от неё ? это может ускорить процесс . теперь главный вопрос: как можно выгрузить информацию из бд ? |
volvo |
![]()
Сообщение
#13
|
Гость ![]() |
Цитата интересно, а можно выгружать содержательную информацию(не учитывать служебную информацию) из базы данных и брать хэш от неё ? Интересно, а как мы должны знать, можно это или нет, если ты не сказал, что за база у тебя, что за содержательная информация, от которой надо брать хеш? Как она хранится? |
willhunting |
![]()
Сообщение
#14
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 52 Пол: Мужской Репутация: ![]() ![]() ![]() |
Интересно, а как мы должны знать, можно это или нет, если ты не сказал, что за база у тебя, что за содержательная информация, от которой надо брать хеш? Как она хранится? мне не важно какая конкретно база, а важно возможно ли это использовать, вообще, для каких-нибудь баз т.е. я хочу провести исследование для каких случаев это возможно и уменьшит ли это общее время, а для каких это вообще не возможно или не актуально |
volvo |
![]()
Сообщение
#15
|
Гость ![]() |
Цитата мне не важно какая конкретно база, а важно возможно ли это использовать Неважно, говоришь? Ты сам сказал, учти ![]() База MS Access, подключение через ADO, получаем содержимое информационного поля типа MEMO в строку: String s = DataSource1->DataSet->FieldByName("info")->AsString; и находим хеш этой строки. Ты уже умеешь это делать... Ну, что, помогло тебе это? А как ты будешь действовать, если у тебя не поле MEMO, а OLEObject хранит данные? Я ж ничего просто так не спрашиваю... "Общая температура по больнице" - это никому не нужная информация. Для общего случая НИКОГДА и НИЧЕГО не делается... Всегда рассматриваются какие-то конкретные вещи. |
willhunting |
![]()
Сообщение
#16
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 52 Пол: Мужской Репутация: ![]() ![]() ![]() |
Если рассмотреть простейший пример БД access если в ней хранится только текстовая информация. Т.е. формат всех полей либо “буквы” либо “цифры”. Таким образом , нужно пробежаться по всем таблицам и всем ячейкам этих таблиц. Так ведь возможно сделать ?
|
willhunting |
![]()
Сообщение
#17
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 52 Пол: Мужской Репутация: ![]() ![]() ![]() |
Я правильно понимаю, что параллельное программирование сюда никак не применить ? Сообщение отредактировано: willhunting - 12.03.2010 20:57 |
volvo |
![]()
Сообщение
#18
|
Гость ![]() |
Что имеешь в виду под "параллельным программированием"? Многопоточное приложение (каждый поток читает, скажем, свою таблицу, или свою часть таблицы, если сама база банных разрешает такой доступ) не устроит? На многоядерной/многопроцессорной машине будет выполняться параллельно. По крайней мере, если число потоков соизмеримо с количеством ядер/процессоров.
|
willhunting |
![]()
Сообщение
#19
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 52 Пол: Мужской Репутация: ![]() ![]() ![]() |
Что имеешь в виду под "параллельным программированием"? Многопоточное приложение (каждый поток читает, скажем, свою таблицу, или свою часть таблицы, если сама база банных разрешает такой доступ) не устроит? На многоядерной/многопроцессорной машине будет выполняться параллельно. По крайней мере, если число потоков соизмеримо с количеством ядер/процессоров. я хэш-функцию имел ввиду(распараллелить её вычисление) |
volvo |
![]()
Сообщение
#20
|
Гость ![]() |
Цитата я хэш-функцию имел ввиду(распараллелить её вычисление) Нет, нельзя, тут нет независимых вычислений, поэтому подсчет должен быть последовательным. Но по-моему, ты копаешь не в ту сторону. Зачем тебе понадобилось распараллеливать вычисление каждого хеша, если можно сделать параллельное вычисление нескольких хешей безо всяких проблем? |
![]() ![]() |
![]() |
Текстовая версия | 18.07.2025 2:16 |