Página 1 de 1

Encontrar uma string em arquivo texto.

Enviado: 26 Nov 2004 09:45
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

Enviado: 26 Nov 2004 17:11
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.

Enviado: 26 Nov 2004 19:01
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.

Enviado: 28 Nov 2004 22:11
por clebermano
muito obrigado pela ajuda vou testar a funcao.