On-line: Dr. Oldwarez, гостей 1. Всего: 2 [подробнее..]
АвторСообщение
постоянный участник




Пост N: 145
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 10.12.06 02:33. Заголовок: Не работает SCREENATTR(), помогите !


Всем привет.
Помогите разобраться с функцией CT - SCREENATTR(nY,nX)->nAttr.
Что и где нужно исправить, чтоб HArbour возвращал как в Clipper'e ?

Сделал специально тестовый пример и выяснил:
------------------------------------------
Clipper возвращает:
..text.,.COLOR.,..ATTR,.NTOCOLOR()
color , 0/0 , 0 , 00/00
color , 0/7 , 112 , 00/07
color , 0/8 , 128 , 00/08
color , 0/15 , 240 , 00/15
color , 7/15 , 247 , 07/15
color , 8/15 , 248 , 08/15
color , 15/15 , 255 , 15/15
-------------------------------------------
xHarbour возвращает:
..text.,.COLOR.,..ATTR,.NTOCOLOR()
color , 0/0 , 0 , 00/00
color , 0/7 , 112 , 00/07
color , 0/8 , -128 ,
color , 0/15 , -16 ,
color , 7/15 , -9 ,
color , 8/15 , -8 ,
color , 15/15 , -1 ,
---------------------------------------------

Тестовая программа:
====================
FUNCTION MAIN()
LOCAL nY, nX:=1, cText := " color ", cColor
LOCAL aColor:={ "0/0","0/7", "0/8", "0/15", "7/15", "8/15", "15/15" }

SETBLINK(.F.)
CLEAR SCREEN

@ 0,0 SAY "..text.,.COLOR.,..ATTR,.NTOCOLOR()"
FOR nY := 1 TO 7
cColor := aColor[nY]
@ nY, 0 SAY cText COLOR(cColor)
?? ",",PADR(cColor,5),",", STR(SCREENATTR(nY,nX),4),",", NTOCOLOR(SCREENATTR(nY,nX))
NEXT

RETURN NIL
====================


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


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




Пост N: 427
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 10.12.06 15:53. Заголовок: Re:


Спасибо за информацию
Я поправил на CVS

Спасибо: 0 
Профиль
постоянный участник




Пост N: 149
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 10.12.06 18:42. Заголовок: Re:


А мне что править, у меня цвета все ЧЕРНЫЕ ?

Спасибо: 0 
Профиль
администратор




Пост N: 507
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 10.12.06 18:53. Заголовок: Re:


Andrey пишет:

 цитата:
А мне что править, у меня цвета все ЧЕРНЫЕ ?


Обновись с CVS

Спасибо: 0 
Профиль
постоянный участник




Пост N: 152
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 10.12.06 18:55. Заголовок: Re:


Дима, подскажи пожалуйста как ?

Спасибо: 0 
Профиль
администратор




Пост N: 508
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 10.12.06 19:10. Заголовок: Re:

Спасибо: 0 
Профиль
Администратор




Пост N: 428
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 10.12.06 19:29. Заголовок: Re:


Об этом здесь неоднократно писалось

A. Как выкачать последние сырцы харбора с CVS ?
Q. Прежде всего надо установить какого-нибудь CVS-клиента,
например Tortoise CVS - с сайта www.tortoisecvs.org.
Один из последних стабильных релизов - 1.8.31 - можно
загрузить по адресу:
http://prdownloads.sourceforge.net/tortoisecvs/TortoiseCVS-1.8.3.exe
Кликнув правой кнопкой мышки на ярлыке "Мой компьюьер", в popup-меню
надо выбрать CVS - Preferences, и на закладке Advanced установить
параметр "Network compression" на максимум - 9
Затем надо создать папку, в которыю будут загружаться
sourceforge-проекты - например Projects. В проводнике Windows в
popup-меню этой папки выбрать CVS Checkout и установить параметры:
Общие для всех проектов:
Protocol: :pserver
Server: cvs.sourceforge.net
User name: anonymous
И для harbour:
Repository folder: /cvsroot/harbour-project
Module: harbour
Для xharbour:
Repository folder: /cvsroot/xharbour
Module: xharbour
Затем нажать OK, и начнется закачка сырцов. Первый раз это займет
некоторое время, а при последующих chackout будут загружаться
только новые и изменившиеся модули.
Впрочем можно использовать и WinCVS: www.wincvs.org (это дело вкуса)

A. Как собрать харбор из сырцов ?
Q. Для сборки необходим компилятор C, а также дополнительные
программы: Flex и Bison: бесплатные версии лексического и
синтаксического анализаторов Lex и Yacc. Причем для сборки
harbour необходим и Flex и Bison, а для сборки xharbour -
только Bison. Для бизона необходимо скачать правила грамматик:
файл bison.simple. При сборке путь к flex.exe (для harbour) и
bison.exe должен быть указан в переменной окружения PATH, а
также установлена переменная окружения BISON_SIMPLE (в autoexec.bat):
set BISON_SIMPLE=<path>bison.simple
Flex можно скачать по адресу:
ftp://ftp.harbour-project.org/dev/flex.zip
Bison необходим версии 1.28 или старше, вот адреса для скачивания:
ftp://ftp.harbour-project.org/dev/bsn128b.zip
http://www.harbour-project.org/bison-simple.zip
или более свежую версию:
http://gnuwin32.sourceforge.net/downlinks/bison-bin-zip.php
Должны быть также установлены параметры окружения BCC - см.вопрос
про сборку программы.
Затем надо просто запустить пакетный файл для сборки харбора:
для xharbour это makallbc.bat, который собирает и сам харбор и все
библиотеки contrib, а для harbour - make_b32.bat, кототрый собирает
харбор, а библиотеки contrib надо собирать каждую отдельно
Внимание ! Если сборка выполняется из Far под winnt/2k/xp/2003, надо
в свойствах ярлыка Far поставить "Совместимость с win2k". Это
известный и неисправленный баг борландовского компилятора.
После того, как сборка дошла до конца, харбор готов к употреблению.

Т.е для исправления бага тебе желательно освоить работу с CVS и сборку из сырцов
Это несложно

Но если будут проблемы, можно выкрутиться так:
В свой прг вставить исправленный ScreenAttr:

#pragma BEGINDUMP

#include "hbdefs.h"
#include "hbapi.h"
#include "hbapigt.h"


HB_FUNC( SCREENATTR )
{

UINT uiSize;
int iRow, iCol;
char * pcPos;
SHORT i_Row;
SHORT i_Col;

if ( ! (ISNUM(1) && ISNUM(2)) )
{
hb_gtGetPos( &i_Row, &i_Col );
}

iRow = ( ISNUM(1) ? hb_parni( 1 ) : i_Row );
iCol = ( ISNUM(2) ? hb_parni( 2 ) : i_Col );

hb_gtRectSize( iRow, iCol, iRow, iCol, &uiSize );
pcPos = (char * ) hb_xalloc( uiSize + 1 );

if( pcPos != NULL )
{
hb_gtSave( iRow, iCol, iRow, iCol, pcPos );

hb_retni( ( unsigned char ) pcPos[1] );
}
else
hb_retni( 0 );

hb_xfree( pcPos );

}

#pragma ENDDUMP


Спасибо: 0 
Профиль
Администратор




Пост N: 432
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 10.12.06 20:28. Заголовок: Re:


Пардон, имя сервера надо другое

xharbour.cvs.sourceforge.net
harbour-project.cvs.sourceforge.net


Спасибо: 0 
Профиль
постоянный участник




Пост N: 153
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 10.12.06 22:08. Заголовок: Re:


Спасибо Паша !
Вариант #pragma BEGINDUMP ...... предпочтительне, т.к. нужно запустить программы быстрей, а потом
уже выкачивать сырцы и т.д.......

Спасибо: 0 
Профиль
постоянный участник




Пост N: 160
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 11.12.06 19:58. Заголовок: Re:


Если уж до кучи, то и функция INVERTATTR( xAttr ) возвращает неправильное значение.

Я выкрутился так:
*********************************************************************
FUNCTION myINVERTATTR( xAttr )
LOCAL n := ColorToN( xAttr ), nRet

#ifndef __HARBOUR__
nRet := INVERTATTR( xAttr )
#else
nRet := ( n % 16 ) * 16 + Int( n / 16 )
#endif

RETURN nRet
*********************************************************************
Пускай там в сырцах исправят.





Спасибо: 0 
Профиль
Администратор




Пост N: 445
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 12.12.06 00:07. Заголовок: Re:


Исправил

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