Estou querendo fazer validações nos meus fontes, mas não tenho idéia se hb_regex poderia ajudar.
Exemplo:
Tenho lá a função ADOField( "CAMPO", "C", "TABELA"..... ou ADOField( "CAMPO", "N", "TABELA"...
Esse segundo parâmetro indica o tipo de campo, mas vira e mexe eu esqueço de colocar.
Queria validar os fontes, se tem algum sem isso.
Dá pra fazer?
hb_RegEx
Moderador: Moderadores
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
hb_RegEx
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
-
Kapiaba
- Colaborador

- Mensagens: 1908
- Registrado em: 07 Dez 2012 16:14
- Localização: São Paulo
- Contato:
hb_RegEx
Não entendi muito bem o queres fazer, veja se esse código ajuda.
Veja também: HB_ISREGEX().
Veja também: HB_ISREGEX().
Código: Selecionar todos
FUNCTION Main()
Local s := "ClaAbrok aBbey", n1, n2
? hb_isregex( hb_regexcomp( "a+b+" ) ) // .T.
n1 := 1
n2 := Len( s )
? hb_atx( "a+b+", s, .f., @n1, @n2 ), n1, n2 // aAb 3 3
? hb_regexhas( "a+b+", s, .f. ) // .T.
? hb_regexhas( "a+b+", s ) // .F.
? hb_regexlike( "a+b+", s, .f. ) // .F.
PrintArray( hb_regex( "a+b+",s,.f. ) ) // { aAb }
PrintArray( hb_regex( "(a+)(b+)",s,.f. ) ) // { aAb aA b }
PrintArray( hb_regexSplit( "a+b+",s,.f. ) ) // { Cl rok ey }
PrintArray( hb_regexAtx( "a+b+",s,.f. ) ) // { { aAb 3 5 } }
PrintArray( hb_regexAtx( "(a+)(b+)",s,.f. ) ) // { { aAb 3 5 } { aA 3 4 } { b 5 5 } }
PrintArray( hb_regexAll( "a+b+",s,.f. ) ) // { { aAb aBb } }
PrintArray( hb_regexAll( "(a+)(b+)",s,.f. ) ) // { { aAb aA b } { aBb a Bb } }
PrintArray( hb_regexAll( "(a+)(b+)",s,.f.,,,1 ) ) // { aAb aBb }
PrintArray( hb_regexAll( "(a+)(b+)",s,.f.,,,2 ) ) // { aA a }
PrintArray( hb_regexAll( "(a+)(b+)",s,.f.,,,0,.f. ) )
// { { { aAb 3 5 } { aA 3 4 } { b 5 5 } } { { aBb 10 12 } { a 10 10 } { Bb 11 12 } } }
PrintArray( hb_regexAll( "(a+)(b+)",s,.f.,,,1,.f. ) ) // { { aAb 3 5 } { aBb 10 12 } }
Return Nil
Function PrintArray( arr, lNoNewLine )
Local i
IF lNoNewLine == Nil .OR. !lNoNewLine
?
ENDIF
?? " {"
FOR i := 1 TO Len( arr )
IF Valtype( arr[i] ) == "A"
PrintArray( arr[i], .T. )
ELSE
?? " " + Iif( Valtype( arr[i] ) == "N", Ltrim(Str(arr[i])), arr[i] )
ENDIF
NEXT
?? " }"
Return Nil
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
hb_RegEx
Quero pegar cada linha, procurar ADOField(, e confirmar se tem "N" ou "C", ou "D"
Talvez aplicar um filtro do hb_RegEx() que já separe todas as linhas erradas.
Mas agora que fui explicar, talvez consiga pelo prompt, só não sei como indicar texto com aspas entre aspas.... rs
COPY *.PRG LIXO.TXT
TYPE LIXO.TXT ! find /i /n "adofield" | find /i ""N"" | find /i ""D"" | find /i ""C""
Talvez aplicar um filtro do hb_RegEx() que já separe todas as linhas erradas.
Mas agora que fui explicar, talvez consiga pelo prompt, só não sei como indicar texto com aspas entre aspas.... rs
COPY *.PRG LIXO.TXT
TYPE LIXO.TXT ! find /i /n "adofield" | find /i ""N"" | find /i ""D"" | find /i ""C""
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
hb_RegEx
Fiz do jeito antigo....
Procura aonde tem ADOFIELD(, e verifica se "C" vém antes do fim de linha chr(13)
Fiz de propósito apenas "C", e sobraram os com "N", e, lógico... o programa de teste que foge da regra.
Procura aonde tem ADOFIELD(, e verifica se "C" vém antes do fim de linha chr(13)
Código: Selecionar todos
cText := Upper( MemoRead( cFile ) )
DO WHILE nKey != K_ESC .AND. "ADOFIELD(" $ cText
nKey := Inkey()
cText := Substr( cText, At( "ADOFIELD(", cText ) )
IF At( ["C"], cText ) < At( Chr(13), cText )
//ELSEIF At( ["X"], cText ) < At( Chr(13), cText )
//ELSEIF At( ["X"], cText ) < At( Chr(13), cText )
ELSE
SayScroll( cFile + "*** ERRO ADOField ***" )
SayScroll( Substr( cText, 1, At( Chr(13), cText ) - 1 ) )
ENDIF
cText := Substr( cText, At( Chr(13), cText ) )
ENDDO
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
hb_RegEx
Então... tem casos aonde eu pegava um texto pra mostrar.
em DBF:
Em ADO, transformei isso em
é que o conteúdo poderia ser nulo, então indico o tipo de resultado que quero, por isso o "C", ou "N", ou "D", ou o que precisar.
Acontece que corre o risco de na hora de digitar, eu esquecer de indicar o tipo, e poderia acontecer erro em run-time.
É uma rotina pra conferir minha digitação nos fontes.
Foi o quebra-galho em ADO que encontrei: passo o campo que quero, qual a tabela pesquisar, qual a chave de pesquisa, e também o tipo de retorno que espero.
Isso economiza muito fonte, seja híbrido dbf+MySQL ou seja MySQL sozinho.
Vários deles vão sumir, quando o SELECT principal trouxer tudo pronto, mas por enquanto foi meu quebra-galho.
Troquei duas linhas usando DBF por uma usando ADO... tá bom por enquanto...
Mas como estou mexendo rápido nessas coisas... fico na dúvida se esqueci de indicar o tipo em algum lugar.
A rotina deste post vai conferir se esqueci em algum fonte.
em DBF:
Código: Selecionar todos
Encontra( nota->cliente, "jpcadastro", "numlan" )
@ Row(), 32 SAY jpcadastro->cdNome
Código: Selecionar todos
@ Row(), 32 SAY ADOField( "CDNOME", "C", "JPCADASTRO", "IDCADASTRO=" + StringSql( nota->cliente ) )
Acontece que corre o risco de na hora de digitar, eu esquecer de indicar o tipo, e poderia acontecer erro em run-time.
É uma rotina pra conferir minha digitação nos fontes.
Foi o quebra-galho em ADO que encontrei: passo o campo que quero, qual a tabela pesquisar, qual a chave de pesquisa, e também o tipo de retorno que espero.
Isso economiza muito fonte, seja híbrido dbf+MySQL ou seja MySQL sozinho.
Vários deles vão sumir, quando o SELECT principal trouxer tudo pronto, mas por enquanto foi meu quebra-galho.
Troquei duas linhas usando DBF por uma usando ADO... tá bom por enquanto...
Mas como estou mexendo rápido nessas coisas... fico na dúvida se esqueci de indicar o tipo em algum lugar.
A rotina deste post vai conferir se esqueci em algum fonte.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
hb_RegEx
Faltou completar...
O que queria com hb_RegEx() era procurar ADOField( "any", "C" )
Se o segundo parâmetro estava devidamente preenchido com N ou C ou D
À primeira vista, seria parecido com isto (não está em formato hb_RegEx)
*ADOField("*", "?", *
* = qualquer coisa
? = um caractere específico
O que queria com hb_RegEx() era procurar ADOField( "any", "C" )
Se o segundo parâmetro estava devidamente preenchido com N ou C ou D
À primeira vista, seria parecido com isto (não está em formato hb_RegEx)
*ADOField("*", "?", *
* = qualquer coisa
? = um caractere específico
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/