Fórum como criar arquivo texto #750
25/11/2008
0
Fabio Gauna
Curtir tópico
+ 0Posts
25/11/2008
Guinther Pauli
Gostei + 0
26/11/2008
Arnoldo Lima
Gostei + 0
26/11/2008
Guinther Pauli
Qto a sua outra dúvida precisamos da sua gentileza em abrir um outro chamado (regras do sistema que gerencia os chamados), ai poderemos auxiliá-lo Contamos com sua compreensão,
Aguardo seu retorno, abs
Gostei + 0
26/11/2008
Arnoldo Lima
Obrigado por sua atenção.
Não, eu não entendi tudo que me passou para criar o arquivo texto.
Talvez algum exemplo fosse melhor.
Quanto ao "Se vc entendeu a resposta anterior que era como montar um arquivo texto, nos confirme que está OK por favor e fechamos esse chamado que continua aberto". Não sei como funciona aqui ainda por isso não entendo quando diz "por favor e fechamos esse chamado que continua aberto". Passar pra próxima se não resolvi ainda isso? Grato Arnoldo
Gostei + 0
26/11/2008
Guinther Pauli
var
F:TextFile; Begin
AssignFile(f,c:\PEDPDV);
Rewrite(f); //abre o arquivo para escrita Writeln(f,Testando); escreve no arquivo e desce uma linha Write(f,CampoFormatado); //escreve no arquivo sem descer a linha
Closefile(f); //fecha o arquivo
End; ///Rotina para ler de um arquivo texto: var
f:TextFile;
linha:String; begin
AssignFile(f,c:\PEDPDV);
Reset(f); //abre o arquivo para leitura; While not eof(f) do begin
Readln(f,linha); //le do arquivo e desce uma linha. O conteúdo lido é transferido para a variável linha
Memo1.lines.add(linha);
End; Closefile(f);
end; Aguardamos seu retorno, abs
Gostei + 0
26/11/2008
Guinther Pauli
Gostei + 0
27/11/2008
Arnoldo Lima
Var
F:TextFile;
begin
AssignFile(F,c:\PEDPDV);
rewrite(F); //abre o arquivo para escrita
writeln(F,Testando); //escreve no arquivo e desce uma linha
//write(F,CampoFormatado); //escreve no arquivo sem descer a linha
closefile(F); //fecha o arquivo
end;
Coloquei o código acima num BitBtn para testar, mas dá uma mensagem "File acces denied" O que eu entendi: - Com esse código é para ser criado um arquivo texto de nome F dentro da pasta c:\PEDPDV. o comando rewrite(F) abre esse arquivo criado "F" e escreve a palavra "Testando" dentro dele. Depois o fecha com CloseFile(F). Sei também que se eu tivesse criado uma variável conforme abaixo daria certo var Caminho: String; onde Caminho := c:\PEDPDV; Poderia ter subitituído por: AssignFile(F,Caminho); Está certo?
Até aí beleza. Mas este: "write(F,CampoFormatado);". Que variável é essa: "CampoFormatado". E quanto ao erro: "File acces denied" ? Aguardo respostas Arnoldo Nunes
Gostei + 0
27/11/2008
Guinther Pauli
Mas este: "write(F,CampoFormatado);". Que variável é essa: "CampoFormatado".
E quanto ao erro: "File acces denied" ? Resposta:O campo formatado significa as variáveis que irão receber os valores, vc lembra que
No outro post eu coloquei la as variáveis com o nome dos campos do seu arquivo
De layout que deve seguir? Enfim é o que vc precisa escrever no arquivo texto. Aguardamos seu retorno para encerrarmos esse chamado, abs
Gostei + 0
27/11/2008
Arnoldo Lima
Gostei + 0
27/11/2008
Guinther Pauli
Var
F:TextFile;
begin
AssignFile(F,c:\PEDPDV);
rewrite(F); //abre o arquivo para escrita
writeln(F,Testando); //escreve no arquivo e desce uma linha
//write(F,CampoFormatado); //escreve no arquivo sem descer a linha
closefile(F); //fecha o arquivo
end;
Adicione uma barra e nome do arquivo exemplo
Var
F:TextFile;
begin
AssignFile(F,’c:\PEDPDV\teste.txt’);
rewrite(F); //abre o arquivo para escrita
writeln(F,Testando); //escreve no arquivo e desce uma linha
//write(F,CampoFormatado); //escreve no arquivo sem descer a linha
closefile(F); //fecha o arquivo
end;
Funciona perfeitamente. Aguardo seu retorno para encerrarmos o chamado, abs
Gostei + 0
28/11/2008
Arnoldo Lima
F:TextFile;
begin
AssignFile(F,’c:\PEDPDV\teste.txt’);
rewrite(F); //abre o arquivo para escrita
writeln(F,Testando); //escreve no arquivo e desce uma linha
//write(F,CampoFormatado); //escreve no arquivo sem descer a linha
closefile(F); //fecha o arquivo
end; Estava faltando era especificar o nome do arquivo, no caso "teste.txt" Agora, quanto ao "CampoFormatado" ? Como posso fazer? Tenho uma query com nome DM.TbPedido e nela tem os campos: CLIENTE VALORTOTAL DESCONTO etc semelhante ao layout acima. Como pego dessa query para formatar e gravar nesse arquivo texto conforme layout? Aguardo Arnoldo Nunes
Gostei + 0
28/11/2008
Guinther Pauli
Var
Cliente : String[40]; // aqui o 40 significa que a string não vai passar desse tamanho, se for maior do que isso ele corta.
ValorTotal : String;
Desconto: String;
Depois disso associe o a variável com o valor que vêm na Query
Cliente := Dm.TblPedidoNomeDoCampoQueTemONomeDoCliente.asString;
ValorTotal := FloatToStr(Dm.TblPedidoNomeDoCampoQueTemOValorTotal.asFloat);
Desconto := FloatToStr(Dm.TblPedidoNomeDoCampoQueTemODesconto.asFloat);
Feito isso basta formatar como a definição do Layout.
Por exemplo:
Crie uma função para preencher com espaços em branco para finalizar o tamanho do campo como mostrado abaixo
function AcresEspacosADireita(Valor: String; Qtde: Integer): String;
var
Tam: Integer;
Begin
Tam:= 0;
Valor:= Trim(Valor); /// Aqui tira qualquer espaço em branco que posso ter na variável cliente
Tam:= Length(Trim(Valor)); /// Aqui pega o tamanho da string
if Tam > 0 then
Qtde:= Qtde - Tam; // Aqui diminui o tamanho com o que precisa acrescentar
for I := 1 to Qtde do
begin
Valor:= Valor + ; // Aqui acrescenta o espaço a direita. Se for para acrescentar a esquerda so mude para Valor:= ‘ ‘ + Valor;
end;
Result:= Valor;
end;
Cliente:= AcresEspacosADireita(Cliente, 40); faça a variável Cliente que já esta com o nome do cliente receber os espacos necessarios para completar os 40.
E era isso, se vc precisar adiconar Zeros ao invés de espaços, crei outra função igualzinha a acima mas ao invés de acrescentar espaços colocar o Ex: Valor:= Valor + 0;
A formatação de cada campo esta definida no seu arquivo de Layout, basta seguir campo a campo e depois Concatenar tudo no arquivo texto como mostrado abaixo.
WriteLn(F, Cliente +
ValorTotal +
Desconto);
Vc pode fazer assim: WriteLn(F, Cliente + ValorTotal + Desconto) so coloquei abaixo para facilitar a visualização. Aguardo seu retorno, para finalizarmos o chamado. abs
Gostei + 0
28/11/2008
Guinther Pauli
Gostei + 0
29/11/2008
Arnoldo Lima
Gostei + 0
30/11/2008
Guinther Pauli
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)