Форум » [x]Harbour » Как структурируется программа? » Ответить

Как структурируется программа?

evgeny2006: Коллеги! Нужна Ваша помощь в объяснении структуры программы. Уточню вопрос. Как известно большинство программ отлаживается небольшими кусочками, которые затем необходимо объединить. Простой способ - это скопировать и вставить. Поскольку я занимался фокспро более 5-ти лет назад, а Клиппером - лет 20 назад, то естественно возникли проблемы. Например, не рекомендуется изпользовать set procrdure to. Предлагается использовать #include. А почитать - негде. Кроме того все примеры ориентированы на создание одностраничного документа, а там - где многостраничный - такого наворочено, что без поллитра не разберешься. Кроме того , очень капризные команды browse , Edit. У меня файл был в формате sqlite3. Я перевел его в dbf. но упомянутые команды стоят насмерть и выдают ошибки. Это я так - наболело! За всю свою жизнь я не встретил ни одной бесплатной системы, с которой можно было бы работать нормально. Вопрос: Как все же использовать #include. чтобы не перекопировать программы и какова должна быть структура программы? Заранее признателен!

Ответов - 39, стр: 1 2 All

evgeny2006: Haz пишет: добавьте ключ /c в батник Наконец-то добрался до реализации Вашего совета. При компиляции получил кучу ошибок: Error: Unresolved external '_HB_FUN_INITMESSAGES' referenced from K:\FAPP\HARBOU R\FILLDIRLIST\DEMO.OBJ Error: Unresolved external '_HB_FUN__DEFINEWINDOW' referenced from K:\FAPP\HARBO UR\FILLDIRLIST\DEMO.OBJ Получается, что при переходе к консольному режиму нужно подключать какие-то библиотеки. Какие?

evgeny2006: Dima пишет: а собирать удобнее с помощью hbmk2.exe Дошли руки наконец и для применения hbmk2. Но тут облом Нигде не сказано, как прописать путь к hbmk2. А если его прописывать, то потребуется прописать еще кучу путей. Попробовал 2 варианта (по аналогии с compile.bat) call C:\MiniGUI\batch\hbmk2.bat и обращаюсь из командной строки: hbmk2 demo 2-ой вариант call C:\MiniGUI\batch\hbmk2.bat demo.prg и запускаю 2-мя кликами Результат одинаков

Dima: посмотри пример BUILD.BAT из Samples


Vlad04: В MiniGUI все и так работает: через bat и hbmake ( есть две кнопочки на панеле). Можно собирать программы с Gui интерфейсом и консольные. Если ориентироваться на Gui , то и заморачиваться не стоит. После установки MiniGUI все сразу работает как надо! Большое спасибо Григорию!

evgeny2006: Vlad04 пишет: После установки MiniGUI все сразу работает как надо! Иногда надо посмотреть выполнение по командам. Как пользоваться DEBUG из IDE просто нпонятно. Использовать DEBUG из HwGUI, пока не получилось. Но когда компилируешь с помощью compile.bat, необходимо прописывать путь доступа, иначе ошибки. В данном случае - просто заело! При использовании hbmk2.exe - приходится прописывать путь доступа. Но этого оказывается мало. Возникают ошибки компиляции, т.к. не может найти "minigui.ch". После изменения переменной среды с указанием, где искать "minigui.ch", - остается та же ошибка. Т.е. по-хорошему надо задавать параметры в самой строке hbmk2. А тогда теряется простота и универсальность. И кому это нужно!

evgeny2006: PSP пишет: Самое распространенное для вывода на экран: В свое время, для отладки программы в ГУИ, я создавал тестовое поле на форме, а затем постоянно обновлял это поле, добавляя последовательно необходимые строки результатов. Т.е. я мог видеть значения интересующих меня переменных. Есть ли что-нибудь подобное в Habour или снова идти старым проверенным путем?

evgeny2006: Dima пишет: посмотри пример BUILD.BAT из Samples Поискал во всех директориях minigui и не нашел. Можно поточнее адрес?

Dima: evgeny2006 тут например C:\MiniGUI\SAMPLES\BASIC\ON_DROPFILES\

Haz: evgeny2006 пишет: Получается, что при переходе к консольному режиму нужно подключать какие-то библиотеки. Какие? нужно убрать вызовы GUI элементов из Вашего исходника определитесь - или GUI или консоль. Вы пытаетесь GUI приложение собрать в консольном режиме отсюда и ошибка. Как вы представляете себе GUI окно в консоли ? в примерах есть смешанный режим MixMode но это И GUI И консоль

evgeny2006: Haz пишет: Как вы представляете себе GUI окно в консоли ? Спасибо за ответ! Я не представляю себе ГУИ в консоли. Как я уже говорил ранее, я работал с Клиппером примерно 25 лет назад, если не больше. Но поработав с ГУИ в Питон, который и создает ГУИ, и одновременно открывает консоль, если требуется, я вероятно оказался в плену собственных иллюзий. Поэтому и задаю глупые вопросы. Т.е. одновременной работы с ГУИ и консолью в Харбор не предусмотрено.

santy: evgeny2006 пишет: Т.е. одновременной работы с ГУИ и консолью в Харбор не предусмотрено. Евгений, Харбор может работать в MixMode. Примеры в minigui или hmg, возможно есть и в других библиотеках.

Haz: evgeny2006 пишет: Поэтому и задаю глупые вопросы. Вопросы не глупые. как же еще все понять и разобраться. Посмотрите пример MixMode, вам и Santy это же советует. С какой целью нужна консоль ? для отладки модуля ? тогда как вариант логику можно отладить в чистой консоли а потом нарисовать на нее GUI морду.

Andrey: evgeny2006 пишет: Но поработав с ГУИ в Питон, который и создает ГУИ, и одновременно открывает консоль, если требуется, я вероятно оказался в плену собственных иллюзий. Зачем нужна консоль, если задачу сразу можно делать в GUI ? Для проверки переменных в GUI есть классная функция - MsgDebug(val1,val2, aDim, ... и тд.) - выводит в окошечке все эти переменные. Логика консоли и ГУИ немного различается. Я пока привык, замучился.... А ГУИ у Григория сразу собирается после установки его пакета ! Огромное спасибо за его труд !!!! Только в переменных среды компа необходимо установить следующие: Minigui.reg -------------------- REGEDIT4 [HKEY_CURRENT_USER\Environment] "MG_BCC"="Z:\\BCC55" "MG_ROOT"="Z:\\MiniGui" "PATH"="Z:\\BCC55\\BIN;Z:\\MiniGui\\Harbour\\BIN;" -------------- конец Minigui.reg Вместо Z: - поставить свои пути.

Dima: Andrey пишет: Логика консоли и ГУИ немного различается Не фига себе не много , ну ты загнул Andrey пишет: А ГУИ у Григория сразу собирается после установки его пакета Не сразу так как нужно поправить путь к компилятору в батнике

Andrey: Dima пишет: Не фига себе не много , ну ты загнул Ну примерно... Я уже многое в ней понял, так что мне легче теперь объяснять чем отличается МиниГУИ от терминалки (консоли). А вообще МиниГуи - классная вещь (когда поймешь), потихоньку перевожу свои проги на неё.... Маленькие программы делаются вообще на раз !

evgeny2006: Коллеги! Спасибо за подробное объяснение! Я просто тронут! Особенно благодарен Santy, Haz, Andrey и Dima. Andrey пишет: Для проверки переменных в GUI есть классная функция - MsgDebug(val1,val2, aDim, ... и тд.) Собственно это мне и надо было. После несправедливого с моей стороны заявления о неработоспособности функции directory(), необходимо было разобраться, как добраться до переменных. Поскольку Harbour продолжает развиваться и наверняка сюда попадут или новички, или люди с устаревшими знаниями, было бы, на мой взгляд, неплохо создать тему, в которой изложить необходимый инструментарий для начала работы. Где можно попробнее почитать (посмотреть) о фукции MSGdebug()?

Andrey: evgeny2006 пишет: Где можно попробнее почитать (посмотреть) о фукции MSGdebug()? Да не надо нигде смотреть. Бери и пользуйся. Или смотри здесь ветку форума Документация, там где то была дока по МиниГуи.

evgeny2006: Andrey пишет: Только в переменных среды компа необходимо установить следующие: Minigui.reg Скажите, пожалуйста, а внести изменения в переменные среды с помощью "панели управления" можно или обязательно требуется внесение изменений в реестр

Andrey: evgeny2006 пишет: Скажите, пожалуйста, а внести изменения в переменные среды с помощью "панели управления" можно или обязательно требуется внесение изменений в реестр На ваше усмотрение. Или вручную или создать файл реестра и добавить его.



полная версия страницы