crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Контрольная сумма
nikita
  опции профиля:
сообщение 11.1.2016, 16:36
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 34
Регистрация: 19.10.2012
Пользователь №: 3570

Спасибо сказали: 2 раз(а)




Репутация:   0  


Подскажите, возникла необходимость, чтобы приложение при старте считало контрольную сумму файла с которого оно было запущено! Можно ли средствами Qt (или другими) это сделать? Работаю под Линуксом.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
lanz
  опции профиля:
сообщение 11.1.2016, 23:44
Сообщение #2


Старейший участник
****

Группа: Участник
Сообщений: 690
Регистрация: 28.12.2012
Пользователь №: 3660

Спасибо сказали: 113 раз(а)




Репутация:   8  


http://doc.qt.io/qt-5/qbytearray.html#qChecksum
http://doc.qt.io/qt-5/qcryptographichash.html

http://doc.qt.io/qt-5/qcoreapplication.htm...icationFilePath

Сообщение отредактировал lanz - 11.1.2016, 23:47
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
nikita
  опции профиля:
сообщение 13.1.2016, 10:00
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 34
Регистрация: 19.10.2012
Пользователь №: 3570

Спасибо сказали: 2 раз(а)




Репутация:   0  


Спасибо за совет. В итоге сделал так :
QCryptographicHash cryp(QCryptographicHash::Md5);
QFile file(QCoreApplication::applicationDirPath()+"/fileName");
if (file.open(QIODevice::ReadOnly) )
{
QByteArray all;
      while (!file.atEnd())
      {
        QByteArray line = file.read(1024);
        cryp.addData(line);
        all+=line;
      }
      QString rez = cryp.result().toHex().data();
      QMessageBox::question(this, trUtf8("Контрольная сумма"),rez);
    }
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
lanz
  опции профиля:
сообщение 13.1.2016, 14:41
Сообщение #4


Старейший участник
****

Группа: Участник
Сообщений: 690
Регистрация: 28.12.2012
Пользователь №: 3660

Спасибо сказали: 113 раз(а)




Репутация:   8  


Непонятно только несколько вещей:
1. QCryptographicHash может работать напрямую с файлом:
http://doc.qt.io/qt-5/qcryptographichash.html#addData-2
2. Почему используется dirPath + "/filename", когда есть filePath
3. Непонятно зачем нужен массив all. Если он есть, достаточно вызвать readAll, зачем считывать построчно.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 25.11.2024, 21:31