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

Новичок

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

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

alkresin: CA Clipper - 16-разрядная среда, не развивавшаяся с 1995 года, так что, конечно, Harbour. Почитайте http://kresin.belgorod.su/rus/harbour.html .

rovix: Доброго времени суток. Недавно набрёл на информацию о существовании этого языка. Когда-то был недолгий опыт работы с клиппером, потом судьба разлучила нас :) Заинтересовался, скачал сборку HMG 3.1.1, установил и тут началось. В папке samples мелкие примеры с гуи вроде нормально компилятся и работают. Добрался до папки tutorial (меня в первую очередь, точнее, в основном интересует работа с базой данных) примеры, то не компилируются, то компилируются, но не работают. Перепробовал несколько версий (3.1.0, 3.0.46, 3.0.40, 3.0.20) и примеры tutor20, tutor21 и из папки sqlite одноимённый пример. Прописал пути к компилятору и hbmk2 (без этого даже компилировать не давала) Так вот в разных версиях по разному ... Когда говорил "не работают" выше по тексту, то имел ввиду поведение следующее, программа подразумевает, что изменённые в табличке(на форме) должны сохраняться в самом dbf-файле,а они не сохраняются, dbf-файл остаётся не изменённым. Нашёл версию, где скомпилированная программа правильно работает с dbf-файлом, но в этой версии компиляция проходит только если преварительно удалить ранее собранную программу (exe-файл) в протином случае при компиляции ругается на невозможность удалить этот файл. Короче полный абзац. При этом на форуме нет ни слова про такие проблемы :( Так что же у меня не так? Какая версия HMG считается стабильной? С чего же начать если хочется создавать гуи-программу для работы с базами данных? Сайт Кресина уже читал. Извиняюсь за сумбурность поста, но за две недели так и не удалось найти отправную точку для работы с харбуром, помогите

alkresin: Про HMG ничего не могу сказать. Если, как я понял, в ее сборку включен и сам Harbour, то это, на мой взгляд, не лучшая идея. Есть сам Harbour, его желательно брать с официального сайта, а есть к нему, в числе прочего, и разные GUI библиотеки, их тоже надо, я считаю, брать отдельно, чтобы сразу было четкое понимание структуры всего этого дела. Лично я порекомендовал бы свою HwGUI - но не буду настаивать. программа подразумевает, что изменённые в табличке(на форме) должны сохраняться в самом dbf-файле,а они не сохраняются, dbf-файл остаётся не изменённым. Нашёл версию, где скомпилированная программа правильно работает с dbf-файлом, Думаю, дело не в версии самой HMG, а в той программе - посмотрите код, сравните с новым. rovix пишет: но в этой версии компиляция проходит только если преварительно удалить ранее собранную программу (exe-файл) в протином случае при компиляции ругается на невозможность удалить этот файл Скорее всего, этот exe был у вас запущен, версия тут ни при чем. С чего же начать если хочется создавать гуи-программу для работы с базами данных? GUI - отдельно, базы данных - отдельно, одно с другим никак не связано. Попробуйте сначала без всякой GUI библиотеки написать что-нибудь для работы с БД - простую консольную программу на Харборе, точно такую, как если бы писали на Клиппере. А потом используйте наработанный код - чтение/поиск/добавление/изменение данных в выбранной вами GUI оболочке.


Andrey: AdDa пишет: Может кто показать, как создать обычный проект с простенькой программой скомпилировать и запустить ? Читайте раздел ДОКУМЕНТАЦИЯ, там много чего есть. Первые шаги смотрите - http://clipper.borda.ru/?1-6-0-00000002-000-0-0-1355737108

Панченко: Как вариант, можно посмотреть MiniGUI. gfilatov2002 пишет: Новый релиз библиотеки для компилятора BCC выложил на обновленном сайте по адресу: http://hmgextended.com/files/CONTRIB/hmg-2.1.9-setup.zip Также доступна полная сборка для компилятора MinGW по адресу: http://hmgextended.com/files/CONTRIB/hmg219-mingw.exe Новый релиз библиотеки для компилятора BCC перезалил также по адресу: http://minigui.mylivepage.ru/file/?fileid=8715 В папке Samples\Basic присутствуют примеры работы с БД с графическим интерфейсом. Все примеры рабочие! Удачи!

rovix: alkresin пишет: Про HMG ничего не могу сказать. Если, как я понял, в ее сборку включен и сам Harbour, то это, на мой взгляд, не лучшая идея. Есть сам Harbour, его желательно брать с официального сайта, а есть к нему, в числе прочего, и разные GUI библиотеки, их тоже надо, я считаю, брать отдельно, чтобы сразу было четкое понимание структуры всего этого дела. Лично я порекомендовал бы свою HwGUI - но не буду настаивать. Да HMG включает в себя всё необходимое с точки зрения создателя пакета для работы программиста. Я не против иметь чёткое понимание структуры, но где почитать как подключать ГУИ-библиотеки к чистому харбору? Какая должна быть структура папок? Я и чистый харбор пробовал и HwGUI, правда сказать сейчас где чего не получалось уже не получится - всё смешалось в голове, пакеты, версии...) цитата: программа подразумевает, что изменённые в табличке(на форме) должны сохраняться в самом dbf-файле,а они не сохраняются, dbf-файл остаётся не изменённым. Нашёл версию, где скомпилированная программа правильно работает с dbf-файлом, Думаю, дело не в версии самой HMG, а в той программе - посмотрите код, сравните с новым. Вот текст примера. Никаких, вроде бы, сложностей. [pre2]#include "hmg.ch" Function Main DEFINE WINDOW Win_1 ; AT 0,0 ; WIDTH 640 ; HEIGHT 480 ; TITLE 'Tutor 21: Data-Bound Controls Test' ; MAIN ; ON INIT OpenTables() ; ON RELEASE CloseTables() DEFINE TOOLBAR ToolBar_1 BUTTONSIZE 100,30 FLAT RIGHTTEXT BORDER BUTTON TOP ; CAPTION '&Top' ; PICTURE 'primero.bmp' ; ACTION ( DbGoTop() , Refresh() ) BUTTON PREVIOUS ; CAPTION '&Previous'; PICTURE 'anterior.bmp' ; ACTION ( DbSkip(-1) , Refresh() ) BUTTON NEXT ; CAPTION '&Next'; PICTURE 'siguiente.bmp' ; ACTION ( DbSkip(1) , if ( eof() , DbGoBottom() , Nil ) , Refresh() ) BUTTON BOTTOM ; CAPTION '&Bottom' ; PICTURE 'ultimo.bmp' ; ACTION ( DbGoBottom() , Refresh() ) BUTTON SAVE ; CAPTION '&Save' ; PICTURE 'guardar.bmp' ; ACTION ( Save() , Refresh() ) BUTTON UNDO ; CAPTION '&Undo' ; PICTURE 'deshacer.bmp' ; ACTION ( Refresh() ) END TOOLBAR @ 50,10 LABEL LABEL_1 VALUE 'Code:' @ 80,10 LABEL LABEL_2 VALUE 'First Name' @ 110,10 LABEL LABEL_3 VALUE 'Last Name' @ 140,10 LABEL LABEL_4 VALUE 'Birth Date:' @ 170,10 LABEL LABEL_5 VALUE 'Married:' @ 200,10 LABEL LABEL_6 VALUE 'Bio:' @ 50,200 TEXTBOX TEXT_1; FIELD TEST->CODE ; NUMERIC ; MAXLENGTH 10 @ 80,200 TEXTBOX TEXT_2; WIDTH 150 ; FIELD TEST->FIRST ; MAXLENGTH 30 @ 110,200 TEXTBOX TEXT_3; WIDTH 150 ; FIELD TEST->LAST ; MAXLENGTH 30 @ 140,200 DATEPICKER DATE_4 ; FIELD Test->Birth @ 170,200 CHECKBOX CHECK_5 ; CAPTION '' ; FIELD Test->Married @ 200,200 EDITBOX EDIT_6 ; FIELD Test->Bio ; HEIGHT 100 END WINDOW Win_1.Text_1.SetFocus ACTIVATE WINDOW Win_1 Return Nil Procedure Refresh Win_1.Text_1.Refresh Win_1.Text_2.Refresh Win_1.Text_3.Refresh Win_1.Date_4.Refresh Win_1.Check_5.Refresh Win_1.Edit_6.Refresh Win_1.Text_1.SetFocus Return Procedure Save Win_1.Text_1.Save Win_1.Text_2.Save Win_1.Text_3.Save Win_1.Date_4.Save Win_1.Check_5.Save Win_1.Edit_6.Save Return Procedure OpenTables USE TEST Return Procedure CloseTables USE Return[/pre2] Всё просто и понятно, но скомпилированная одной версией программа сохраняет изменённые данные, а в другой не сохраняет :( цитата: но в этой версии компиляция проходит только если преварительно удалить ранее собранную программу (exe-файл) в протином случае при компиляции ругается на невозможность удалить этот файл Скорее всего, этот exe был у вас запущен, версия тут ни при чем. Я бы тоже так сказал, если бы у меня кто-то спросил. Я смотрел и в процессах и вручную экзешники удаляются без проблем. цитата: С чего же начать если хочется создавать гуи-программу для работы с базами данных? GUI - отдельно, базы данных - отдельно, одно с другим никак не связано. Попробуйте сначала без всякой GUI библиотеки написать что-нибудь для работы с БД - простую консольную программу на Харборе, точно такую, как если бы писали на Клиппере. А потом используйте наработанный код - чтение/поиск/добавление/изменение данных в выбранной вами GUI оболочке. Пробовал и на простом харборе сделать консольную программу для простой работы с таблицей через browse() - таблица выводится, но нормально выводится только английский шрифт, с кирилическим шрифтом так и не получилось побороть хотя перепробовал все варианты найденные и на этом сайте и на других (ну по крайней мере, я так думаю, что всё перепробовал ). Кстати когда пробовал в ГУИ, то там проблему с кирилическим шрифтом решил сразу)

PSP: Текст программы, который вы показали, это пример DATA_BOUND из комплекта MiniGui. У меня он работает.

rovix: а какая версия MiniGUI стоит?

Andrey: rovix пишет: Пробовал и на простом харборе сделать консольную программу для простой работы с таблицей через browse() - таблица выводится, но нормально выводится только английский шрифт, с кирилическим шрифтом так и не получилось побороть хотя перепробовал все варианты найденные и на этом сайте и на других (ну по крайней мере, я так думаю, что всё перепробовал Слушайте, это даже смешно.... Кто здесь на сайте присутствует, у того проблем с русским языком в терминалке НЕТ ! Выкладывайте свой код программы, покажем где и что добавить нужно. И указывайте, на чем собираете (версию) компилятора. MiniGui - работает с базами на любом языке ! Проблем вообще не наблюдаю.

Dima: Andrey пишет: Слушайте, это даже смешно... Да ни чего смешного ..... Andrey пишет: Выкладывайте свой код программы +1

alkresin: rovix пишет: как подключать ГУИ-библиотеки к чистому харбору? Какая должна быть структура папок? Все гораздо проще :). Все зависит от инструмента, которым вы строите свою программу. Раз вы имели дело с HwGUI, то там были bat файлы, в которых содержатся команды вызова компилятора Harbour, С компилятора и линкера. Вот там, в этом bat файле надо указать правильный путь к библиотекам Harbour и GUI библиотекам, где бы они ни находились. В случае с HMG - понятия не имею, чем там строятся программы, но наверняка и там можно где-то пути указать. rovix пишет: Вот текст примера. Никаких, вроде бы, сложностей. Хм... Могу предположить, что сохранение производится в строках Win_1.Text_1.Save, но как реализован этот Save - кто его знает... Если это где-то внутри HMG, то, может, действительно в вашей версии ошибка была. Именно поэтому для начинающего это, мне кажется, не лучший вариант. Вы еще не научились работать с БД, используя родные средства Клиппера/Харбора, а вам уже подсовывают оболочки, где эти родные средства глубоко упрятаны. Я смотрел и в процессах и вручную экзешники удаляются без проблем. Может, там используется make-система и exe не удалялся потому, что дата его создания больше, чем даты создания объектных файлов и prg ? Пробовал и на простом харборе сделать консольную программу для простой работы с таблицей через browse() - таблица выводится, но нормально выводится только английский шрифт, с кирилическим шрифтом так и не получилось А в какой кодировке данные в dbf, 866 или 1251 ?

gustow: Посмотрите, если интересно - некогда начал [да забросил :( ] "курс молодого бойца по Harbour MiniGUI" (собственно, расширенный вариант MiniGUI.chm) (там хотя бы "начало начал" есть - но до работы с базами не добрался); может быть, поможет "самые азы" освоить, хоть самые первые приложения на МиниГУИ сделать - дальше проще будет, можно уже разбираться по примерам (хотя бы начиная с \MiniGUI\SAMPLES\BASIC).

rovix: программа проста до безобразия: [pre2] REQUEST HB_CODEPAGE_RU866 REQUEST HB_CODEPAGE_RU1251 HB_CDPSelect( "RU866" ) PROCEDURE MAIN() LOCAL aStruct SET DELETED OFF CLEAR SCREEN USE test.dbf CODEPAGE "RU866" BROWSE() RETURN [/pre2] Компилирую с помощью hbmk2 (Harbour Make (hbmk2) 3.0.0 (Rev. 16951))

rovix: gustow пишет: Посмотрите, если интересно - некогда начал [да забросил :( ] "курс молодого бойца по Harbour MiniGUI" (собственно, расширенный вариант MiniGUI.chm) (там хотя бы "начало начал" есть - но до работы с базами не добрался); может быть, поможет "самые азы" освоить, хоть самые первые приложения на МиниГУИ сделать - дальше проще будет, можно уже разбираться по примерам (хотя бы начиная с \MiniGUI\SAMPLES\BASIC). Спасибо, с простыми примерами входящими в состав пакета HMG у меня получается, но поскольку не получается элементарная операция углубляться как-то не резонно.

gustow: rovix , вот давайте-ка на Вашем примере (разбирая по шагам) и начнем делать "Harbour + MiniGUI для чайников"! Вы - как раз очень подходящий "объект" для "сравнительно честного разбора полетов" ;) Можно это (наверное, даже лучше будет) в отдельную ветку форума вынести (ну, или здесь продолжить)... Сначала четко (и кратко; то, что у сценаристов в кино называется "синопсис") сформулируйте задачу: "я хочу сделать прогу, которая будет делать вот это!.." (что-то простое для начала). И - поехали "по шагам"! (на каждом этапе не оставляя "за спиной" неясностей "на потом" - чтобы четко понимать, зачем мы делаем или пишем вот то-то или то-то...) Итак - ЦЕЛЬ (функционал) СОЗДАНИЯ ПРОГРАММЫ? (к примеру, "Телефонный справочник" ;) )

rovix: Согласен, это будет здорово. Телефонный справочник, очень даже подойдёт.

gustow: rovix , в общем, теперь ВЫ - главный "пинатель" и "шило в заднице" в этой теме :)) (в хорошем смысле!) Теребите "ветеранов" и "гуру", пока в каждом конкретном этапе не остается для ВАС "белых пятен" (для создания данного простого приложения - "навороты" будете изучать и осваивать потом!). Итак, вопросы?.. И - будем фиксировать каждй шаг в Викиучебнике "для чайников за 5 минут", да? (как у какого-нибудь Аристотеля, в виде "диалогов") Или?.. З.Ы. Сразу предупреждаю относительно себя: я пользую HMG + BCC ("стандартную поставку Григория Филатова"). Если для Вас желательно использовать компилятор mingw - у меня лично опыта работы с ним нет (или мизерно мало) и лично я буду менее полезен. Но, надеюсь, НЕ только я буду принимать участие в роли (хотя б относительного) "ветерана", а и другие?.. ;)

rovix: Для того, чтобы осознанно выбрать BCC или MinGW нужно знать преимущества и недостатки каждого из них. На текущий момент мне абсолютно всё равно каким компилятором пользоваться. Было только одно соображение в пользу MinGW, он более свежий, а значит, теоретически, лучше. HMG скачал по ссылке в этом топике 2.1.9, BCC тоже стоит. Подходит?

Andrey: gustow пишет: программа проста до безобразия: REQUEST HB_CODEPAGE_RU866 REQUEST HB_CODEPAGE_RU1251 HB_CDPSelect( "RU866" ) PROCEDURE MAIN() LOCAL aStruct SET DELETED OFF CLEAR SCREEN USE test.dbf CODEPAGE "RU866" BROWSE() RETURN HB_CDPSelect( "RU866" ) - Убрать совсем вверху и внести в функцию MAIN(). Этот оператор должен включать русскую кодовую страницу 866, а так у вас остается английская кодовая страница и на экране из-за этого "кракозябы" !

gustow: rovix пишет: Подходит? Вполне! (для меня, по крайней мере ;) пользую то же самое). В общем-то, от компилятора (BCC или mingw), думаю, мало что зависит в данном случае: просто берем "филатовскую" сборку HMG для соотв.компилятора, а батники для сборки примеров (надеюсь - поскольку mingw-шную сборку не смотрел) не отличаются, и в исходниках проги (которую мы пишем) разницы (не [должно] быть) никакой.



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