Автор | Сообщение |
|
| |
Пост N: 158
Зарегистрирован: 05.10.06
|
|
Отправлено: 07.08.16 12:12. Заголовок: блок кода
Можно ли транслировать и сохранять в символьном виде блок кода ?
|
|
|
Ответов - 3
[только новые]
|
|
|
| Администратор
|
Пост N: 3480
Зарегистрирован: 23.05.05
|
|
Отправлено: 07.08.16 14:16. Заголовок: Верно наоборот: стро..
Верно наоборот: строковый макрос можно транслировать в блок кода Function GetBlock(cMacro, cPar) Return &('{|' + if(cPar#nil,cPar,'') + '|' + AllTrim(cMacro) + '}') Поскольку в общем случае блок кода может содержать локальные переменные, то транслировать его в строку нельзя.
|
|
|
|
| постоянный участник
|
Пост N: 1144
Зарегистрирован: 17.02.12
|
|
Отправлено: 07.08.16 14:21. Заголовок: Еще http://clipper.b..
|
|
|
|
| постоянный участник
|
Пост N: 1145
Зарегистрирован: 17.02.12
|
|
Отправлено: 07.08.16 14:27. Заголовок: Может такой путь ? (..
Может такой путь ? ( http://www.kresin.ru/hrbfaq_3.html#Doc12 ) Три функции, использующие встроенный компилятор (hbcplr.lib), основанный на том же коде, что и сам harbour.exe. nRetCode := hb_compile( "harbour", cFileName, [...] ) Компилирует файл cFileName с переданными ей параметрами компиляции. Результатом ее работы является .c файл. cHrb := hb_compileBuf( "harbour", cFileName, [...] ) В отличие от hb_compile(), не создает .c файл, а возвращает созданный в результате компиляции p-code в виде текстовой строки, который можно сохранить как hrb файл или исполнить с помощью hb_hrbRun() cHrb := hb_compileFromBuf( cPrg, "harbour", [...] ) Компилирует код из буфера cPrg, возвращает p-code, как и hb_compileBuf() Ниже приведен пример использования run-time компиляции: FUNCTION Main( cFileName ) Local handle, buf, cBuf := "", i buf := hb_compilebuf( "harbour", cFileName, "/n","/w" ) // Компилируем hb_hrbRun( buf ) // исполняем handle := FCreate( Iif((i:=Rat('.',cFileName))=0,cFileName,Substr(cFileName,1,i-1)) + ".hrb" ) FWrite( handle, buf ) FClose( handle ) Return Nil
|
|
|
|