Encontrar uma string em arquivo texto.

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

clebermano
Usuário Nível 3
Usuário Nível 3
Mensagens: 187
Registrado em: 03 Out 2004 12:39
Contato:

Encontrar uma string em arquivo texto.

Mensagem por clebermano »

bom dia Pessoal, tenho um arquivo texto, e preciso encontrar a string "1234" dentro dele, atraves de um get. alguem poderia me ajudar a fazer isto???? obrigado
Avatar do usuário
Augusto
Usuário Nível 3
Usuário Nível 3
Mensagens: 473
Registrado em: 26 Ago 2003 17:50
Localização: Maricá/RJ
Contato:

Mensagem por Augusto »

Transforme o arq. TXT em DBF e use a função AT()...
Sintaxe: AT(<exp.caractere 1>,<exp. caractere 2>)
Retorna um número que representa a posição inicial de uma expressão caractere dentro de uma segunda expressão, se a primeira estiver nela contida. Retorna (0) se a primeira expressão nãi estiver contida na segunda.
<exp.caractere 1>: é a cadeia de caracteres a ser localizada na segunda expressão.
<exp.caractere 2>: é a cadeia de caracteres a ser pesquizada para localizar a primeira expressão.
:xau Fui...
goulart@provsul.com.br

Faça da PROVSUL o seu Provedor de Serviços WEB
Visite: www.PROVSUL.com.br
evolver
Membro Master
Membro Master
Mensagens: 189
Registrado em: 28 Ago 2004 01:02
Localização: Cruz Alta - RS
Contato:

Mensagem por evolver »

Se for pra converter o TXT em dbf melhor seria um
locate for "1234" $ campo
E depois de localizar dai sim usaria o AT pra saber a posição. O problema é se ele precisar saber exatamente onde isso esta no texto pra calcular. E se o texto tiver mais de 256 colunas ai ferrou mesmo.

Melhor é partir pro xingamento... digo funções de baixo nível.

Código: Selecionar todos

v_busca="1234"
v_handle=fopen("arquivo.txt")
v_tamanho=fseek(v_handle,0,2) // pega tamanho do arquivo
fseek(v_handle,0,0)
v_lbusca=len(v_busca)
do while .t.
    v_buffer=space(v_lbusca)
    v_lidos=fread(v_handle,@v_buffer,v_lbusca)
    if v_lidos < v_lbusca
        exit
    endif
    if v_buffer = v_busca
        v_pos=fseek(v_handle,0,1)
        exit
    endif
enddo
? "a posição da string no arquivo é em"
? v_pos
fclose(v_handle)
Com esse código ele localiza a posição do texto dentro de um arquivo qualquer. Caso precise saber de linha e coisa assim dai o melhor mesmo vai ser converter pra DBF e torcer pra não ultrapassar o tamanho máximo de caracteres num campo alphanumerico.
Sergio "Evolver" Fagundes

CURVE-SE DIANTE DE MIM SER INSIGNIFICANTE, POIS EU SOU ROOT
Só respondo em PVT perguntas relativas ao que eu faço. Qualquer outra dúvida favor postar no fórum.
Peço aos veteranos que antes de responder a uma pergunta repetida dêem uma pesquisada e instruam a quem perguntou a fazer o mesmo.
clebermano
Usuário Nível 3
Usuário Nível 3
Mensagens: 187
Registrado em: 03 Out 2004 12:39
Contato:

Mensagem por clebermano »

muito obrigado pela ajuda vou testar a funcao.
Responder