Потому что согласно документации printf объявлен как public PrintStream printf, т.е. возвращает PrintStream объект и его можно сравнить с null, а println объявлен как void, т.е. ничего не возвращает и поэтому пытаться сравнить ничего и null нельзя, об этом компилятор и ругается. ссылка на документацию docs.oracle.com/javase/6/docs/api/java/io/PrintStr... java.lang.Object...)
@LIR как вариант, можно убирать из пути и имени файла не английские символы( сделать можно как вручную, так и найти/написать какую-либо программу ) или перед открытием копировать нужные файлы в заданную папку с заданным именем файла и там уже с ними работать. Глобально решить эту проблему конечно пока не получится :-(
@Perzh тогда давайте более детальное описание классов и этих двух методов. И на всякий случай еще уточню: оба раза объект класса Device создается конструктором по умолчанию?
Это на какую-то фантастику похоже :-) Либо Device определен и тогда он должен быть виден в любом из методов вашего класса, либо он не определен и оба метода не должны работать. Либо вы что-то от нас скрываете :-)
@JTProg, так по моей ссылке должно быть все на русском :-) А вообще укажите подробнее от чего вы хотите защищаться, вам подскажут наиболее оптимальные решения :-)
@aterentyev если вы пишите во временную таблицу, то ничего удивительного, что в базе ничего не сохраняется. Если вы не знаете что такое временная таблица, то ошибка точно у вас в коде :-)
Ошибки, которые вы в qDebug() пишите? и пишите видимо на русском? Если да, то попробуйте делать нечто qDebug() << QStirng().from_utf8("Ошибка"). При этом убедитесь, что ваши исходники храняться в utf8
вы же его перекомпилируете, а это значит что вы удаляете старый файл и создаете новый. У нового файла новые дата и время сборки, а если еще и изменения в код вносили, то бинарное содержимое разное :-) Вот и контрольные суммы разные