Olá
Não manjo muito de como está o Borland hoje, a princípio é para funcionar, tem muita gente usando ele.
A dica básica é que tentar usar mesma estrutura do projeto não vai dar certo, a migração é simples, mas é diferente. Posso lhe garantir que se adaptar ao HBMK2 é muito mais fácil que usar esse seu script de compilação sem ver seu conteúdo. Claro que é mais simples ainda deixar de aprender uma coisa nova e continuar com a antiga.
Precisa gastar um tempinho para se adaptar. Evolução sempre tem um custo, mesmo que muito pequeno.
Claro que se você achar que é muito complicado, é melhor ficar no xHarbour até porque neste caso usar o xHarbour será o menor dos problemas.
------
Aproveitando, eu estava vendo estatísticas de downloads dos dois projetos e achei curioso que o xHarbour só faz um grande sucesso mesmo no Brasil, já o Harbour, apesar de ter o Brasil como seu principal usuário, tem a utilização mais distribuída pelo mundo. Porque será?
T+
Dúvidas sobre migração para xHarbour
Moderador: Moderadores
Re: Dúvidas sobre migração para xHarbour
Então, Cirod,
Quero continuar tentando e pra isso eu preciso de documentações sobre o harbour 2.0...
Tu por acaso sabe o link de guias, manuais, etc ??
GAbriel
Quero continuar tentando e pra isso eu preciso de documentações sobre o harbour 2.0...
Tu por acaso sabe o link de guias, manuais, etc ??
GAbriel
lugab
-
Stanis Luksys
- Colaborador

- Mensagens: 1329
- Registrado em: 18 Jun 2005 03:04
- Localização: São Paulo
- Contato:
Re: Dúvidas sobre migração para xHarbour
Opa,
De qualquer forma, não sei se vale a pena escrever lá, porque me parece uma particularidade minha. A questão é que no linux arquivos que começam com ponto não são retornados pela máscara ( * ), e nem pela máscara ( *.* ). O harbour define HB_OS_ALLFILE_MASK para Linux como ( * ), o que está CORRETO. E como oculto também não é atributo, a inclusão deles pelo parâmentro "H" (hidden) não é possível.
Para corrigir, ou melhor dizendo, adpatar as máscaras, eu alterei de modo que ao passar "H" no segundo parâmentro, ele inclua os ocultos, memso que isso não seja um atributo.
O arquivo em questão é /usr/src/harbour-2.0.0/src/rtl/direct.c.
As alterações estão entre a linha 97 e 120, mas precisa de uns retoques, porque fiz na pressa meio que só pra funcionar pro que eu precisava na hora. Coisa simples, que mais tarde eu faço e se for o caso mando lá pro pessoal.
Bom, de repente pode ser útil pra mais alguém...
Abraços!
Acredito que a grande vantagem de ser opensource é eu poder alterar e não ter que esperar pela turma de desenvolvedores, que também devem ter suas ocupações e pode levar tempo. Mas posso mandar como sugestão, apesar de não ser um bug!clrod escreveu:Se conseguir dar algum pitaco em inglês mesmo que precise usar um tradutor, eu aconselho você escrever na lista dos desenvolvedores do Harbour sobre essa questão dos diretórios no Linux, o pessoal é bem aberto.
De qualquer forma, não sei se vale a pena escrever lá, porque me parece uma particularidade minha. A questão é que no linux arquivos que começam com ponto não são retornados pela máscara ( * ), e nem pela máscara ( *.* ). O harbour define HB_OS_ALLFILE_MASK para Linux como ( * ), o que está CORRETO. E como oculto também não é atributo, a inclusão deles pelo parâmentro "H" (hidden) não é possível.
Para corrigir, ou melhor dizendo, adpatar as máscaras, eu alterei de modo que ao passar "H" no segundo parâmentro, ele inclua os ocultos, memso que isso não seja um atributo.
O arquivo em questão é /usr/src/harbour-2.0.0/src/rtl/direct.c.
As alterações estão entre a linha 97 e 120, mas precisa de uns retoques, porque fiz na pressa meio que só pra funcionar pro que eu precisava na hora. Coisa simples, que mais tarde eu faço e se for o caso mando lá pro pessoal.
Código: Selecionar todos
HB_FUNC( DIRECTORY )
{
const char * szDirSpec = hb_parc( 1 );
const char * szAttributes = hb_parc( 2 );
char * pszFree = NULL;
ULONG ulMask;
PHB_ITEM pDir = hb_itemArrayNew( 0 );
PHB_FFIND ffind;
/* Get the passed attributes and convert them to Harbour Flags */
ulMask = HB_FA_ARCHIVE
| HB_FA_READONLY
| HB_FA_DEVICE
| HB_FA_TEMPORARY
| HB_FA_SPARSE
| HB_FA_REPARSE
| HB_FA_COMPRESSED
| HB_FA_OFFLINE
| HB_FA_NOTINDEXED
| HB_FA_ENCRYPTED
| HB_FA_VOLCOMP;
if( szAttributes && *szAttributes )
{
if( ( ulMask |= hb_fsAttrEncode( szAttributes ) ) & HB_FA_LABEL )
{
/* NOTE: This is Clipper Doc compatible. (not operationally) */
ulMask = HB_FA_LABEL;
}
}
if( szDirSpec && *szDirSpec )
{
szDirSpec = hb_fsNameConv( szDirSpec, &pszFree );
if( ulMask != HB_FA_LABEL )
{
if( *szDirSpec )
{
/* CA-Cl*pper compatible behavior - add all file mask when
* last character is directory or drive separator
*/
int iLen = strlen( szDirSpec ) - 1;
#ifdef HB_OS_HAS_DRIVE_LETTER
if( szDirSpec[ iLen ] == HB_OS_PATH_DELIM_CHR ||
szDirSpec[ iLen ] == HB_OS_DRIVE_DELIM_CHR )
#else
if( szDirSpec[ iLen ] == HB_OS_PATH_DELIM_CHR )
#endif
{
if( pszFree )
{
char * pszTemp = hb_xstrcpy( NULL, szDirSpec, HB_OS_ALLFILE_MASK, NULL );
hb_xfree( pszFree );
szDirSpec = pszFree = pszTemp;
}
else
{
szDirSpec = pszFree = hb_xstrcpy( NULL, szDirSpec, HB_OS_ALLFILE_MASK, NULL );
}
}
}
else
szDirSpec = HB_OS_ALLFILE_MASK;
}
}
else
szDirSpec = HB_OS_ALLFILE_MASK;
/* Get the file list */
if( ( ffind = hb_fsFindFirst( szDirSpec, ulMask ) ) != NULL )
{
PHB_ITEM pSubarray = hb_itemNew( NULL );
do
{
char buffer[ 32 ];
hb_arrayNew( pSubarray, F_LEN );
hb_arraySetC ( pSubarray, F_NAME, ffind->szName );
hb_arraySetNInt( pSubarray, F_SIZE, ffind->size );
hb_arraySetDL ( pSubarray, F_DATE, ffind->lDate );
hb_arraySetC ( pSubarray, F_TIME, ffind->szTime );
hb_arraySetC ( pSubarray, F_ATTR, hb_fsAttrDecode( ffind->attr, buffer ) );
/* Don't exit when array limit is reached */
hb_arrayAddForward( pDir, pSubarray );
}
while( hb_fsFindNext( ffind ) );
hb_itemRelease( pSubarray );
hb_fsFindClose( ffind );
}
#ifdef HB_OS_UNIX
if( strstr(szAttributes,"H") != 0 )
{
szDirSpec = hb_xstrcpy( NULL,".*", szDirSpec, NULL );
if( ( ffind = hb_fsFindFirst(szDirSpec, ulMask ) ) != NULL )
{
PHB_ITEM pSubarray = hb_itemNew( NULL );
do
{
char buffer[ 32 ];
hb_arrayNew( pSubarray, F_LEN );
hb_arraySetC ( pSubarray, F_NAME, ffind->szName );
hb_arraySetNInt( pSubarray, F_SIZE, ffind->size );
hb_arraySetDL ( pSubarray, F_DATE, ffind->lDate );
hb_arraySetC ( pSubarray, F_TIME, ffind->szTime );
hb_arraySetC ( pSubarray, F_ATTR, hb_fsAttrDecode( ffind->attr, buffer ) );
hb_arrayAddForward( pDir, pSubarray );
}
while( hb_fsFindNext( ffind ) );
hb_itemRelease( pSubarray );
hb_fsFindClose( ffind );
}
}
#endif
if( pszFree )
hb_xfree( pszFree );
hb_itemReturnRelease( pDir );
}
Bom, de repente pode ser útil pra mais alguém...
Abraços!
Stanis Luksys
sites.google.com/hblibs
Apoiar e se utilizar de projetos opensource não é uma questão de boicote, mas sim de liberdade.
Utilize, aprimore e distribua.
sites.google.com/hblibs
Apoiar e se utilizar de projetos opensource não é uma questão de boicote, mas sim de liberdade.
Utilize, aprimore e distribua.
Re: Dúvidas sobre migração para xHarbour
Olá
lugab:
Um dos maiores problemas do Harbour é sua documentação. Basicamente o que você vai conseguir é o que está nas pasta doc da sua distribuição e que pode ser acessa pela HBIde também. Os utilitários como o compilador, o HBMK2 e outros tem um help básico por linha de comando em geral acessados por --help
Stanis:
E uma das coisas boas do open source que é você pode postar sua modificação para que toda comunidade se beneficie e até mesmo quem fez a alteração porque terá ela como padrão do produto. Não sei se o pessoal via querer mudar a função do Clipper, mas podem aproveitar sua ideia em outro função, caso eles achem que isso possa trazer algum problema.
Minha opinião é que essa modificação serviria para todos, mas você é que deve decidir o que fazer. Se um dia eu for precisar acessar os arquivos no Linux pelo Harbour, gostaria desse comportamento.
T+
lugab:
Um dos maiores problemas do Harbour é sua documentação. Basicamente o que você vai conseguir é o que está nas pasta doc da sua distribuição e que pode ser acessa pela HBIde também. Os utilitários como o compilador, o HBMK2 e outros tem um help básico por linha de comando em geral acessados por --help
Stanis:
E uma das coisas boas do open source que é você pode postar sua modificação para que toda comunidade se beneficie e até mesmo quem fez a alteração porque terá ela como padrão do produto. Não sei se o pessoal via querer mudar a função do Clipper, mas podem aproveitar sua ideia em outro função, caso eles achem que isso possa trazer algum problema.
Minha opinião é que essa modificação serviria para todos, mas você é que deve decidir o que fazer. Se um dia eu for precisar acessar os arquivos no Linux pelo Harbour, gostaria desse comportamento.
T+
