Fórum Arquivo Texto #251318
21/09/2004
0
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
Curtir tópico
+ 0Posts
21/09/2004
Martins
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.
Gostei + 0
21/09/2004
Welter
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
Gostei + 0
22/09/2004
Williandb
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....
Gostei + 0
22/09/2004
Macario
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
Gostei + 0
22/09/2004
Welter
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
Gostei + 0
22/09/2004
Macario
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:
Gostei + 0
22/09/2004
Welter
Acho que o melhor e usar TStringList mesmo senao ficaremos num debate interminavel...hehehe
Abração
Marcelo Welter
www.welter.pro.br/sultan
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)