Название: помогите разобратся Отправлено: 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 помогло предварительно объявление класса. (покрайней мере ошибка ушла) у меня похожее было при подключении сгенерированого ui-хэдера, хоть убей а подключенный хэдерща попробую тестануть. вообще странно, почему с include вываливается в ошибку. СПАСИБО за помощь внутри не разворачивается, приходилось хэдер копи-пастом включать Название: 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Цитировать и... Что?Название: 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 |