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

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

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

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

azoo: #Include "XXX.prg" используй в конце главного модуля. Т.е. последними строчками главного модуля будет например группа: #include "F1.prg" #include "F2.prg" ........ #include "Fn.prg"

evgeny2006: azoo пишет: #Include "XXX.prg" используй в конце главного модуля. Спасибо! А как вывести на форму текст в русской транскрипции (по-просту по-русски). Если я компилирую программу через hmg_IDE, то все получается нормально. А если компилирую .bat файлом - то кракозябры. Вот .bat файл call C:\MiniGUI\batch\compile.bat demo %1 %2 %3 %4 %5 %6 %7 %8 %9

Haz: evgeny2006 пишет: Как все же использовать #include. чтобы не перекопировать программы Лучше использовать редактор с поддержкой проектной организации разрабатываемой программы, к примеру бесплатные Notepad++ или xEdit3. xEdit - бесплатный кусок от коммерческого Xailer и заточен под Harbour. Разбиваешь программу на модули ( .prg ) по любому признаку - функциональному, смысловому и пр. т.е. как угодно. Объединяешь модули в один проект и никаких инклюдов. При сборке проекта компилируются только измененные модули и если их размер не очень большой, то сборка идет очень быстро. В текущем проекте у меня более 120 модулей и 1,5 МБ исходного кода, в отлаживаемом модуле 700 строк время сборки проекта на стареньком компе 12 секунд


Haz: Haz пишет: Если я компилирую программу через hmg_IDE это уже лучше в ветке GUI обсудить, и лучше взглянуть demo.prg

evgeny2006: Haz пишет: это уже лучше в ветке GUI обсудить, и лучше взглянуть demo.prg Да я и отлаживаю demo, заменив латиницу на русский шрифт. Вероятно есть какие-то настройки, до которых я еще не смог добраться. За ответы - щчень для меня полезные - СПАСИБО!

evgeny2006: Haz пишет: xEdit - бесплатный кусок от коммерческого Xailer и заточен под Harbour Скачал версию 3.2, но настроить ее никак не могу. То не сохраняет установленные директории, то отсутствует возможность установить среду. Это так называемое бесплатное ПО. Предполагаю, что это делается умышленно! Конечно, можно вручную отредактировать файл конфигурации. Но возникает вопрос, не выкинут ли авторы что-нибудь по-круче в процессе разработки. Ксати посмотрел доступ к БД, попробовал модифицировать таблицу. Внешне все ОК, но сохранять отказывается. Вы какой версией пользуетесь?

azoo: Тоже скачал xEdit. Внешне xEdit выглядит солидно. Похож на старый Delphi. Работать с Harbour через IDE наверное удобнее. Может есть какой пошаговый хелп для первичной настройки? Я так понимаю он должен знать где находится компилятор, библиотеки и т.д.

Haz: evgeny2006 пишет: Вы какой версией пользуетесь? пользуюсь версией 3.2 все настраивается нормально и работает , включая работу с БД. Из глюков замечено следующее 1 окно отладчика вылезает когда не надо ( лечится один раз убиранием его мышью за границы экрана ) 2 иногда вылетает при активной работе с букмарками в целом полностью устраивает как бесплатное ПО. azoo пишет: Может есть какой пошаговый хелп для первичной настройки? хелп есть сайте и форумах разработчика , для Xailer ( Xedit - его компонент ) если коротко 1.Tools -> Programming enviroment -> [ + ] - добавить название среды и заполняем вкладки ( xBase compiler, C compiler, Resource compiler , Linker). 2 создаем новый проект Project-> project properties - заполняем Main и Libraries ( в Main выбираем имя Enviroment из п1) 3 добавляем в проект нужные PRG и работаем

azoo: Haz, в xEdit кодировка только Windows? Похоже что 866 кодировка не поддерживается. Русские буквы некорректно отображаются. Есть повод всё перевести на Windows-кодировку.

Haz: azoo пишет: кодировка только Windows проверь каким шрифтом рисует , если в OEM нужно - поменяй на Terminal Tools->Editor option->Syntax

evgeny2006: Haz пишет: хелп есть сайте и форумах разработчика , для Xailer ( Xedit - его компонент ) если коротко Спасибо за разъяснение!!!

evgeny2006: Haz пишет: проверь каким шрифтом рисует , если в OEM нужно - поменяй на Terminal Мой вопрос касается работы в Windows с выводом результатов нв консоль. Часто требуется проверить какой-либо кусок программы без необходимости вывода результатов в окна. Как организовать такую программу? Как ее компилировать и линковать?

PSP: evgeny2006 пишет: Часто требуется проверить какой-либо кусок программы без необходимости вывода результатов в окна. Функции hb_ANSItoOEM() и hb_OEMtoANSI() подойдут?

evgeny2006: PSP пишет: Функции hb_ANSItoOEM() и hb_OEMtoANSI() подойдут? Видимо есть какая-то специфика работы с Harbour в Windows, которую я не могу ухватить. При работе с окнами - вопросов нет. Я же хочу просто вывести результаты на консоль (экран), т.е. применить команду аналогичную print, использующуюся во многих языках программирования. Вот здесь и облом. Я использую стандартные .bat файлы для компиляции и линкования. Возможно где-то в них необходимо вносить изменения. Попробовал примеры из справочника по функциям - тишина! Если подскажите где почитать, буду весьма признателен. Нужно ли подключать какие-либо библиотеки при использовании функций hb_ANSItoOEM() и hb_OEMtoANSI() Спасибо за ответ!!!

PSP: evgeny2006 пишет: Я же хочу просто вывести результаты на консоль (экран), Может я туплю... ) Самое распространенное для вывода на экран: 1. Команды ? или ?? (http://www.ousob.com/ng/53guide/ngab504.php) 2. Команда @ SAY (http://www.ousob.com/ng/53guide/ngba99e.php) Или вы что-то другое хотите спросить?

evgeny2006: PSP пишет: Или вы что-то другое хотите спросить? Я имел ввиду нечто другое. По Вашему совету я использовал пример, в который добавил пару строк // The example demonstrates the effect of ANSI<->OEM conversion // using a character string where the conversion is not reversible. // The character string contains characters used for line graphics // in DOS. //#include "minigui.ch" //#Include "Fileio.CH" #include "Box.ch" PROCEDURE Main LOCAL cOEM1 := B_SINGLE LOCAL cANSI := HB_OemToAnsi( B_SINGLE ) LOCAL cOEM2 := HB_ANsiToOem( cANSI ) DispBox(10, 10, 20, 20, cOEM1 ) @ Row(), COl() SAY "OEM1" DispBox(10, 30, 20, 40, cANSI ) @ Row(), COl() SAY "ANSI" DispBox(10, 50, 20, 60, cOEM2 ) @ Row(), COl() SAY "OEM2" @ MaxROw()-1, 0 WAIT RETURN Так вот. Если я запускаю этот пример с помощью hbrun.exe, то он нормально отрабатывает. Правда внешний вид на консоли ужасный. Если же я компилирую и линкую программу с помощью .bat файла call C:\MiniGUI\batch\compile.bat test2 %1 %2 %3 %4 %5 %6 %7 %8 %9 то на экран вообще ничего не выводится. Вопрос состоял в том, как запускать такие программы.

Dima: evgeny2006 пишет: call C:\MiniGUI\batch\compile.bat test2 %1 %2 %3 %4 %5 %6 %7 %8 %9 то на экран вообще ничего не выводится. скорее всего дело в том что батник сборки заточен не на консоль а на GUI интерфейс. а собирать удобнее с помощью hbmk2.exe

Haz: Dima пишет: то на экран вообще ничего не выводится. добавьте ключ /c в батник call C:\MiniGUI\batch\compile.bat test2 /С %1 %2 %3 %4 %5 %6 %7 %8 %9 PS в самом батнике написано /C - консольный режим

evgeny2006: Haz пишет: добавьте ключ /c в батник Спасибо большое!!!

evgeny2006: Dima пишет: а собирать удобнее с помощью hbmk2.exe Я пробовал пару раз, что-то не получилось и я на время отложил его использование. Предпочтительно, конечно, использовать hbmk2.exe Спасибо!



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