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

hbmk2

Pasha: Как задать сборку библиотеки, если сырцы находятся в разных каталогах ? Причем в файле hbp не хотелось бы указывать абсолютный путь Хотелось бы задать переменные окружения: set HB_CT=\harbour\contrib\hbct\ set HB_WIN=\harbour\contrib\hbwin\ и затем их использовать в *.hbp, что-то вроде: $(HB_CT)addascii.c ... $(HB_WIN)axcore.c

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

AlexMyr: Как вариант в каждом каталоге создать hbm с нужными файлами, а в главном hbp указать эти hbm. Только что проверил на letodb ======================== rddleto.hbp ======================== # # $Id: rddleto.hbp,v 1.3.2.3 2011/08/01 16:10:56 ptsarenko Exp $ # # static lib -hblib # shared lib, dll or so #-hbdynvm #-shared -nohbc -inc -olib/rddleto -iinclude -n -w -q0 -es2 source/client/leto1.c source/client/letomgmn.c source/client/rddsys.prg source/common/common.hbm end =================================== common.hbm (source/common/) ====================== blowfish.c common_c.c hbip.c net.c end=============================== Потом hbmk2 rddleto.hbp letodb.hbp и все нормально.

Pasha: Столкнулся с какой-то совершенно бредовой ситуацией Использую релиз Harbour 3.0 С помощью hbmk2 собираю свою либу, в которой более сотни модулей. В этих модулях (prg) часто встречаются конструкции вида: #ifdef __HARBOUR__ ... #endif #ifndef __HARBOUR__ ... #else ... #endif Заметил, что многие модули были скомпилированы, как будто __HARBOUR__ не определен. Поставил флажок -p, посмотрел ppo - действительно так. Причем первые несколько модулей собираются с __HARBOUR__ а начиная где-то с 9-го - без. Если я правлю 9-й модуль, и запускаю hbmk2, то перекомпилируется только он один, и с уже определенным __HARBOUR__ Даже не представляю, как сделать пример :(

AlexMyr: Я с такой ситуацией не сталкивался, потому лучше сразу в Harbour dev list думаю будет быстрее.


Pasha: Нашел, где собака порылась Если в каком-то модуле присутствует строка: #include "hbver.h" то в модулях, которые компилируются после него, __HARBOUR__ не определен. По-видимому, этот баг возникает, если компилятору harbour.exe задать компиляцию сразу нескольких модулей Если их компилировать по отдельности, то все в порядке Написал в devlist

Sergey Spirin: У меня, кстати, тоже уже бразильцы проявились с сообщением, что не могут собрать простой пример с frh. Попробовал, и смог собрать только с harbour-30-bcc.lib, без нее идет ошибка про WsAIoctl() (?). Ниже мой ответ бразильцу с текстом bat-ника. -- Hello, Julian, > I have problem when compiling fastreport demo with harbour 3: > Hbmk2 smpldemo fastreph I downloaded Harbour3 and I can compile smpldemo. My bat-file bellow. Firstly rename CurDrive() to hb_CurDrive() in smpldemo. I compiled smpldemo with harbour-30-bcc.lib, without it some problems with WsAIoctl() but it seems bug in Harbour3, of course not in FRH. And it seems it's one of reason why Hbmk2 does not work correctly. ---- @ECHO ON @set HB_BIN_INSTALL=D:\hb30\bin @set HB_LIB_INSTALL=D:\hb30\lib\win\bcc @set HB_INC_INSTALL=D:\hb30\include del FastDemo.c del FastRepH.c %HB_BIN_INSTALL%\harbour SmplDemo.prg -n -i%HB_INC_INSTALL% %HB_BIN_INSTALL%\harbour FastRepH.prg -n -i%HB_INC_INSTALL% bcc32 -O2 -d -X -I%HB_INC_INSTALL% -L%HB_LIB_INSTALL% SmplDemo.c FastRepH.c harbour-30-bcc.lib hbvm.lib hbrtl.lib hbrdd.lib hbmacro.lib hbpp.lib rddntx.lib rddcdx.lib rddfpt.lib hbcommon.lib gtwin.lib hblang.lib hbcpage.lib hbct.lib hbpcre.lib hbsix.lib hbzlib.lib hbextern.lib hbhsx.lib rddnsx.lib --- Spirin Sergey. "Paritet Soft" Company. FRH sales: http://www.paritetsoft.ru/frh.htm FRAX sales: http://www.paritetsoft.ru/frax.htm

Pasha: Вроде бы ничего особенного в этой функции нет А что за ошибка ? Unresolved external ? Либа соответствующая указана ?

PSP: Имхо, в BCC в либе ws2_32.lib имеется эта функция. Видимо, Harbour 3.0 сам ее подтягивает.

Sergey Spirin: Pasha пишет: А что за ошибка ? Unresolved external ? Да: Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland Error: Unresolved external 'WSAIoctl' referenced from D:\HB30\LIB\WIN\BCC\HBRTL.LIB|hbsocket Pasha пишет: Либа соответствующая указана ? Какая? Вроде обыскался, на вскидку не смог найти

Pasha: ws2_32.lib

Pasha: Сделал dll. Хочу сделать соответствующую impoty library Читаю help для hbmk2: -hbimplib create import library Задаю для hbmk2 соответствующую опцию impoty library не создается. Делаю ручками Для bcc она делается с помощью implib, а как для mingw ? Выдаю команду if exist hbcontrib.dll dlltool -D hbcontrib.dll -l hbcontrib.lib Либа создается нулевой длины и с лаконичным сообщением: dlltool: CreateProcess Как победить ? Хотелось бы прежде всего пнуть hbmk2

Sergey Spirin: PSP пишет: Имхо, в BCC в либе ws2_32.lib имеется эта функция. Вау! Добавил ws2_32.lib и действительно скомпилилось Да, про борландовские либы я и не подумал, искал в харбурных... Интересно, что же в моем примитивном примере такого, что цепляется аж сокетное WinAPI? http://www.paritetsoft.ru/downloads/frh_demo_simple_console.zip

Sergey Spirin: Sergey Spirin пишет: Интересно, что же в моем примитивном примере такого, что цепляется аж сокетное WinAPI? И размер exe вырос с 1.5 до 2.5 мегабайт.... На совсем почти голом приложении... Зачем все пихать в rtl? Как-то все это настораживает... В особенности, уровень профессионализма исполнителей...

Pasha: Sergey Spirin пишет: Интересно, что же в моем примитивном примере такого, что цепляется аж сокетное WinAPI? Все файловые функции харбора допускают работу с файлами в памяти (префикс "mem:") и по сети через netio сервер (префикс "net:"). Эти же средства поддерживаются всеми стандартными rdd*. Для доступа через net: и необходимо сокетное api. В стандартной сборке эти средства включены. При желании можно собрать харбор и без них. Все это появилось в харборе уже 2 года как.

Pasha: Sergey Spirin пишет: И размер exe вырос с 1.5 до 2.5 мегабайт.... На совсем почти голом приложении... Зачем все пихать в rtl? Как-то все это настораживает... В особенности, уровень профессионализма исполнителей... ? Hello, world собранный Harbour 2.0 (2009 год), имеет размер 620К, а собранный Harbour 3.0 - на 15К больше. Так что с профессионализмом разработчиков все в порядке. Более того. Я смотрю, у нынешней версии Harbour по сравнению с xHarbour скорость выполнения операций rdd выше примерно на 30%. Так что не беспокойтесь, профессионализм высокий.

Sergey Spirin: Pasha пишет: ? Hello, world Угу, Паш, на меньшем ты проверить не мог? На самом примитивном демо, ссылку на которое ты можешь увидеть выше: Harbour 0.97 - 1.1. MB xHarbour 1.2.1 - 1.5 MB Harbour 3 - 2,5 MB Прости, но профессиональным это я назвать не могу.... BCC тот же ... Сокет открываем? Паш, сорри, ты умничка, но здесь сильно не прав.

AlexMyr: Sergey Spirin пишет: Как-то все это настораживает... В особенности, уровень профессионализма исполнителей... Предлагаю сразу в Harbour dev list оспаривать уровень а то попахивает холиваром. Читаем еще раз Pasha пишет: В стандартной сборке эти средства включены. При желании можно собрать харбор и без них.

Andrey: Вообще то мне тоже не нравиться сильное увеличение размера ЕХЕ-ников. Я собирал свою демку для Fast'a: FastDemo_gtwin_ru.exe - 417280 24.01.08 FastDemo_gtwin.exe - 2501 К 11.08.11 AlexMyr пишет: Предлагаю сразу в Harbour dev list оспаривать уровень Присоединяюсь.

AlexMyr: Sergey Spirin пишет: Pasha пишет: цитата: ? Hello, world Угу, Паш, на меньшем ты проверить не мог? На самом примитивном демо, ссылку на которое ты можешь увидеть выше: Harbour 0.97 - 1.1. MB xHarbour 1.2.1 - 1.5 MB Harbour 3 - 2,5 MB Прости, но профессиональным это я назвать не могу.... BCC тот же ... Сокет открываем? Паш, сорри, ты умничка, но здесь сильно не прав. Порылся в Harbour mailing list (Developers List) и нашел сообщение Przemek от 29 июля, тема Harbour evolution and WebServices, даю цитату: Please read more carefully my messages. I know that my English is fatal but if I aks you to strip final binaries then please do that. Above result is size of standard unstripped harbour build. Here are results for 32bit MinGW build (GCC4.6): 2011-05-07 13:33 147 hello.prg 2011-07-28 23:37 1˙136˙693 hello-32-std.exe 2011-07-29 00:28 1˙126˙171 hello-32-std-gc0.exe 2011-07-29 00:50 863˙284 hello-32-std-gc0-Os.exe 2011-07-28 23:37 863˙744 hello-32-strip.exe 2011-07-29 00:28 852˙992 hello-32-strip-gc0.exe 2011-07-29 00:51 585˙728 hello-32-strip-gc0-Os.exe So your results suggests that you used standard Harbour build and you created unstripped binaries and we are again at the beginning of this discussion. So please start your tests from -strip hbmk2 command and try: hbmk2 hello.prg -strip and check the size of hellow.exe. As you can see above it should be close to 863˙744 bytes (hello-32-strip.exe) - some small diffeences can appear du to different MinGW/GCC distributions. Then you can try to rebuild Harbour with switches I was talking about. In hello.prg -gc0 does not give significant size reduction because only small part of HBRTL is linked with this code. > I then built the xHarbout\tests\hello.prg (exactly same as > above)). Size: 800,768 bytes Not exactly if you have such results. I've just downloaded current xHarbour and created new xHarbour MinGW binaries. I had to set: SET C_USR=-O3 because in xHarbour GNU make build system it's not enabled by default. Here are results: 2011-07-29 01:15 1˙251˙503 hello-xhb-std.exe 2011-07-29 01:15 1˙026˙048 hello-xhb-strip.exe I'm very interested how you are creating your xHarbour binaries and which MinGW version you are using because still xHarbour binaries are bigger when the same C compiler with the same switches is used and nothing has changed here in last 8 years. Я понимаю, что нет времени изучать все и вся, да никто и не заставляет этого делать, но если решитесь пообщаться в harbour dev list, то будет интересно понаблюдать и почитать.

Sergey Spirin: AlexMyr пишет: Предлагаю сразу в Harbour dev list оспаривать уровень а то попахивает холиваром. Для харборов я человек сторонний, поэтому каким-то тщательным анализом заниматься, пересобирать харборы, конечно, не буду. То, что я сказал, это всего лишь эмоциональная оценка ситуации, основывающаяся на опыте и здравом смысле. За мегабайтом native-кода должен либо стоять сверхсерьёзный функционал, либо это бессмысленное цепляние библиотек, то есть проблемы с архитектурой.

gfilatov2002: Sergey Spirin пишет: пересобирать харборы, конечно, не буду А я пересобрал Харбор, добавив в скрипт сборки только одну строку: set HB_USER_PRGFLAGS=-gc0 При этом размер run-time RTL библиотеки для BCC уменьшился с 1.9 MБ до 1.1 МБ Соответственно уменьшился и размер экзешников... Для справки: этот Харбор будет доступен в следующей сборке библиотеки минигуи

Pasha: Sergey Spirin пишет: Угу, Паш, на меньшем ты проверить не мог? На самом примитивном демо, ссылку на которое ты можешь увидеть выше: Harbour 0.97 - 1.1. MB xHarbour 1.2.1 - 1.5 MB Harbour 3 - 2,5 MB Прости, но профессиональным это я назвать не могу.... BCC тот же ... Сокет открываем? Паш, сорри, ты умничка, но здесь сильно не прав. Это тот случай, когда собственная криворукость служит поводом пошуметь в адрес разработчиков :) Сергей, зачем ты включил в демку #include "hbextern.ch" ? Ведь там перечислены вообще все externals ядра харбора. Вот все что можно и линкуется в exe. Убери эту строку, и брюки размер замечательным образом превратятся в элегантные шорты 800k CurDrive лучше заменить для harbour на hb_curdrive, чтобы не цепять либу hbxpp, которая не входит в ядро: #ifndef __XHARBOUR__ #xtranslate CurDrive() => hb_CurDrive() #endif Вместо батника, или лучше в дополнение к нему, лучше дать скрипт SmplDemo.hbp: -inc -o${hb_name} -w3 -es0 -prgflag=-l smpldemo.prg fastreph.prg Поскольку утилита, упомянутая в сабже, является штатным средством сборки для Harbour. С ее помощью пример можно будет собрать любым C компилятором на win-платформе, а не только bcc По поводу bcc: у Виктора уже чесались руки убрать его поддержку совсем, так как это морально устаревший компилятор. Пока его оставили, но, думаю, ненадолго. И еще: сравнивать размер программ для xHarbour и Harbour в плане: для xHarbour было так, а для Harbour стало так, некорректно: это разные продукты, у них различная архитектура, разные команды разработчиков. Правда, команды разработчиков xHarbour уже нет.

Pasha: gfilatov2002 пишет: А я пересобрал Харбор, добавив в скрипт сборки только одну строку: set HB_USER_PRGFLAGS=-gc0 При этом размер run-time RTL библиотеки для BCC уменьшился с 1.9 MБ до 1.1 МБ Соответственно уменьшился и размер экзешников... Для справки: этот Харбор будет доступен в следующей сборке библиотеки минигуи Думаю, это делать не стоит. Размер библиотеки уменьшится, но и prg-код будет выполняться немного медленнее. А размер и его увеличение в конце концов не так критично.

Andrey: gfilatov2002 пишет: этот Харбор будет доступен в следующей сборке библиотеки минигуи Ждем с нетерпением !!!

gfilatov2002: Pasha пишет: prg-код будет выполняться немного медленнее Для оценки этого замедления использовал тест Пржемека speedtst.prg, собранный с ключами -gc0 и -gc3: итоговое время выполнения всех 56-ти тестов (по миллиону повторений каждый) увеличилось на приблизительно 3-4 секунды. Думаю, что такое замедление абсолютно некритично

Sergey Spirin: Pasha пишет: Это тот случай, когда собственная криворукость служит поводом пошуметь в адрес разработчиков :) Сергей, зачем ты включил в демку #include "hbextern.ch" ? Ну, прям уж "расшумелся". Ежели бы я расшумелся, то наехал бы не по-детски А тут просто ворчу по-стариковски. Предположить, что я "просто так" добавил hbextern.ch было бы чересчур... Вывод один, что на чём-то без этого не компилилось, вот только на чём это было, сейчас, конечно, за древностью лет не восстановить... Гм.. Но если я сейчас это уберу, то отвалится у того, у кого это осталось... Ладно, пусть пока остаётся как есть. За то, что посмотрел и прояснил, спасибо. Насчет С-компилятора, мне это, собственно, всё равно, bcc был просто под руками, на нем и проверил. Насчет Harbour<->xHarbour, мне, в общем-то тоже все равно. Но чисто по своей статистике могу сказать, что пока какого-то большого перелома в пользу Harbour ещё нет. Среди моих покупателей, использующие Harbour буквально единицы, вся масса реально работающих программистов использует xHarbour, потому что используют их с Xailer-ами/FiveWin-ами. Реально что-то может поменяться только тогда, когда Xailer-ы/FiveWin-ы будут совместимы с Harbour. То есть, без GUI, широкие слои бразильско-мексиканских клипперистов симпатией к Harbour-у не проникнутся, даже если xHarbour развиваться не будет.

PSP: Господа! Не отклоняйтесь от повестки дня!

Pasha: PSP пишет: Господа! Не отклоняйтесь от повестки дня! Да с повесткой дня все в порядке :) Докладываю. implib собирается, по совету Виктора убрал hbver.h, и глюки исчезли. Вот только в именах собираемых модулей нет возможности задать путь в виде $(HB_VAR). Так что пока тупо копирую путь 100 или сколько надо раз. Но, думаю, этот незначительный вопрос решабельный.

Pasha: Sergey Spirin пишет: Реально что-то может поменяться только тогда, когда Xailer-ы/FiveWin-ы будут совместимы с Harbour. То есть, без GUI, широкие слои бразильско-мексиканских клипперистов симпатией к Harbour-у не проникнутся, даже если xHarbour развиваться не будет. Насчет Xailer не скажу, а FiveWin от рождения и поныне прекрасно живет с Harbour, тем более его родитель (и по совместительству родитель самого Харбора) в команде разработчиков xHarbour никогда не учавствовал. Так что такая любовь генералов песчаных карьеров к xHarbour необьяснима и иррациональна.

Pasha: Sergey Spirin пишет: даже если xHarbour развиваться не будет. Не будет - и слава богу. По моему скромному мнению проект должен быть один. И в нем должны учавствовать все силы разработчиков. В свое время проект разделился из-за конфликта и коммерческих интересов. Много лет Harbour был в упадке. Теперь ситуация переменилась, но Harbour вобрал в себя все лучшее, что было создано в xHarbour. Пусть так и остается.

PSP: Pasha! Вот вопрос: в xHarbour есть (или по-крайней мере были) блоки кода в виде < || ... > которые позволяли использовать произвольный синтаксис языка. К примеру, в таком блоке можно написать: < || WHILE ! BASE->( EOF() ) ... ... END // WHILE > или любой другой код, а потом его выполнить посредством Eval(). Что в Харборе может аналогично работать? (честно признаюсь: не искал... Просто сейчас вспомнилось.)

gfilatov2002: PSP пишет: Что в Харборе может аналогично работать? Хочу поделиться любопытным документом, кратко описывающим расширения Харбора (там есть инфа и про расширенные кодовые блоки тоже). -------------------- HARBOUR ENHANCEMENTS -------------------- The following is a very brief summary of known Harbour features and functions that extend beyond Clipper. Kevin Carmody i@kevincarmody.com 21 April 2011 HARBOUR LANGUAGE ENHANCEMENTS ----------------------------- variable number of params ... at end of param list e.g. FUNCTION MyFunc(cArg1, nArg2, ...) may be used elsewhere e.g. { ... } array of params HB_PVALUE(n) value of nth param HB_APARAMS() param list FOR EACH FOR EACH xVal IN aArray|cString|hHash // NEXT FOR EACH xVal IN aArray|cString|hHash DESCEND // NEXT FOR EACH xVal1, xVal2 IN xCollect1, xCollect2 // NEXT FOR EACH xVal IN aArray|@cString|hHash // xVal := <newval> // NEXT xVal in hash is value, not key x:__ENUMINDEX() x:__ENUMKEY(), "=>", x:__ENUMVALUE() x:__ENUMBASE()[x:__ENUMKEY()] SWITCH Harbour SWITCH xVar // CASE xVal1 // EXIT // OTHERWISE // END xVar numeric or string expression xVal any numeric or string expression, string length up to 255 xHarbour SWITCH xVar // CASE xConst1 // EXIT // DEFAULT // END xVar numeric (or string?) variable (expression?) xConst any numeric (or string length 1?) constant reference operator extensions proc({@p1, p2, @p3}) proc(@aVal[2], @hVal["asd"]) proc(@oBrw:autoLite) macro operator extension o:&("cargo") := cCargo string character references #include "xhb.ch" local s := "ABCDEFG" ? s, "=>", s[2], s[4], s[6] s[2] := LOWER(s[2]) Harbour generates error if subscript out of bounds negative subscript works from end of string 'A' * 10, 'A' - 10, etc. works but not recommended since lack of distinction between string and char means general use is ambiguous escaped embedded character references ? e"Helow\r\nWorld \x21\041\x21\000abcdefgh" double quotes only \r=\x0D \n=\x0A \b=\x08 \t=\x09 \"=\x22 \\=\x5C timestamp or time variables d"YYYY-MM-DD" t"YYYY-MM-DD HH:MM:SS.fff" date delimiter slash, dot, hyphen time constant in this format 24 hour only 0dYYYYMMDD 0tYYYYMMDDHHMMSS suggested by Viktor but not implemented http://www.mail-archive.com/harbour@harbour-project.org/msg09305.html https://sourceforge.net/tracker/?func=detail&aid=3164618&group_id=681&atid=100681 HB_DATETIME, HB_CTOT, HB_TTOC, HB_STOT, HB_TTOS YEAR(), MONTH(), DAY(), HB_HOUR(), HB_MINUTE(), HB_SEC() VALTYPE of time value is 'T' tVal := dVal + t"02:00" SET(_SET_TIMEFORMAT[, cTimeForm]) time portion only HH:MM:SS.FFFF PM symbol variables - Harbour only sFunc := @<func>() ? sFunc:NAME, sFunc:EXEC([<anyExpList,...>]) VALTYPE 'S' pointer variables - xHarbour only pFunc := @<funcName>([<anyExpList,...>]) VALTYPE 'P' hash array or hash variables hHash := {'apple' => 'Apfel', 'dish' => 'Tisch'} hHash['apple'] returns 'Apfel' left is called key, right is called value within any hash, keys must be unique, may be valtypes C N D T L key valtypes may be mixed within single hash string keys may be different lengths, string comparison follows SET EXACT empty value {=>} build hash with hHash += {<newkey> => <newval>} $ operator extension 'apple' $ aArray 'apple' $ hHash hexadecimal numeric constants 0x094D extended code blocks Harbour bExtend := {|cArg1, nArg2| LOCAL cCombo := '' IF EMPTY(cArg1) ALERT('No character arg') ELSE cCombo := cArg1 + STR(nArg2) ENDIF ? cCombo RETURN } xHarbour bExtend := <|cArg1, nArg2| LOCAL cCombo := '' IF EMPTY(cArg1) ALERT('No character arg') ELSE cCombo := cArg1 + STR(nArg2) ENDIF ? cCombo > classes CLASS classname VAR xClassVar1, cClassVar2, ... DATA xObjectVar1, cObjectVar2, ... METHOD method1 METHOD method2 ENDCLASS METHOD classname:method1(...) ::xClassVar1 := ... RETURN self METHOD classname:method2(...) LOCAL cVal cVal := REPLICATE(::cClassVar2, 2) RETURN cVal NEW FUNCTIONS ------------- HB_ADEL HB_ADLER32 HB_AINS HB_ALERT HB_ANSITOOEM HB_APARAMS HB_ARGC HB_ARGCHECK HB_ARGSHIFT HB_ARGSTRING HB_ARGV HB_ARRAYTOPARAMS HB_ASCAN HB_ASCIIISALPHA HB_ASCIIISDIGIT HB_ASCIIISLOWER HB_ASCIIISUPPER HB_ASCIILOWER HB_ASCIIUPPER HB_AT HB_ATI HB_ATOKENS HB_ATX HB_BASE64DECODE HB_BASE64ENCODE HB_BITAND HB_BITNOT HB_BITOR HB_BITRESET HB_BITSET HB_BITSHIFT HB_BITTEST HB_BITXOR HB_BLOWFISHDECRYPT HB_BLOWFISHENCRYPT HB_BLOWFISHKEY HB_BUILDDATE HB_BYTESWAPI HB_BYTESWAPL HB_BYTESWAPLL HB_BYTESWAPU HB_BYTESWAPW HB_CDPINFO HB_CDPLIST HB_CDPSELECT HB_CDPUNIID HB_CLOCKS2SECS HB_CLRAREA HB_CMDLINE HB_COLORINDEX HB_COLORTON HB_COMCLOSE HB_COMDISCARDCHAR HB_COMERRORCHAR HB_COMFLOWCHARS HB_COMFLOWCONTROL HB_COMFLOWSET HB_COMFLUSH HB_COMGETDEVICE HB_COMGETDEVICEHANDLE HB_COMGETERROR HB_COMGETOSERROR HB_COMINIT HB_COMINPUTCOUNT HB_COMINPUTSTATE HB_COMLASTNUM HB_COMLSR HB_COMMCR HB_COMMSR HB_COMOPEN HB_COMOUTPUTCOUNT HB_COMOUTPUTSTATE HB_COMPILER HB_COMRECV HB_COMSEND HB_COMSENDBREAK HB_COMSETDEVICE HB_COMSETERROR HB_CRC HB_CRC16 HB_CRC32 HB_CRCCT HB_CSTR HB_CTOD HB_CTOT HB_CURDRIVE HB_CWD HB_DATE HB_DATETIME HB_DBCREATETEMP HB_DBDETACH HB_DBDROP HB_DBEXISTS HB_DBPACK HB_DBRENAME HB_DBREQUEST HB_DBZAP HB_DESERIALIZE HB_DIRSEPADD HB_DIRSEPDEL HB_DIRBASE HB_DIRBUILD HB_DIRCREATE HB_DIRDELETE HB_DIREXISTS HB_DIRSCAN HB_DIRTEMP HB_DIRUNBUILD HB_DISABLEWAITLOCKS HB_DISKSPACE HB_DISPBOX HB_DISPOUTAT HB_DISPOUTATBOX HB_DTOC HB_DTOT HB_DYNCALL HB_ENDOBJECT HB_EOL HB_EXECFROMARRAY HB_EXECMSG HB_FCOMMIT HB_FCOPY HB_FCREATE HB_FEOF HB_FGETATTR HB_FGETDATETIME HB_FIELDDEC HB_FIELDLEN HB_FIELDTYPE HB_FILEEXISTS HB_FILEMATCH HB_FISDEVICE HB_FLINK HB_FLINKREAD HB_FLINKSYM HB_FLOCK HB_FNAMEDIR HB_FNAMEEXISTS HB_FNAMEEXT HB_FNAMEEXTSET HB_FNAMEEXTSETDEF HB_FNAMEMERGE HB_FNAMENAME HB_FNAMENAMEEXT HB_FNAMESPLIT HB_FORNEXT HB_FSETATTR HB_FSETDATETIME HB_FSETDEVMODE HB_FSIZE HB_FTEMPCREATE HB_FTEMPCREATEEX HB_FUNLOCK HB_GCALL HB_GCSTEP HB_GET HB_GETENV HB_GETREADVAR HB_GETSTDERR HB_GETSTDIN HB_GETSTDOUT HB_GFXPRIMITIVE HB_GFXTEXT HB_GTALERT HB_GTCREATE HB_GTINFO HB_GTLOCK HB_GTRELOAD HB_GTSELECT HB_GTSYS HB_GTUNLOCK HB_GTVERSION HB_GZCLEARERR HB_GZCLOSE HB_GZCOMPRESS HB_GZCOMPRESSBOUND HB_GZDIRECT HB_GZDOPEN HB_GZEOF HB_GZERROR HB_GZFLUSH HB_GZGETC HB_GZGETS HB_GZOPEN HB_GZPUTC HB_GZPUTS HB_GZREAD HB_GZREWIND HB_GZSEEK HB_GZSETPARAMS HB_GZTELL HB_GZUNGETC HB_GZWRITE HB_HALLOCATE HB_HASH HB_HAUTOADD HB_HBINARY HB_HCASEMATCH HB_HCLONE HB_HCOPY HB_HDEFAULT HB_HDEL HB_HDELAT HB_HEVAL HB_HEXTONUM HB_HEXTOSTR HB_HFILL HB_HGET HB_HGETDEF HB_HHASKEY HB_HKEEPORDER HB_HKEYAT HB_HKEYS HB_HMAC_SHA1 HB_HMAC_SHA224 HB_HMAC_SHA256 HB_HMAC_SHA384 HB_HMAC_SHA512 HB_HMERGE HB_HOUR HB_HPAIRAT HB_HPOS HB_HRBDO HB_HRBGETFUNSYM HB_HRBLOAD HB_HRBRUN HB_HRBSIGNATURE HB_HRBUNLOAD HB_HSCAN HB_HSET HB_HSETAUTOADD HB_HSETBINARY HB_HSETCASEMATCH HB_HSETORDER HB_HSORT HB_HVALUEAT HB_HVALUES HB_I18N_ADDTEXT HB_I18N_CHECK HB_I18N_CODEPAGE HB_I18N_CREATE HB_I18N_DESCRIPTION HB_I18N_GETTEXT HB_I18N_GETTEXT_STRICT HB_I18N_HEADERSIZE HB_I18N_LOADPOT HB_I18N_NGETTEXT HB_I18N_NGETTEXT_STRICT HB_I18N_PLURALFORM HB_I18N_RESTORETABLE HB_I18N_SAVEPOT HB_I18N_SAVETABLE HB_I18N_SET HB_IDLEADD HB_IDLEDEL HB_IDLERESET HB_IDLESLEEP HB_IDLESTATE HB_INETACCEPT HB_INETADDRESS HB_INETCLEANUP HB_INETCLEARERROR HB_INETCLEARPERIODCALLBACK HB_INETCLEARTIMELIMIT HB_INETCLEARTIMEOUT HB_INETCLOSE HB_INETCOMPRESS HB_INETCONNECT HB_INETCONNECTIP HB_INETCOUNT HB_INETCREATE HB_INETCRLF HB_INETDATAREADY HB_INETDGRAM HB_INETDGRAMBIND HB_INETDGRAMRECV HB_INETDGRAMSEND HB_INETERRORCODE HB_INETERRORDESC HB_INETFD HB_INETGETALIAS HB_INETGETHOSTS HB_INETGETRCVBUFSIZE HB_INETGETSNDBUFSIZE HB_INETIFINFO HB_INETINIT HB_INETISSOCKET HB_INETPERIODCALLBACK HB_INETPORT HB_INETRECV HB_INETRECVALL HB_INETRECVENDBLOCK HB_INETRECVLINE HB_INETSEND HB_INETSENDALL HB_INETSERVER HB_INETSETRCVBUFSIZE HB_INETSETSNDBUFSIZE HB_INETSTATUS HB_INETTIMELIMIT HB_INETTIMEOUT HB_ININEW HB_INIREAD HB_INIREADSTR HB_INISETCOMMENT HB_INIWRITE HB_INIWRITESTR HB_ISARRAY HB_ISBLOCK HB_ISCHAR HB_ISDATE HB_ISDATETIME HB_ISHASH HB_ISLOGICAL HB_ISMEMO HB_ISNIL HB_ISNULL HB_ISNUMERIC HB_ISOBJECT HB_ISPOINTER HB_ISPRINTER HB_ISREGEX HB_ISSTRING HB_ISSYMBOL HB_ISTIMESTAMP HB_JSONDECODE HB_JSONENCODE HB_KEYCLEAR HB_KEYINS HB_KEYPUT HB_LANGERRMSG HB_LANGMESSAGE HB_LANGNAME HB_LANGSELECT HB_LIBERROR HB_LIBEXT HB_LIBFREE HB_LIBGETFUNSYM HB_LIBLOAD HB_LIBNAME HB_LIBPREFIX HB_LPPCREATE HB_LPPDESTROY HB_LPPERROR HB_LPPRECV HB_LPPRECVLEN HB_LPPSEND HB_LPPSENDLEN HB_LPPSETLIMIT HB_MACROBLOCK HB_MATHERBLOCK HB_MATHERMODE HB_MD5 HB_MD5FILE HB_MEMOREAD HB_MEMOWRIT HB_METHODNAME HB_MILLISECONDS HB_MINUTE HB_MMIDDLEDOWN HB_MTVM HB_MUTEXCREATE HB_MUTEXLOCK HB_MUTEXNOTIFY HB_MUTEXNOTIFYALL HB_MUTEXQUEUEINFO HB_MUTEXSUBSCRIBE HB_MUTEXSUBSCRIBENOW HB_MUTEXUNLOCK HB_MVRESTORE HB_MVSAVE HB_NTOCOLOR HB_NTOS HB_NTOT HB_NUMTOHEX HB_OEMTOANSI HB_OSDRIVESEPARATOR HB_OSERROR HB_OSFILEMASK HB_OSISWIN2K HB_OSISWIN9X HB_OSISWINCE HB_OSISWINNT HB_OSISWINVISTA HB_OSNEWLINE HB_OSPATHDELIMITERS HB_OSPATHLISTSEPARATOR HB_OSPATHSEPARATOR HB_PATHJOIN HB_PATHRELATIVIZE HB_PATHNORMALIZE HB_PCODEVER HB_PROCESSCLOSE HB_PROCESSOPEN HB_PROCESSRUN HB_PROCESSVALUE HB_PROGNAME HB_PS HB_PVALUE HB_RANDOM HB_RANDOMINT HB_RANDOMSEED HB_RASCAN HB_RAT HB_RDDGETTEMPALIAS HB_RDDINFO HB_REGEX HB_REGEXALL HB_REGEXATX HB_REGEXCOMP HB_REGEXHAS HB_REGEXLIKE HB_REGEXMATCH HB_REGEXSPLIT HB_RELEASECPU HB_RUN HB_SCRMAXCOL HB_SCRMAXROW HB_SCROLL HB_SEC HB_SECONDSCPU HB_SERIALIZE HB_SETCLSHANDLE HB_SETDISPCP HB_SETENV HB_SETKEY HB_SETKEYARRAY HB_SETKEYCHECK HB_SETKEYCP HB_SETKEYGET HB_SETKEYSAVE HB_SETLASTKEY HB_SETMACRO HB_SETOBJECT HB_SETTERMCP HB_SHA1 HB_SHA224 HB_SHA256 HB_SHA384 HB_SHA512 HB_SHADOW HB_SOCKETACCEPT HB_SOCKETBIND HB_SOCKETCLOSE HB_SOCKETCONNECT HB_SOCKETERRORSTRING HB_SOCKETGETERROR HB_SOCKETGETHOSTNAME HB_SOCKETGETHOSTS HB_SOCKETGETIFACES HB_SOCKETGETOSERROR HB_SOCKETGETPEERNAME HB_SOCKETGETRCVBUFSIZE HB_SOCKETGETSNDBUFSIZE HB_SOCKETGETSOCKNAME HB_SOCKETLISTEN HB_SOCKETOPEN HB_SOCKETRECV HB_SOCKETRECVFROM HB_SOCKETRESOLVEADDR HB_SOCKETRESOLVEINETADDR HB_SOCKETSELECT HB_SOCKETSELECTREAD HB_SOCKETSELECTWRITE HB_SOCKETSELECTWRITEEX HB_SOCKETSEND HB_SOCKETSENDTO HB_SOCKETSETBLOCKINGIO HB_SOCKETSETBROADCAST HB_SOCKETSETEXCLUSIVEADDR HB_SOCKETSETKEEPALIVE HB_SOCKETSETMULTICAST HB_SOCKETSETNODELAY HB_SOCKETSETRCVBUFSIZE HB_SOCKETSETREUSEADDR HB_SOCKETSETSNDBUFSIZE HB_SOCKETSHUTDOWN HB_STOD HB_STOT HB_STRCDECODE HB_STRCLEAR HB_STRDECODESCAPE HB_STRFORMAT HB_STRSHRINK HB_STRTOEXP HB_STRTOHEX HB_STRTOTS HB_STRTOUTF8 HB_STRXOR HB_THREADDETACH HB_THREADID HB_THREADJOIN HB_THREADONCE HB_THREADONCEINIT HB_THREADQUITREQUEST HB_THREADSELF HB_THREADSTART HB_THREADTERMINATEALL HB_THREADWAIT HB_THREADWAITFORALL HB_TOKENCOUNT HB_TOKENGET HB_TOKENPTR HB_TRACEFILE HB_TRACEFLUSH HB_TRACELEVEL HB_TRACELOG HB_TRACELOGAT HB_TRACELOGLEVEL HB_TRACESTATE HB_TRACESTRING HB_TRACESYSOUT HB_TRANSLATE HB_TSTOSTR HB_TTOC HB_TTOD HB_TTON HB_TTOS HB_USERLANG HB_USERNAME HB_UTCOFFSET HB_UTF8ASC HB_UTF8AT HB_UTF8CHR HB_UTF8LEFT HB_UTF8LEN HB_UTF8PEEK HB_UTF8POKE HB_UTF8RAT HB_UTF8RIGHT HB_UTF8STRTRAN HB_UTF8STUFF HB_UTF8SUBSTR HB_UTF8TOSTR HB_VALTOEXP HB_VALTOSTR HB_VERSION HB_WAEVAL HB_WILDMATCH HB_WILDMATCHI HB_ZCOMPRESS HB_ZCOMPRESSBOUND HB_ZERROR HB_ZLIBVERSION HB_ZUNCOMPRESS HB_ZUNCOMPRESSLEN Надеюсь, некоторые вопросы о Харборе теперь сняты

AlexMyr: Еще интересно почитать harbour/doc/xhb-diff.txt by Przemyslaw Czerpak

Pasha: Имеется в виду Extended Codeblocks, tests\extblock.prg ? К моему удивлению, harbour их поддерживает. Только синтаксис немного другой, традиционный: { || WHILE ! BASE->( EOF() ) ... ... END // WHILE }

Pasha: Massimo Belgrano сделал небольшое описание для hbmk2: http://harbourlanguage.blogspot.com/2010/02/using-hbmk2.html

Andrey: Pasha пишет: CurDrive лучше заменить для harbour на hb_curdrive, чтобы не цепять либу hbxpp, которая не входит в ядро: #ifndef __XHARBOUR__ #xtranslate CurDrive() => hb_CurDrive() #endif Вместо батника, или лучше в дополнение к нему, лучше дать скрипт SmplDemo.hbp: -inc -o${hb_name} -w3 -es0 -prgflag=-l smpldemo.prg fastreph.prg Поскольку утилита, упомянутая в сабже, является штатным средством сборки для Harbour. С ее помощью пример можно будет собрать любым C компилятором на win-платформе, а не только bcc По поводу bcc: у Виктора уже чесались руки убрать его поддержку совсем, так как это морально устаревший компилятор. Пока его оставили, но, думаю, ненадолго. А использование CurDrive в МиниГуи также увеличивает размер EXE-файла ? Чем нужно заменить функции CurDrive() + ":\" + CurDir() ?

Pasha: Andrey пишет: А использование CurDrive в МиниГуи также увеличивает размер EXE-файла ? Чем нужно заменить функции CurDrive() + ":\" + CurDir() ? hb_CurDrive() + ":\" + CurDir() Использование hb_CurDrive() вместо CurDrive() не увеличивает и не уменьшает размер exe. Просто аналогичная функция будет прилинкована из другой библиотеки, вместо hbxpp - из rtl.



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