Форум » [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

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.



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