Fórum Arquivo Texto #251318

21/09/2004

0

olá....

o negócio é o seguinte:

em um arquivo texto tenho as informações de um produto
código, descrição, valor, quantidade em estoque...
quando o usuario do meu programa digita o código do produto é feita uma busca no arquivo, que retorna todas as outras informações..
porém.. gostaria de saber como posso alterar uma única linha do arquivo sem que precise guardá-lo em algum componente como um memo, ou seja, usando alguma rotina q simplesmente modifique essa linha e grave ela novamente no arquivo com as novas informações...


valeu...


Williandb

Williandb

Responder

Posts

21/09/2004

Martins

kara!

ainda não escrevi nada parecido, trabalho com arquivos (TXT) mas nunca precisei modificar nada, mas acho q se vc pesquisar aqui no forum, vai encontrar o q desejas, um dia desses havia algo parecido postado aqui...

Boa sorte.


Responder

Gostei + 0

21/09/2004

Welter

Ola, vou tentar dar um chutezinho...

Voce pode abrir o arquivo usando um ponteiro, posicionar o ponteiro sobre o inicio do texto a ser alterado e gravar por cima. Vou tentar passar alguns comandos abaixo que voce podera pesquisar no Help e entender melhor.

procedure TForm1.Button1Click(Sender: TObject);
var
  iFileHandle: Integer;
begin
  iFileHandle := FileOpen(´MeuArquivo.txt´, fmOpenReadWrite); // Abre para leitura e gravação
  FileSeek(iFileHandle,0,0); // Posiciona o ponteiro no local desejado
  FileWrite(iFileHandle, ´Meu Texto´,9); // escreve 9 bytes na posicao
  FileClose(iFileHandle); // fecha o arquivo
end;


Espero ter ajudado.

Abração

Marcelo Welter
www.welter.pro.br/sultan


Responder

Gostei + 0

22/09/2004

Williandb

não estou acostumado a trabalhar com ponteiros...
então...

usando ponteiros, como posso fazer para localizar, por exemplo, um produto pelo seu código?
Fiz uns testes com o código q vc postou e funcionou blz, altero direto no arquivo...
o problema agora então é: como encontrar a tal linha q preciso alterar?

se puder me ajudar com isso...

mas veleu a força...
ja ajudou bastante....


Responder

Gostei + 0

22/09/2004

Macario

Olá programador, bom dia.


Use uma StringList...é rapido e bem facil

Faça uma pesquisa no forum suando : stringlist+arquivo texto

caso tenha duvidas poste aqui novamente.....

espero ter ajudado


Responder

Gostei + 0

22/09/2004

Welter

Ola Macario

Basicamente pelo que entendi para voce localizar o seu codigo, pressupoe-se que cada linha tenha o mesmo tamanho, entao voce procura o CR+LF que identifica que a linha acabou, ai voce armazena a posicao do 1o. byte da linha e entao com estes 2 bytes voce tem condicoes de ler, linha a linha e achar dentro de cada linha o codigo de seu produto. Localizado o cara certo entao e so gravar por cima...

LEMBRANDO este metodo pode se tornar lento, mas nao ocupa memoria nenhuma (consideravel). Entao voce tem de ver oque mais se aplica a seu caso, voce pode usar o stringlist, mas isso so voce pode definir..

Abração

Marcelo Welter
www.welter.pro.br/sultan


Responder

Gostei + 0

22/09/2004

Macario

Ola Macario Basicamente pelo que entendi para voce localizar o seu codigo, pressupoe-se que cada linha tenha o mesmo tamanho, entao voce procura o CR+LF que identifica que a linha acabou, ai voce armazena a posicao do 1o. byte da linha e entao com estes 2 bytes voce tem condicoes de ler, linha a linha e achar dentro de cada linha o codigo de seu produto. Localizado o cara certo entao e so gravar por cima... LEMBRANDO este metodo pode se tornar lento, mas nao ocupa memoria nenhuma (consideravel). Entao voce tem de ver oque mais se aplica a seu caso, voce pode usar o stringlist, mas isso so voce pode definir.. Abração Marcelo Welter www.welter.pro.br/sultan



Cara nao entendi quase nada..do que voce disse?????

so a parte quanto a lentidao....isso realmente pode ocorrer caso o arquivo se ja muito grande... :roll:


Responder

Gostei + 0

22/09/2004

Welter

Sem ofença mas esse eh o problema da galera que eh viciada em componente pronto...hehehehe

Acho que o melhor e usar TStringList mesmo senao ficaremos num debate interminavel...hehehe

Abração

Marcelo Welter
www.welter.pro.br/sultan


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar