Форум » [x]Harbour » Новичок » Ответить

Новичок

AdDa: Добрый вечер. Я впервые сталкиваюсь с данным языком и этой средой. Может кто показать, как создать обычный проект с простенькой программой скомпилировать и запустить ? И что лучше использовать, среду Harbour или CA Clipper ?

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

gustow: Andrey пишет: gustow пишет: _Я_ писал это??? О___о :))

Andrey: gustow пишет: _Я_ писал это??? О___о :)) Это форум сбоит, я просто цитату сделал....

Andrey: rovix пишет: программа проста до безобразия: Вот рабочий пример на МиниГуи - http://files.mail.ru/717B630330424576A84C633D8B6858C7


rovix: Andrey пишет: HB_CDPSelect( "RU866" ) - Убрать совсем вверху и внести в функцию MAIN(). Этот оператор должен включать русскую кодовую страницу 866, а так у вас остается английская кодовая страница и на экране из-за этого "кракозябы" ! Спасибо, так заработало!

rovix: Andrey, спасибо за пример программы и работает и компилируется - буду разбираться дальше.

rovix: gustow пишет: батники для сборки примеров а кнопка "Скомпилировать и запустить" в IDE HMG некорректно работает, собирать обязательно нужно с помощью батника?

gustow: rovix пишет: в IDE HMG Хе-хе! ;) Я как раз и предлагаю обойтись на первых порах (в самых первых примитивных приложениях) без HMG IDE (чтобы прочувствовать, зачем мы пишем каждую строчку). "Вижуалить" много ума не надо - только как "школа" (на первых уроках) это развращает и "расслабляет мозги" на весь дальнейший путь (имхо, конечно)... ;) А вот написать (в "тупом" FARовском редакторе) руками .PRG-файл из 20 строчек, понять, зачем каждый символ, потом запустить элементарный батник из одной строчки - и получить работающее 32-битное "родное" виндовое приложение со всеми "оконными делами"... это хороший стиль для начала, ящитаю ;)

rovix: написать 20 строк в текстовом редакторе не проблема когда знаешь, что писать. "Свижуаленный" текст содержит только минимум информации, всё равно все управляющие директивы (если они нужны) вставлять придётся руками. Вот только где взять список директив, чтобы понять какая нужна в том или ином случае? Под директивами я подразумеваю заклинания типа request, #define , #include, set . На основании своего жизненного опыта я могу прокомментировать практически весь код из примера, который прислал Andrey (ну, правда, часть подсмотрел ранее в последние пару недель пока пытался найти точку отсчёта. Но это когда программа готова, а вот написать такое с нуля.... Ничего подобного мне не попадалось за всё это время поисков в интернете. Нигде не попалось, что версия HMG 3.х.х экспериментальная, примеры там ну просто аховские, да ещё и не работают. Да, я не сказал, в начале, что пользуюсь IDE входящим в поставку пакета. Короче можно долго ещё жалиться на судьбу, давайте двигаться дальше. Чего будем делать дальше? Я сочиняю программу и прошу подсказки когда что-то не получается? Кстати, по поводу элементарного батника из одной строки - имеется ввиду батник вызывающий батник compile из папки bath с передачей ему полученных параметров?

Andrey: rovix пишет: Нигде не попалось, что версия HMG 3.х.х экспериментальная, примеры там ну просто аховские, да ещё и не работают. Бери МиниГуи от Филатова, там больше примеров и более всего понятней, да и помощи проси здесь на форуме в разделе GUI. Бери и используй для работы сначала стандартную связку BCC + MiniGui ! Моя начальная дока по МиниГуи - http://clipper.borda.ru/?1-6-0-00000003-000-0-0-1355737585 Вот новые примеры по МиниГуи, которые я делаю - http://files.mail.ru/F0321CE2BC214FC8994412485BB100C4 rovix пишет: Кстати, по поводу элементарного батника из одной строки - имеется ввиду батник вызывающий батник compile из папки bath с передачей ему полученных параметров? Да это так ! Напиши (нарисуй) какую программу делаешь. Подскажем как реализовать.

gustow: rovix пишет: Ничего подобного мне не попадалось за всё это время поисков в интернете. Я в своем (заброшенном) "курсе молодого бойца" на narod.ru (собственно, расширенном Help'е MinGUI.chm) как раз такой процесс и начал описывать (писание "руками" и "с нуля"): именно что "пока не отвлекаясь на детали (какие вообще есть #define, #include и пр.)", а - для начала - говоря "пока что эти строчки просто скопируй, зачем они нужны - разберемся позже, когда первые простейшие приложения научишься создавать". Насчет rovix пишет: версия HMG 3.х.х экспериментальная, примеры там ну просто аховские, да ещё и не работают. не знаю - пользуюсь тем, что Григорий выкладывает; да, возможно, в некоторых случаях там что-то и не работает из примеров, но BASIC - работает вроде бы всё, и так, как должно работать. Я же предложил (как мне кажется, правильную) последовательность: "пункт 1й - ВЫ кратко описываете, что хотите построить - какое по ФУНКЦИОНАЛУ приложение, начальные/граничные условия..." и т.д. Если хотите, чтобы процесс "написания чайниковского мануала параллельно написанию приложения" был построен как-то по-другому - предлагайте (или кто-то пусть предложит) как. "Искусство программирования Дональда Кнута в 3-х толстенных томах" или керниган-ричевское "Программирование на С" писать не собираюсь (времени-сил-способностей не имею)... ;) Хотя если кто-то напишет - с удовольствием (и, надеюсь, с пользой для себя) почитаю.

rovix: Телефонный справочник. Главное окно: На форме выведен список телефонных номеров отсортированный по фамилии. Поля в телефонном справочнике: -ТелНомер: строка, 7 символов, принимаются только цифры; -МобНомер: мобильный номер, строка, 15 символов, принимаются только цифры; -Фамилия: строка 30 символов; -Имя: строка 20 символов; -Отчество: строка, 30 символов; -Адрес: строка, 100 символов; -Место работы: строка, 100 символов; -Примечание: строка, 100 символов. На форме присутствуют кнопки: -Добавить: добавить контакт; -Изменить: изменить контакт,выскакивает модальное окно с полями входящими в БД (карточка клиента); -Удалить: удалить контакт, естественно переспросив пользователя; -Поиск: поиск контакта по любому полю имеющемуся в таблице; -Печать: печать текущей телефонной карточки; -Выход: выход из телефонного справочника. Кроме этого, форма реагирует на нажатия клавиш: -Ctrl+A: добавить контакт; -Ctrl+E: изменить контакт; -Ctrl+F: поиск; -Ctrl+P: печать; -Ctrl+X: выход из справочника; -Ctrl+Y: удалить контакт. Примерно такой вод телефонный справочник. Вообщем-то для учебных целей можно, конечно же, часть этого функционала убрать или упростить, например, сделать поиск только по фамилии.

gfilatov2002: rovix пишет: Телефонный справочник. В первом приближении поставленную задачу покрывает пример из папки minigui\samples\Basic\BROWSE_8 По шагам: 1) создайте базу данных требуемой структуры 2) откомпилируйте вышеуказанный пример с помощью батника Compile.bat 3) откройте в запущенной программе ранее созданную базу Вот и все

rovix: Andrey, а для чего используется в твоём первом примере вывод в гриде через массив, а не напрямую из таблицы? Для защиты исходного содержимого файла или так быстрее работает форма? Мне кажется, что при таком подходе расходы памяти при работе программы будут выше, а время отображения формы больше, чем при работе напрямую с таблицей. Как пример очень интересно, однако интересно с какой целью это можно использовать.

Andrey: rovix пишет: Andrey, а для чего используется в твоём первом примере вывод в гриде через массив, а не напрямую из таблицы? Для защиты исходного содержимого файла или так быстрее работает форма? Это же конечно просто пример. Показ работы с 2-мя базами в различной кодовой страницы и вывод на ОДНУ форму ! rovix пишет: Мне кажется, что при таком подходе расходы памяти при работе программы будут выше, а время отображения формы больше, чем при работе напрямую с таблицей. Да, это так. Но в качестве примера можете поставить 2 самые большие ваши базы и написать, сколько "откушала" программа на МиниГуи у системы. Я думаю многим будет интересно !

rovix: Подскажите, а что команда EVAL требует каких-то предварительных пасов для своего использования? Включил в текст программы EVAL - в ответ получил ошибку: [pre2]--------------------------- Program Error --------------------------- Error BASE/1004 No exported method: EVAL Called from (b)EVAL(0) Called from MAIN(5) --------------------------- ОК --------------------------- [/pre2] чтобы это могло значить?

rovix: может не по тому пути иду :( Стоит задача получить значение контрола на форме(чекбокса) получив его имя из составляющих, то есть есть несколько контролов с именем типа Check_XXX, Check_YYY и так далее. Как получить значение не указывая прямо win1.Check_XXX.Value, подставляя полученное программным путём XXX или YYY?

PSP: rovix, вы бы показали, что там Eval должен съэвалить... )))

rovix: ну что-то типа: [pre2] ... var1="XXX" state := eval("win1.Check_" + var1 + ".Value") if (state == .T.) ... else ... endif [/pre2]

rovix: набрёл здесь на форуме на статью про макроподстановку (&) для clipper, почти получилось, но чуть-чуть не хватает теории его применения относительно minigui

Dima: rovix пишет: state := eval("win1.Check_" + var1 + ".Value") Цитата из NG Сlipper [pre2] EVAL() Выполняет блок кода. ------------------------------------------------------------------------------ Синтаксис EVAL(<блок кода>,[<список аргументов>]) --> значение последнего выражения [/pre2]



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