Russian Qt Forum
Сентябрь 27, 2024, 18:32 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2] 3   Вниз
  Печать  
Автор Тема: Копирование файлов с помошью QProcess и cp! Проблема!!!  (Прочитано 18569 раз)
crossly
Гость
« Ответ #15 : Март 29, 2010, 16:50 »

это потому что connect требует от тебя указатель в качестве аргумента....
Записан
MoPDoBoPoT
Гость
« Ответ #16 : Март 29, 2010, 16:56 »

Пишу с помощью файла .ui.h , поэтому если бы сигнал был бы от кнопки или ещё чего-нибудь , то подсоединил бы...
Наверное ты имел ввиду QtDesigner. Кстати, для новичков лучше обходится без него.

connect( proc7, SIGNAL(proc7.readyReadStdout()),
           this,   SLOT(readFromStdout())      );
В метод QObject::connect() надо передавать указатели, а QProcess создан на стеке, что, кстати, является ошибкой, так как при выходе из функции (скорей всего из конструктора) объект разрушится и никаких сигналов ты не получишь.
Создавай QProcess в куче: QProcess *proc7 = new QProcess(this);
Записан
BigHom
Гость
« Ответ #17 : Март 29, 2010, 18:07 »

[Создавай QProcess в куче: QProcess *proc7 = new QProcess(this);
Тогда ошибки здесь :
   proc7.addArgument("ls");
   proc7.addArgument(">a.a");
Записан
MoPDoBoPoT
Гость
« Ответ #18 : Март 29, 2010, 18:18 »

[Создавай QProcess в куче: QProcess *proc7 = new QProcess(this);
Тогда ошибки здесь :
   proc7.addArgument("ls");
   proc7.addArgument(">a.a");
Само собой Улыбающийся У тебя же указатель... (С++ знаешь?)
proc7->addArgument("ls");

Насчет моего предыдущего поста: надо же хранить указатель на QProcess в виде члена класса (доступ к объекту нужен и в других методах), поэтому надо так:
proc7 = new QProcess(this);
А в описании класса добавить QProcess *proc7;
Записан
crossly
Гость
« Ответ #19 : Март 29, 2010, 18:25 »

а может стоит начать с изучения c++ ??
Записан
BigHom
Гость
« Ответ #20 : Март 29, 2010, 18:54 »

Само собой Улыбающийся У тебя же указатель... (С++ знаешь?)
proc7->addArgument("ls");

Насчет моего предыдущего поста: надо же хранить указатель на QProcess в виде члена класса (доступ к объекту нужен и в других методах), поэтому надо так:
proc7 = new QProcess(this);
А в описании класса добавить QProcess *proc7;
Раньше на Делфи писал , там всё логично - последовательно выполняется ,  вместо рассказа о том как всё работаёт - конкретно оператор - в с++ видно наоборот сначала рассказ где что подёргать вместо операторов . Конечно , стрёлка нужна всё оттранслировалось , но без "proc7 = new QProcess(this);" - пока не понял для чего это , поэтому при выполнении пишет "программа завершилась с ошибкой" . Все языки одинаковые  - всё изучается на практике :-)
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #21 : Март 29, 2010, 19:28 »

Перепутал , команда "ls" -  Я так думаю что подсчёт контрольной суммы : ls /mnt/cdrom -a |md5sum >a.a

MD5 сумма считается с образа, а не со списка файлов! Нужно читать устройство CDROM-a (/dev/cdrom, /dev/hda - в зависимости от системы).
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #22 : Март 29, 2010, 20:11 »

Все языки одинаковые  - всё изучается на практике :-)

Все языки должны изучаться на профессиональной документации, попутно занимаясь практикой. Иначе результаты как правило плачевны  Строит глазки
Записан
niXman
Гость
« Ответ #23 : Март 29, 2010, 20:26 »

дополню: для некоторых разделов, потребуются права супер-юзера.

а читать раздел, как-то так:
Код
C++ (Qt)
int main(int argc, char** argv) {
  const size_t size = 32768;
  std::ifstream file("/dev/cdrom");
  if ( !file ) {
     std::cerr << strerror(errno) << std::endl;
     return 1;
  }
 
  boost::array<char, size> buff;
 
  while ( file.good() ) {
     size_t rd = file.read(buff.data(), buff.size()).gcount();
  }
 
  return 0;
}
 
 
Записан
BigHom
Гость
« Ответ #24 : Март 30, 2010, 14:41 »

выводит только содержимое cd-диска:
Код
C++ (Qt)
  QProcess *proc7;
 
  proc7 = new QProcess( this );
  proc7->addArgument("ls");
  proc7->addArgument("/mnt/cdrom");
  proc7->addArgument("|md5sum");
  connect( proc7, SIGNAL(readyReadStdout()),         this, SLOT(readFromStdout())  );
...
 
void MyDialog2::readFromStdout()
{
   textEdit2->append( proc7->readStdout() );
}
 
Контрольную сумму не выводит - как вывести КС cd-диска ?
« Последнее редактирование: Март 30, 2010, 16:39 от Пантер » Записан
crossly
Гость
« Ответ #25 : Март 30, 2010, 16:15 »

повторяю второй раз... перенаправление ввода-вывода и пайпы это фишки оболочки (shell) ... QProcess никак на них не отреагирует...
Записан
BigHom
Гость
« Ответ #26 : Апрель 02, 2010, 16:18 »

Так может по-другому можно как-то подсчитать? не с помощью QProcess... чтоб результат был такой же :-)
Записан
niXman
Гость
« Ответ #27 : Апрель 02, 2010, 17:35 »

тебе 4 раза сказали как это правильно делать! я тебе код написал, несколькими постами выше!
« Последнее редактирование: Апрель 02, 2010, 18:29 от niXman » Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #28 : Апрель 02, 2010, 18:31 »

Тут по аналогичному вопросу мне советовали создать .bat (windows) или .sh (*.nix) файл в котором прописать все что нужно и его запускать... (поищи по форуму)

Хотя, как вариант - можно попытаться подсунуть QProcess вызов cmd.exe (windows) или /bin/bash (*nix)  - а аргументами будут являться всё остальное ( ls, /mnt/cdrom и т.п.)
« Последнее редактирование: Апрель 02, 2010, 18:34 от kuzulis » Записан

ArchLinux x86_64 / Win10 64 bit
BigHom
Гость
« Ответ #29 : Апрель 05, 2010, 11:07 »

тебе 4 раза сказали как это правильно делать! я тебе код написал, несколькими постами выше!
Выдаются следующие ошибки:
c:\Qt\MyDialog2.ui.h(1416): error C2062: type 'char' unexpected
c:\Qt\MyDialog2.ui.h(1416): error C2065: 'array' : undeclared identifier
c:\Qt\MyDialog2.ui.h(1414): error C2065: 'cerr' : undeclared identifier
c:\Qt\MyDialog2.ui.h(1414): error C2065: 'errno' : undeclared identifier
c:\Qt\MyDialog2.ui.h(1413): error C2065: 'ifstream' : undeclared identifier
c:\Qt\MyDialog2.ui.h(1413): error C2146: syntax error : missing ';' before identifier 'file'
c:\Qt\MyDialog2.ui.h(1417): error C2228: left of '.good' must have class/struct/union type
        type is ''unknown-type''
c:\Qt\MyDialog2.ui.h(1416): error C2653: 'boost' : is not a class or namespace name
c:\Qt\MyDialog2.ui.h(1413): error C2653: 'std' : is not a class or namespace name
c:\Qt\MyDialog2.ui.h(1414): error C2653: 'std' : is not a class or namespace name
c:\Qt\MyDialog2.ui.h(1413): error C3861: 'file': identifier not found, even with argument-dependent lookup
c:\Qt\MyDialog2.ui.h(1417): fatal error C1903: unable to recover from previous error(s); stopping compilation


Если устранить ошибки будет правильно подсчитана КС  cd-диска?
Записан
Страниц: 1 [2] 3   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.09 секунд. Запросов: 23.