Fazer Consultas em Arquivo TXT

Delphi

23/10/2004

aí pessoal estava precisando de uma rotina para fazer consultas de certos valores em um arquivo txt e identificar em que linha ele está.alguem já fz isso? :lol:


Tap_pedroso

Tap_pedroso

Curtidas 0

Respostas

Lordelphi

Lordelphi

23/10/2004

essa função acha o texto q vc quer , + pra mostrar onde ta ainda n descobri.

pos(´palavra a localizar´)


GOSTEI 0
Rjun

Rjun

23/10/2004

Use ADO para fazer conexão com arquivos texto.


GOSTEI 0
Tap_pedroso

Tap_pedroso

23/10/2004

huuumm, mas pelo ado é seguro de q sempre vai dar certo


GOSTEI 0
Rjun

Rjun

23/10/2004

Voce tambem pode carregar o arquivo texto em uma Tstringlist e procurar o valor. Ai voce tem como saber em que linha esta o valor que vc encontrou.


GOSTEI 0
Tap_pedroso

Tap_pedroso

23/10/2004

deixa eu abrir o jogo e vcs me falam qual o melhor caminho.

eu estou desenvolvendo um pdv offline e no terminal pdv eu pensei em dar carga nele em arquivo texto ou em arquivo db no arquivo texto eu não tenho perigo de o arquivo corromper ou perder indeces com uma queda de energia com o exe aberto por exemplo e no arquivo db eu corro esse risco mas a consulta de produtos seria + rápida. agora pergunto:

vcs concordam comigo, qual opção é melhor?


obrigado. :lol:


GOSTEI 0
Raczy

Raczy

23/10/2004

Use as funções de Arquivos Ini ou Vasculhe todo o arquivo.


GOSTEI 0
Aroldo Zanela

Aroldo Zanela

23/10/2004

deixa eu abrir o jogo e vcs me falam qual o melhor caminho. eu estou desenvolvendo um pdv offline e no terminal pdv eu pensei em dar carga nele em arquivo texto ou em arquivo db no arquivo texto eu não tenho perigo de o arquivo corromper ou perder indeces com uma queda de energia com o exe aberto por exemplo e no arquivo db eu corro esse risco mas a consulta de produtos seria + rápida. agora pergunto: vcs concordam comigo, qual opção é melhor? obrigado. :lol:

Colega,

Se você está falando de venda não concomitante, então, armazene as informações em sua base de dados. Para minimizar os riscos de corrupção de tabelas, utilize uma tabela temporária e depois ´descarregue´ numa tabela permanente.
Quanto à pesquisa em arquivos textos, a melhor forma é utilizar TStringList é o método FIND.


GOSTEI 0
Adsilver

Adsilver

23/10/2004

Companheiro,

Atualmente, a melhor soluções para aplicações desconectadas do SGDB é a utilização de XML. Utilize ClientDataSet e a cada alteração/inclusão/exclusão salve o dataset em algum XML, ou no formato binário, mas XML é mais maleável. Depois fica muito mais fácil de vc sincronizar com o banco real. Carrege todo o arquivo de maleta (XML) e envie todos os registros com ApplyUpdates. Para gerenciar erros, utilize os eventos de ClientDataSet. Dessa maneira, o trabalho ´duro´ já está todo implementado nos componentes do Delphi.
Um Abraço.


GOSTEI 0
Tap_pedroso

Tap_pedroso

23/10/2004

aí adsilver fiquei interessado no uso de xml, mas uma pergunta.

arquivos xml ficam grandes com facilidade ou é igual a arquivos db e dbf em relação a tamanho?


GOSTEI 0
Aroldo Zanela

Aroldo Zanela

23/10/2004

Colega,

Apesar da XML armazenar de forma redundante os metadados, pois, entre outras coisas, deve ser legível para máquina e para o homem, fica mais fácil efetuar os mapeamentos para o SGBD. Portanto, o uso de tabelas temporárias com XML é altamente recomendável.


GOSTEI 0
Tap_pedroso

Tap_pedroso

23/10/2004

olha eu nunca fiz nada com xml será q vcs não poderiam indicar um bom tutorial onde mostre exemplos de como criar arquivos xml e como conectar e fazer uma aplicação para trabalhar com ele.

obrigado.


GOSTEI 0
Adsilver

Adsilver

23/10/2004

Amigo,

Como dito aqui, os arquivos XML realmente tendem a crescer muito por armazenar muitos metadados. Contudo, ninguem vai montar uma base de dados completa e fixa em XML. Isso seria suicídio. Essa idéia é valida para pequenas bases de dados, como arquivos de maleta. Uma grande aplicabilidade seria a de vendedores que passam o dia todo na rua com um notebook ou palm na mão, e no fim do expediente têm de atualizar a base de dados principal. Obs: Fazer isso com arquivos TXT, além de ser da idade da pedra, são horríveis de manipular e visualizar.
Vai aí um pequeno (bem pequeno mesmo) tutorial para utilizar XML em arquivos de maleta:

Adicione um ClientDataSet. Crie seus campos de forma dinâmica (utilizando o FieldsEditor) ou busque os metadados de algum banco de dados real.
Esse componente é bem poderoso e pode funcionar perfeitamente ´desplugado´ de um SGBD. Aí partir daí, monte as interfaces normalmente, conectando controles Data-Aware a esse CDS (ClientDataSet). Em qualquer momento, utilize o método SaveToFile ou SaveToXML (ou algo assim, nao me lembro o nome exato) do CDS para salvar os dados em XML. Eu utilizaria o evento AfterPost do CDS, mas isso fica a seu critério.
Crie uma rotina nessa interface para sincronizar a base de dados. Nesse rotina, carregue o arquivo XML para um CDS utilizando o método LoadFormFile ou LoadFromXML (novamente nao lembro o nome) e utilize o método ApplyUpdates do CDS.
No CDS existe um evento OnReconcilieError que é disparado a cada registrado com erro na sincronização. Manipule esse evento para decidir o que fazer com cada registro ´errado´. É possível ignorar, abortar a operação, alterar um valor e enviar novamente, etc.
Essa foi apenas um resumo de tudo que pode ser feito. Na internet existem muitos artigos sobre CDS, e eu gosto muito do livro do Marco Cantu de Delphi7. Fala muito sobre isso. Outro livro bom é o DataSnap e DBExpress no Delphi.
O XML está sendo a linguagem (ou meta-linguagem, como alguns preferem) mais utilizada para intercâmbio de dados. Tudo indica que se tornará um padrão (se é que jã não se tornou). Varias empresas consagradas, como a Micro$oft, estão investindo muito nessa tecnologia. Mesmo que não for utilizá-lo em seu atual aplicativo, seria interesse estudá-lo.

Espero ter contribuído.
Um grande abraço.


GOSTEI 0
Tap_pedroso

Tap_pedroso

23/10/2004

valeu adsilver, muito obrigado pela atenção :lol:


GOSTEI 0
Tap_pedroso

Tap_pedroso

23/10/2004

aí adsilver testei o xml com o cds eu criei o xml atraves do cds em um servidor na rede, adicionei em um form um grid e um dbnavigator gravei algo no xml, coloquei um botao com o codigo cds.loadfromfile indicando o xml na rede, coloquei um botao de pesquisa como codigo locate cliquei no botao carregar ele carregou o cds + o grid, aí eu desliguei o hub da rede e ele continuo fazendo pesquisa no cds.muito legal era o q eu queria.agora uma colocação: a pesquisa continuou mesmo sem conexao com o xml(sem rede) pq os dados do xml ficou em memoria q o cds colocou em memoria certo?


GOSTEI 0
Aroldo Zanela

Aroldo Zanela

23/10/2004

Colega,

Sobre a especificação completa da XML, veja aqui: http://www.w3c.org/TR/2004/REC-xml-20040204/

Se tiver oportunidade, pesquise na Web sobre os NXD (Banco de dados XML Nativos), como: Tamino, Xindece, etc.


GOSTEI 0
POSTAR