Добрый вечер! Подскажите пожалуйста, как можно разбить произвольный файл на определённое число частей("подфайлов") и как их потом собрать обратно? (может у кого сорцы винрара завалялись?! ) И как получать MD5-хеши файлов?
md5 - хешь файла через php а вот сорсов архиватора нет (( может обычными файлообработчиками... ну там считать файл подсчитать его length поделить на 5 регэкспом порезать забить в разные переменные или файлы а обратно... нужно запомнить очередность нарезки создать новый файл и туда записывать 1й кусок в конец строки 2й ... и тд ))
либса libssl доки тут http://www.openssl.org/docs Врядли гдето ты их найдешь, прога то проприетарная Читаешь главный файл в битовом режиме и поблочно пишешь в другой файл(часть главного файла) в начале которого можно ставить какую нибуть метку которая показывала б какой по очереди этот файл является.
razb Если ты не заметил, то я не спрашивал, а отвечал. p.s. метки в самих файлах ставить совсем не обязательно.
Пусть число частей равно Н. Тогда надо узнать размер файла и размер файла разделить на Н. Вот и все! Почитай здесь, может поможет: http://r3al.ru/index.php?showtopic=76
Очень информативный ответ. Я просто уточнил какая либса нужна) И как же ты собираешься определять где какая часть файла? телепатически?
В случае успеха - ERROR_SUCCESS (0), в остальных случаях ошибка. Какая именно можно узнать, заюзав функцию FormatMessage.
Подскажите пожалуйста, можно ли обращатся напрямую к оперативной памяти других программ или самой ОС или это можно только через ассемблер? Пример - программа для тестирования всей ОП компа.
Подскажите где тут ошибка Code: HANDLE hh; hh=HeapCreate(0,0x01000,(1024*1024)*50); if(hh==NULL){MessageBox(0,"!","!",MB_OK);} char *buf=(char*)HeapAlloc(hh,0,1024*1024); if(buf==NULL){MessageBox(0,"!","!",MB_OK);}//вовращяет NULL :( strcpy(buf,"sdjbksadbvkjlbsdkvljbsdkjbvkjsdabvkjasdbkvjbasdkjvbsakjbvkjslb"); MessageBox(0,buf,"!",MB_OK); HeapFree(hh,0,&buf); HeapDestroy(hh); ЗЫ:GetLastError возвращяет 0
еще такой вопрос по памяти: хочу сделать обработку исключений следующим способом: Code: #include <iostream> using namespace std; main() { char * a; for (int x = 0; x<1000; x++) { a = new char[10000000]; if (a == NULL) { cout << "Error allocating memory\n"; return 0; } else { cout << x << ")" << "memory allocated successfully\n"; } } return 0; } но при превышении лимита выделяемой памяти пишет в консоли не мое сообщение а вот что: Code: terminate called after throwing an instance of 'std::bad_alloc' what(): std::bad_alloc Aborted запускал в bash'e никсов. Как я понимаю это ограничение на уровне самой ОС и его нельзя обойти? :-/
в учебнике написано, что если оператор NEW не может присвоить адрес для памяти массиву то он помещает в него значение NULL. Ну в моем коде я сверял его и использовал ветвление По идее, все должно работать. Но не работает.
Спасибо за советы, нашел мануал на эту тему (кому будет интересно) http://users.msu.dubna.ru/~ovg/c++course/p2-3.html