Página 1 de 1

HBSix

Enviado: 05 Set 2007 11:15
por Hasse
Bom dia colegas.

Na pasta xHarbour\lib encontra-se a HBSIX.LIB.

Porém, compilando acusa erro por falta da Função HB_FUN_SX_WILDMATCH, que é a Função que eu uso.

Pesquisando no Help XML do xHarbour nada encontrei.
O quê está faltando ?
A sintaxe é diferente ?

Alguém pode me ajudar ?

Enviado: 05 Set 2007 11:23
por sygecom
Hase, Bom dia
Dei uma olhada aqui no Help e achei a seguinte Sintase:

WildMatch( <cPattern>, <cString>, [<lFullMatch>] )

Código: Selecionar todos

PROCEDURE Main
      LOCAL cStr := "The xHarbour compiler"

      ? WildMatch( "bo?"  , cStr, .F. )  // result: .F.
      ? WildMatch( "bo?"  , cStr, .T. )  // result: .F.

      ? WildMatch( "*bo"  , cStr, .F. )  // result: .T.
      ? WildMatch( "*bo"  , cStr, .T. )  // result: .F.

      ? WildMatch( "The"  , cStr, .F. )  // result: .T.
      ? WildMatch( "The"  , cStr, .T. )  // result: .F.

      ? WildMatch( "The*r", cStr, .F. )  // result: .T.
      ? WildMatch( "The*r", cStr, .T. )  // result: .T.

      ? WildMatch( "The?x", cStr, .F. )  // result: .T.
      ? WildMatch( "The?x", cStr, .T. )  // result: .F.

      USE Customer
      SET FILTER TO WildMatch( "W*s", FIELD->LastName )

      GO TOP
      DbEval( {|| QOut( FIELD->LastName ) } )
      // Output: Names starting with "W" and ending with "s"
      // Walters
      // Waters

      CLOSE Customer
   RETURN
Abraços
Leonardo Machado

Enviado: 05 Set 2007 12:03
por Hasse
Valeu Leonardo.

Funcionou. A sintaxe é diferente do SIX do Clipper.

Obrigado.

Enviado: 05 Set 2007 21:06
por carlos_dornelas
Só curiosidade: para que serve esse WildMatch??

Antonio Carlos

Enviado: 05 Set 2007 22:31
por Hasse
Para filtrar dados de um Banco de Dados, como no exemplo acima.

SET FILTER TO WildMatch("Hasse",CAMPO) deixa passar somente campos que iniciem com "Hasse";

SET FILTER TO WildMatch("*Hasse",CAMPO) deixa passar somente campos que possuam a palavra "Hasse" em qualquer posição;

SET FILTER TO WildMatch("???Hasse",CAMPO) deixa passar somente campos que contenham 3 caracteres quaisquer seguidos da palvra "Hasse".

A criatividade é o limite...

Enviado: 06 Set 2007 10:17
por gera som djs
só por curiosidade pra que serve esse hbsix?

Enviado: 06 Set 2007 11:50
por sygecom
Tem diversas funções que era usada na SIX do clipper...como encriptação e descripitação de dados, busca incrementada ...e etc...de uma olhada na Fonte dela na CVS que vc tera a lista completa !!!

Enviado: 06 Set 2007 13:17
por Hasse
sygecom escreveu:Tem diversas funções que era usada na SIX do clipper...como encriptação e descripitação de dados, busca incrementada ...e etc...de uma olhada na Fonte dela na CVS que vc tera a lista completa !!!
Virei todas as Pastas do xHarbour do avêsso e nada encontrei de fontes do SIX

Onde se encontram ?

Lembrando que baixei o último xHarbour do teu Site.

Enviado: 06 Set 2007 13:22
por Maligno
Baixe o help que tem no meu site: http://pub.buzinello.com/index.php?d=./ ... tutorials/
Nele constam, acredito eu, os auxílios de todas essas funções. E muito mais. :)

Enviado: 06 Set 2007 13:39
por sygecom
Hasse, vc pode baixar o xharbour pelo TortoiseCVS e dar uma olhada na pasta \xharbour\source\rdd\hbsix onde tem tres arquivos em .C contendo as funções da HBSIX.

Abraços
Leonardo Machado

Enviado: 06 Set 2007 17:01
por Hasse
Valeu amigos, Sygecom e Maligno.

Obrigado.

Enviado: 07 Set 2007 21:24
por Hasse
Boa noite colegas.

Fiz os testes com o WildMatch, e ele não possui AINDA os recursos do equivalente do SIX. Vejam:

Código: Selecionar todos

Para:
c_filtro := "HASSE"
c_campo  := "NOME"

SET FILTER TO WildMatch(c_filtro,NOME)                && OK - FUNCIONA
SET FILTER TO WildMatch(c_filtro,c_campo)             && Não deixa passar
SET FILTER TO WildMatch(c_filtro,c_campo,.t.)         && Não deixa passar
SET FILTER TO WildMatch(c_filtro,c_campo,.f.)         && Não deixa passar
SET FILTER TO WildMatch(c_filtro,&c_campo)            && ERRO DE RUNTIME
SET FILTER TO WildMatch(c_filtro,"&c_campo")          && Não deixa passar
SET FILTER TO WildMatch(c_filtro,"&c_campo",.t.)      && Não deixa passar
SET FILTER TO WildMatch(c_filtro,"&c_campo",.f.)      && Não deixa passar
SET FILTER TO WildMatch(c_filtro,(c_campo))           && Não deixa passar
SET FILTER TO WildMatch(c_filtro,(c_campo),.t.)       && Não deixa passar
SET FILTER TO WildMatch(c_filtro,(c_campo),.f.)       && Não deixa passar
SET FILTER TO WildMatch(c_filtro,(&c_campo))          && ERRO DE RUNTIME
SET FILTER TO WildMatch(c_filtro,("&c_campo"))        && Não deixa passar
SET FILTER TO WildMatch(c_filtro,("&c_campo"),.t.)    && Não deixa passar
SET FILTER TO WildMatch(c_filtro,("&c_campo"),.f.)    && Não deixa passar
SET FILTER TO WildMatch(c_filtro,FIELD->&c_campo)     && ERRO DE RUNTIME
SET FILTER TO WildMatch(c_filtro,FIELD->"&c_campo")   && ERRO DE COMPILAÇÃO




Para:
c_filtro := "HASSE"
c_campo  := "FIELD->NOME"

SET FILTER TO WildMatch(c_filtro,FIELD->NOME)         && OK - FUNCIONA
SET FILTER TO WildMatch(c_filtro,&c_campo)            && ERRO DE RUNTIME
SET FILTER TO WildMatch(c_filtro,"&c_campo")          && Não deixa passar
SET FILTER TO WildMatch(c_filtro,"&c_campo",.t.)      && Não deixa passar
SET FILTER TO WildMatch(c_filtro,"&c_campo",.f.)      && Não deixa passar
SET FILTER TO WildMatch(c_filtro,c_campo)             && Não deixa passar
SET FILTER TO WildMatch(c_filtro,c_campo,.t.)         && Não deixa passar
SET FILTER TO WildMatch(c_filtro,c_campo,.f.)         && Não deixa passar
SET FILTER TO WildMatch(c_filtro,(c_campo))           && Não deixa passar
SET FILTER TO WildMatch(c_filtro,(c_campo),.t.)       && Não deixa passar
SET FILTER TO WildMatch(c_filtro,(c_campo),.f.)       && Não deixa passar
SET FILTER TO WildMatch(c_filtro,(&c_campo))          && ERRO DE RUNTIME
SET FILTER TO WildMatch(c_filtro,("&c_campo"))        && Não deixa passar
SET FILTER TO WildMatch(c_filtro,("&c_campo"),.t.)    && Não deixa passar
SET FILTER TO WildMatch(c_filtro,("&c_campo"),.f.)    && Não deixa passar
SET FILTER TO WildMatch(c_filtro,"(c_campo)")         && Não deixa passar
SET FILTER TO WildMatch(c_filtro,"(c_campo)",.t.)     && Não deixa passar
SET FILTER TO WildMatch(c_filtro,"(c_campo)",.f.)     && Não deixa passar
SET FILTER TO WildMatch(c_filtro,"(&c_campo)")        && Não deixa passar
SET FILTER TO WildMatch(c_filtro,"(&c_campo)",.t.)    && Não deixa passar
SET FILTER TO WildMatch(c_filtro,"(&c_campo)",.f.)    && Não deixa passar
Ou seja:

O WildMatch do xHarbour necessita declarar especicamente o nome do CAMPO. Não aceita declaração por variável como o SIX aceita.

É possível que não estou acertando a sintaxe, mas pelos testes acima que fiz, não tive êxito.

A observação "Não deixa passar" quer dizer que o SET FILTER recusou todos os registros, mesmo aqueles que atendem aos requisitos de filtragem.

Alguém tem alguma sugestão ou informação ?

Enviado: 10 Set 2007 18:49
por sygecom
Hasse, o xharbour ainda não é totalmente compativel com a SIX...me parece que em 100% só a versão comercial.

Abraços
Leonardo Machado

Enviado: 11 Set 2007 12:50
por Hasse
Obrigado, Leonardo.