On-line: гостей 0. Всего: 0 [подробнее..]
АвторСообщение





Пост N: 324
Зарегистрирован: 05.10.06
ссылка на сообщение  Отправлено: 15.11.21 18:09. Заголовок: отловить ошибки в hb_compileFromBuf


Нужно отлавливать ошибки скрипта, как можно перехватить вывод результата компиляции hb_compileFromBuf ?

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 4 [только новые]


администратор




Пост N: 7480
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 15.11.21 18:19. Заголовок: Гугл в помощь :sm54..


Гугл в помощь
Первый результат у него такой
https://groups.google.com/g/harbour-devel/c/WFnOTGO91gk/m/LG3lRCrtcX8J

Спасибо: 1 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3943
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 15.11.21 18:33. Заголовок: Посмотрите исходники..


Посмотрите исходники hbedit от А. Кресина, там, есть перехват ошибок компиляции.

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 1461
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 15.11.21 19:03. Заголовок: В hbedit я делаю это..


В hbedit я делаю это так:

cFileRes := hb_DirTemp() + "hb_compile_err.out"
...
ie := cedi_rediron( 2, cFileRes )
cHrb := hb_compileFromBuf( sCode, "harbour", "-n2", "-q", "-w" )
cedi_rediroff( 2, ie )

cBuff := Memoread( cFileRes )

А вот С-функции:

HB_FUNC( CEDI_REDIRON )
{
int istd = ( HB_ISNIL( 1 ) ) ? 1 : hb_parni( 1 );
int fd;

fflush( ( istd == 1 ) ? stdout : stderr );
fd = dup( fileno( ( istd == 1 ) ? stdout : stderr ) );
freopen( hb_parc( 2 ), "w", ( istd == 1 ) ? stdout : stderr );
hb_retni( fd );
}

HB_FUNC( CEDI_REDIROFF )
{
int istd = ( HB_ISNIL( 1 ) ) ? 1 : hb_parni( 1 );
int fd;

fflush( ( istd == 1 ) ? stdout : stderr );

if( HB_ISNIL( 2 ) )
{
fclose( ( istd == 1 ) ? stdout : stderr );
}
else
{
fd = hb_parni( 2 );
dup2( fd, fileno( ( istd == 1 ) ? stdout : stderr ) );
close( fd );
clearerr( ( istd == 1 ) ? stdout : stderr );
}
}

Спасибо: 1 
ПрофильЦитата Ответить





Пост N: 325
Зарегистрирован: 05.10.06
ссылка на сообщение  Отправлено: 16.11.21 10:18. Заголовок: Спасибо ! Dima пише..


Спасибо !

Dima пишет:

 цитата:
Гугл в помощь
Первый результат у него такой
https://groups.google.com/g/harbour-devel/c/WFnOTGO91gk/m/LG3lRCrtcX8J



Оба способа дают результат.
Вариант Antonio Linares позволяет получить одну ошибку за раз, поэтому предпочтительней улучшенный вариант описанный alkresin , там сразу все ошибки отлавливаем и позволяет подавлять/перехватывать другой не нужный вывод на экран

Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 10
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет