Página 1 de 1

Busca e alteracao em arquivo Texto (me ajudem

Enviado: 22 Jun 2005 14:36
por Carol
Pessoal , ja nao sei o que fazer , alguem poderia me dizer se tem como fazer o seguinte.

Em um arquivo texto, tenho as seguintes informacoes
1 nome 1
2 nome 2
3 nome 3
4 nome 4
.
.

Supondo que eu queira pegar as informacoes do codigo 3, Como faco pra posicionar nesse codigo, altera-lo e gravar o que foi alterado.
Nao sei se expliquei direito.

To precisando muito que isso funcione...aceito qualquer sugestao

Obrigadaaaaa

Enviado: 24 Jun 2005 10:39
por software_facil
Bom dia Carol,

Tenho uma rotina que funciona da seguinte forma :
1- vc cria um arquivo texto, com palavras chave dentro dele;
2- através de uma rotina, quando precisa imprimir o texto, associa a uma tabela e as palavras chave são trocadas por informações das tabelas

Se for isso que vc procura, entre em contato através do e-mail msdn_001@yahoo.com.br que lhe passo a rotina.

Abraços

Enviado: 24 Jun 2005 11:05
por rochinha
Amiguinho

Voce poderá usar RAT(), AT() e STRTRAN():

RAT() e AT() tem o mesmo funcionamento pois retornam a posicao numerica inicial da string de procura, exemplo:

cVar := "JOSE CARLOS DA ROCHA"
? at( cVar, "DA" )

13

Retornou a posicao 13 como sendo o inicio da palavra "DA"

Ja com STRTRAN():

? STRTRAN( cVar, "DA", "NAODA" )

"JOSE CARLOS NAODA ROCHA"

@braços :?)

Re: Busca e alteracao em arquivo Texto (me ajudem

Enviado: 24 Jun 2005 15:32
por Maligno
Carol escreveu:aceito qualquer sugestao
Tenho uma sugestão na última mensagem deste artigo.

[]'s
Maligno
http://www.buzinello.com/prg

Enviado: 25 Jun 2005 01:28
por Stanis Luksys
Bom dia!!!!

Criei e uso em meus sistemas uma função bem simples para exportar dados, que acho que pode funcionar no exemplo que voce deu.


Veja como ela é simples: (15 linhas)

**********************************

Código: Selecionar todos

function SubsText( pArq  ,;  //  Arquivo a ser editado
                   pPesq ,;  //  Sub-string a ser pesquisada
                   pTam  ,; //  Tamanho da String a ser editada
                   pStr )     //  Nova string (que deve ser do 
                                //  mesmo tamanho que pTam!!!)

local  cTexto  ,;  // var tipo str q contem o arquivo inteiro
       nLugar ,; // posicao da primeira ocorrencia da string pStr
       cNovArq   // var com o arquivo ja modificado

cTexto := MemoRead( pArq )

nLugar := At( pPesq, cTexto )

cNovoArq := Stuff( cTexto, nLugar, pTam, pStr )

MemoWrit( pArq, cNovoArq )

return nil
***************************************************

por exemplo:


no arquivo CLIENTES.TXT voce tem:

00001 JOAO DA SILVA
00002 MARIA DE SOUZA
00003 ANTONIO MARCOS
00004 JOSE MEDEIROS

aí vc quer trocar JOSE MEDEIROS por JOSE CARLOS

entao chame a funcao assim:

***********************************
SubsText( "CLIENTES.TXT", "JOSE MEDEIROS", 13, "JOSE CARLOS " )
***********************************

note os 2 espacos no ultimo parametro pois senao ficaria JOSE CARLOSOS

voce pode procurar por substring, mas ela vai pegar sempre a primeira encontrada, e vc nao deve esquecer o tamanho do ultimo parametro ser igual ao penultimo:

***********************************
SubsText( "CLIENTES.TXT", "JOSE", 13, "JOSE CARLOS " )
***********************************


OBS.:

*com um minimo de esforco vc pode melhorar esta funcao em varios aspectos, como pesquisar sempre pelo código, usar Len() para nao precisar colocar aqueles espacos dento das aspas e etc...

*esta funcao altera o o arquivo original...


Por favor, faça um teste e mande uma resposta...


Att, Stanis Luksys[/code]

Enviado: 27 Jun 2005 01:31
por rochinha
Amiguinho

Faça uma melhoria nesta sua função.

Coloque STRTRAN(), assim:

Código: Selecionar todos

function SubsText( pArq  ,;  //  Arquivo a ser editado 
                   pPesq ,;  //  Sub-string a ser pesquisada 
                   pTam  ,; //  Tamanho da String a ser editada 
                   pStr )     //  Nova string (que deve ser do 
                                //  mesmo tamanho que pTam!!!) 

local  cTexto  ,;  // var tipo str q contem o arquivo inteiro 
       nLugar ,; // posicao da primeira ocorrencia da string pStr 
       cNovArq   // var com o arquivo ja modificado 

cTexto := MemoRead( pArq ) 

// -> Aqui esta o novo trecho de codigo
cNovoArq := StrTran( cTexto, pPesq, pStr )

MemoWrit( pArq, cNovoArq ) 

return nil
@braços :?)

Enviado: 28 Jun 2005 00:38
por Stanis Luksys
Certo...

Na verdade logo depois que enviei a msg pensei nessa possibilidade também...

Acontece que nos meus sistemas, qdo realizo importacao de dados, nem sempre substituo por completo uma string ou sub-string, muitas vezes apenas insiro ou removo parte dela, por isso uso stuf. Essa funcaozinha é apenas uma versao "simplificada" da que utilizo com stuf().

Mas creio que para a necessiade específica dela seja realmente melhor o uso de strtran()... estou com voce!

Minha intenção ao enviar essa funcao foi só demonstrar que não é complicado trabalhar com strings e arquivos textos com o clipper, e muito menos há necessidade de envolver arquivos adicionais (como bancos .dbf) para realizar esse tipo de tarefa.

Valeu pela dica, tenho certeza que com essas dicas a Carol já poderá realizar tranquilamente o q deseja.

Valeu!

Enviado: 28 Jun 2005 09:42
por rochinha
Amiguinho

É isto aí.

Somos uma equipe, ou seja, este forum é um cérebro cheio de células, umas novas outras velhas, mas todas fazem parte do mesmo conjunto, todos trabalhando com um só intuito.

Na verdade este forum é a extensão virtual de nosso cérebro.

@braços :?)