Russian Qt Forum

Qt => Установка, сборка, отладка, тестирование => Тема начата: slava_d200 от Декабрь 02, 2011, 13:34



Название: помогите разобратся
Отправлено: slava_d200 от Декабрь 02, 2011, 13:34
есть:

#include "csksqlite.h"
class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = 0);
    ~MainWindow();

    CSkSQLite* mBaza;
.....
}
----------------------------------------
файл csksqlite.h

class CSkSQLite
{
public:
    CSkSQLite();
    ~CSkSQLite();

};

файл csksqlite.cpp
#include "csksqlite.h"

CSkSQLite::CSkSQLite()
{
}
CSkSQLite::~CSkSQLite()
{
}
--------------
при попытке компиляции имею:

In file included from ..\ARM\/cstructzakaza.h:5,
                 from ..\ARM\/csksqlite.h:7,
                 from ..\ARM\csksqlite.cpp:1:
..\ARM\/mainwindow.h:66: error: ISO C++ forbids declaration of 'CSkSQLite' with no type
..\ARM\/mainwindow.h:66: error: expected ';' before '*' token

Что ему (QT) не нравится ?????


Название: Re: помогите разобратся
Отправлено: qt_user от Декабрь 02, 2011, 16:19
запятую не поставил в объявлении MainWindow {...};
и это не Qt надо, а компилятору, мингве студии или какой у тебя еще


Название: Re: помогите разобратся
Отправлено: slava_d200 от Декабрь 02, 2011, 17:19
";" у меня стоит - когда код копировал пропустил.

меня интересует вот эти сообщения, вообще что они значат

In file included from ..\ARM\/Global.h:4,
                 from ..\ARM\/cstructzakaza.h:5,
                 from ..\ARM\/cpage_zakaz.h:6,
                 from ..\ARM\/mainwindow.h:17,
                 from ..\ARM\main.cpp:3:

в каждом ".h" стоит конструкция
#ifndef
#define
двойной инициализации не должно быть.


Название: Re: помогите разобратся
Отправлено: qt_user от Декабрь 02, 2011, 17:28
там говорится что CSkSQLite не тип, вобще можно попробовать в файле в котором объявлен MainWindow
сделать вот предварительное объявление CSkSQLite, а #include "csksqlite.h" убрать и подключить в файле
реализации для MainWindow


Название: Re: помогите разобратся
Отправлено: qt_user от Декабрь 02, 2011, 17:29
выведи файл вместимое файла Global.h


Название: Re: помогите разобратся
Отправлено: slava_d200 от Декабрь 02, 2011, 17:47
помогло предварительно объявление класса. (покрайней мере ошибка ушла)
ща попробую тестануть.

вообще странно, почему с include вываливается в ошибку.


СПАСИБО за помощь


Название: Re: помогите разобратся
Отправлено: qt_user от Декабрь 02, 2011, 17:54
помогло предварительно объявление класса. (покрайней мере ошибка ушла)
ща попробую тестануть.

вообще странно, почему с include вываливается в ошибку.


СПАСИБО за помощь
у меня похожее было при подключении сгенерированого ui-хэдера, хоть убей а подключенный хэдер
внутри не разворачивается, приходилось хэдер копи-пастом включать


Название: Re: помогите разобратся
Отправлено: kambala от Январь 05, 2012, 21:29
зачем лезть в программу если ты не знаком с элементарными понятиями программирования и даже не в состоянии открыть документацию почитать что делает тот или иной метод?


Название: Re: помогите разобратся
Отправлено: andrew.k от Январь 06, 2012, 01:07
зачем лезть в программу если ты не знаком с элементарными понятиями программирования и даже не в состоянии открыть документацию почитать что делает тот или иной метод?
Видимо затем, что если лаба есть, от нее трудно куда-то деться)


Название: Re: помогите разобратся
Отправлено: S от Январь 11, 2012, 18:38
В коде разобрался, он не сложный. но программа всё равно не работает. Компилятор ошибку не выдаёт. Помогите пожалуйста. 
1.rar.html (http://narod.ru/disk/37318074001/1.rar.html)


Название: Re: помогите разобратся
Отправлено: kambala от Январь 11, 2012, 19:10
у меня не собиралось пока не изменил #include <Qt/qapplication.h> на #include <QApplication>. и строчка #include <QtCore/QCoreApplication> совершенно не нужна. и код ужасно выглядит. и зачем устанавливать кодек на utf-8, если сам файл имеет кодировку 1251. и...

программа работает, даже что-то считает, даже иногда правильно (в диапазоне от 1 до 30 последним простым числом выдала 19).

а ты хочешь чтоб за тебя алгоритм исправили?


Название: Re: помогите разобратся
Отправлено: S от Январь 11, 2012, 19:28
у меня не собиралось пока не изменил #include <Qt/qapplication.h> на #include <QApplication>. и строчка #include <QtCore/QCoreApplication> совершенно не нужна. и код ужасно выглядит. и зачем устанавливать кодек на utf-8, если сам файл имеет кодировку 1251. и...

программа работает, даже что-то считает, даже иногда правильно (в диапазоне от 1 до 30 последним простым числом выдала 19).

а ты хочешь чтоб за тебя алгоритм исправили?
Цитировать
у меня не собиралось пока не изменил #include <Qt/qapplication.h> на #include <QApplication>. и строчка #include <QtCore/QCoreApplication> совершенно не нужна.
Спасибо.
Цитировать
код ужасно выглядит. и зачем устанавливать кодек на utf-8, если сам файл имеет кодировку 1251.
потому что основная цель программы работать не под Windows, а под Linix
Цитировать
и...
Что?
Цитировать
а ты хочешь чтоб за тебя алгоритм исправили?
нет.
Будем работать. Если я исправлю алгоритм, посмотрите?
 И ещё вопрос, написал ещё одну программу, посмотрите? Внесёте здравую долю критики?




Название: Re: помогите разобратся
Отправлено: kambala от Январь 11, 2012, 20:12
посмотреть всегда можно :)
Цитировать
код ужасно выглядит. и зачем устанавливать кодек на utf-8, если сам файл имеет кодировку 1251.
потому что основная цель программы работать не под Windows, а под Linix
так может надо все-таки файл сконвертировать в utf-8?
Цитировать
и...
Что?
в коде надо придерживаться хоть какого-то форматирования, а не как сейчас там. ну и классы надо по своим [одноименным] файлам распихивать желательно (если супер маленький проект, то конечно можно и без этого), а в main.cpp писать только функцию main().


Название: Re: помогите разобратся
Отправлено: S от Январь 11, 2012, 20:46
Я учту,  ваши замечания.
Посмотрите программу.
Вот задание:
Написать программу с окном типа QMainWindow, которое считывает текст из файла и выводит его на экран, затем выводит на экран те слова, которые закан­чиваются заданной последовательностью символов.
Имя файла должно считываться с помощью специального диалогового окна для открытия файлов.
Символы считывать с помощью вспомогательного диалогового окна, которое выводится на экран при нажатии на кнопку на панели инструментов.

Я вроде аккуратно всё сделал. Даже  комментарии поставил.
Только один нюанс, программа написана под Linux.
5_13.zip.html (http://narod.ru/disk/37333310001/5_13.zip.html)
что скажите?


Название: Re: помогите разобратся
Отправлено: kambala от Январь 11, 2012, 21:14
для начала скажу, что никогда не нужно распространять исходники с файлом *.pro.user

свое дело программа в принципе делает. но вот когда я ввожу "ов", то ничего не находит, а должно найти "файлов" и "инструментов"; или когда ввожу "а", то не находит "слова". думаю почему так происходит ты понимаешь ;)

ну и так, по юзабилити: было бы куда приятнее возвращаться к содержимому файла после поиска, чем по-новой открывать его (например результат поиска выводить в другой виджет на главном окне или вообще в отдельный диалог, или просто кнопку "назад" добавить); было бы куда приятнее, если бы окно программы можно было растягивать, и текст бы автоматически занимал все доступное место; иконка для "Открыть файл" обычно выглядит как папка, а твоя больше напоминает "создать файл" :) еще можно запоминать последнюю папку, из которой открывался файл, и записывать этот путь в настройки (QSettings), чтобы при следующем запуске программы выбор предлагался из этой папки. я понимаю, что этого нет в условии задания, но если будешь потом писать более-менее реальные приложения, об этом всем надо позаботиться.

З.Ы.
Только один нюанс, программа написана под Linux.
написана под линукс, а компилируется и работает на маке без единого исправления - волшебная у тебя программа!


Название: Re: помогите разобратся
Отправлено: S от Январь 11, 2012, 21:21
Спасибо за критику.
Завтра такую  сдам, а потом буду работать.


Название: Re: помогите разобратся
Отправлено: kambala от Январь 11, 2012, 21:27
не, ну деление на слова надо исправить, а то халтура получается. хотя может это только я такой перфекционист.


Название: Re: помогите разобратся
Отправлено: S от Январь 12, 2012, 11:08

Цитировать
не, ну деление на слова надо исправить, а то халтура получается. хотя может это только я такой перфекционист.
да, пришлось переделовать. Без этого лабу не засчитали.
Цитировать
для начала скажу, что никогда не нужно распространять исходники с файлом *.pro.user
почему?
А не подскажите, как улучшить алгоритм первой программы?
Если, например, проверку на простату сделать вот так:
bool isSimple( int value)
{
int k,d,halfk,in;
k =0;   
halfk = value/2 +1; // не  половинку от K, а  взять sqrt ?
for(d =2 ;d <halfk; d++)
{
in = value/d; // получаем результат целочисленного деления нашего числа на d (in)
if( (in * d) == value) // может так  if (in % d ==0) ?
{
k++; // сразу вернуть false?
}
}



Название: Re: помогите разобратся
Отправлено: andrew.k от Январь 12, 2012, 11:11
"проверка на простату" Ахахаха  ;D


Название: Re: помогите разобратся
Отправлено: kambala от Январь 12, 2012, 11:43
Цитировать
для начала скажу, что никогда не нужно распространять исходники с файлом *.pro.user
почему?
потому что этот файл хранит текущие зависимые от машины настройки проекта (путь к библиотекам и всё такое), а это у всех, как правило, отличается. можешь открыть в блокноте этот файл и посмотреть его.
А не подскажите, как улучшить алгоритм первой программы?
да, лучше всё-таки использовать остаток от деления (if (value % d == 0) return false;). ну а по поводу форматирования кода я уже говорил - то, что ты выложил на форум, читать невозможно из-за отсутствия отступов. тут кстати существует тэг кода (вместо фигурных скобок надо ставить квадратные): {code=cpp}тут код{/code}

да, и у нас тут не С89 (или какой там был стандарт), объявлять все переменные не обязательно в начале функции :)
"проверка на простату" Ахахаха  ;D
да, годно вышло ;D