[ C / C++ ] — начинающим: задаем вопросы (архивная - 2015)

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by _Great_, 26 May 2007.

Thread Status:
Not open for further replies.
  1. Balvan

    Balvan Member

    Joined:
    11 Mar 2009
    Messages:
    66
    Likes Received:
    5
    Reputations:
    0
    Добрый вечер!
    Подскажите пожалуйста, как можно разбить произвольный файл на определённое число частей("подфайлов") и как их потом собрать обратно? (может у кого сорцы винрара завалялись?! ;))
    И как получать MD5-хеши файлов?
     
    1 person likes this.
  2. KaZ@NoVa

    KaZ@NoVa Elder - Старейшина

    Joined:
    5 Jul 2008
    Messages:
    368
    Likes Received:
    438
    Reputations:
    -16
    md5 - хешь файла через php
    а вот сорсов архиватора нет ((
    может обычными файлообработчиками... ну там считать файл подсчитать его length
    поделить на 5
    регэкспом порезать
    забить в разные переменные или файлы

    а обратно... нужно запомнить очередность нарезки
    создать новый файл и туда записывать 1й кусок в конец строки 2й ... и тд ))
     
    1 person likes this.
  3. Forcer

    Forcer Elder - Старейшина

    Joined:
    12 Apr 2007
    Messages:
    321
    Likes Received:
    98
    Reputations:
    12
    Вероятнее всего для этого нужна какая-то библиотека )).

    http://www.cryptopp.com/
     
    1 person likes this.
  4. razb

    razb Active Member

    Joined:
    24 Mar 2009
    Messages:
    658
    Likes Received:
    133
    Reputations:
    18
    либса libssl
    доки тут http://www.openssl.org/docs
    Врядли гдето ты их найдешь, прога то проприетарная
    Читаешь главный файл в битовом режиме и поблочно пишешь в другой файл(часть главного файла) в начале которого можно ставить какую нибуть метку которая показывала б какой по очереди этот файл является.
     
  5. Forcer

    Forcer Elder - Старейшина

    Joined:
    12 Apr 2007
    Messages:
    321
    Likes Received:
    98
    Reputations:
    12
    razb
    Если ты не заметил, то я не спрашивал, а отвечал.

    p.s. метки в самих файлах ставить совсем не обязательно.
     
  6. KaZ@NoVa

    KaZ@NoVa Elder - Старейшина

    Joined:
    5 Jul 2008
    Messages:
    368
    Likes Received:
    438
    Reputations:
    -16
    Пусть число частей равно Н.
    Тогда надо узнать размер файла и размер файла разделить на Н.
    Вот и все!

    Почитай здесь, может поможет:
    http://r3al.ru/index.php?showtopic=76
     
    1 person likes this.
  7. razb

    razb Active Member

    Joined:
    24 Mar 2009
    Messages:
    658
    Likes Received:
    133
    Reputations:
    18
    Очень информативный ответ. Я просто уточнил какая либса нужна)
    И как же ты собираешься определять где какая часть файла? телепатически?
     
    1 person likes this.
  8. _nic

    _nic Elder - Старейшина

    Joined:
    5 May 2006
    Messages:
    651
    Likes Received:
    54
    Reputations:
    3
    Я правильно понял что если RegDeleteKey возвращяет вместо ноля 6 ,то это значит что HKEY кривой?
     
  9. 0x0c0de

    0x0c0de Elder - Старейшина

    Joined:
    25 May 2007
    Messages:
    441
    Likes Received:
    396
    Reputations:
    297

    В случае успеха - ERROR_SUCCESS (0), в остальных случаях ошибка. Какая именно можно узнать, заюзав функцию FormatMessage.
     
  10. KaZ@NoVa

    KaZ@NoVa Elder - Старейшина

    Joined:
    5 Jul 2008
    Messages:
    368
    Likes Received:
    438
    Reputations:
    -16
    .....
     
  11. awdrg

    awdrg Member

    Joined:
    30 Jan 2009
    Messages:
    195
    Likes Received:
    31
    Reputations:
    1
    Подскажите пожалуйста, можно ли обращатся напрямую к оперативной памяти других программ или самой ОС или это можно только через ассемблер? Пример - программа для тестирования всей ОП компа.
     
  12. .ATK

    .ATK Active Member

    Joined:
    20 Feb 2009
    Messages:
    143
    Likes Received:
    111
    Reputations:
    9
    Рихтер, тебе в помощь... там целая глава, по поводу твоего вопроса!!
     
  13. _nic

    _nic Elder - Старейшина

    Joined:
    5 May 2006
    Messages:
    651
    Likes Received:
    54
    Reputations:
    3
    Подскажите где тут ошибка
    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 :confused:
     
    #2633 _nic, 6 Apr 2009
    Last edited: 6 Apr 2009
  14. awdrg

    awdrg Member

    Joined:
    30 Jan 2009
    Messages:
    195
    Likes Received:
    31
    Reputations:
    1
    еще такой вопрос по памяти: хочу сделать обработку исключений следующим способом:
    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 никсов. Как я понимаю это ограничение на уровне самой ОС и его нельзя обойти? :-/
     
    #2634 awdrg, 6 Apr 2009
    Last edited: 6 Apr 2009
  15. criz

    criz Elder - Старейшина

    Joined:
    4 Nov 2007
    Messages:
    293
    Likes Received:
    40
    Reputations:
    6
    может дело в
    это для HeapAlloc
     
  16. criz

    criz Elder - Старейшина

    Joined:
    4 Nov 2007
    Messages:
    293
    Likes Received:
    40
    Reputations:
    6
    это вроде сообщение о переполнении стека...
    и где, собсна, перехват(try/catch)? :)
     
  17. awdrg

    awdrg Member

    Joined:
    30 Jan 2009
    Messages:
    195
    Likes Received:
    31
    Reputations:
    1
    в учебнике написано, что если оператор NEW не может присвоить адрес для памяти массиву то он помещает в него значение NULL. Ну в моем коде я сверял его и использовал ветвление :) По идее, все должно работать. Но не работает.
     
  18. Chaak

    Chaak Elder - Старейшина

    Joined:
    1 Jun 2008
    Messages:
    1,059
    Likes Received:
    1,067
    Reputations:
    80
    awdrg, переполнение стэка, юзай оператор static
     
  19. razb

    razb Active Member

    Joined:
    24 Mar 2009
    Messages:
    658
    Likes Received:
    133
    Reputations:
    18
    2awdrg при переполнении оператор new выкидует исключение bad_alloc, вот его и отлавлюй
     
  20. awdrg

    awdrg Member

    Joined:
    30 Jan 2009
    Messages:
    195
    Likes Received:
    31
    Reputations:
    1
    Спасибо за советы, нашел мануал на эту тему (кому будет интересно)
    http://users.msu.dubna.ru/~ovg/c++course/p2-3.html
     
    1 person likes this.
Thread Status:
Not open for further replies.