Fórum Novo em Dephi - como abrir um txt e gerar ou csv separado por ; #419729
11/07/2012
0
Sou novo em delphi, pretendo achar ate mesmo um curso e aproveitando quem souber de um curso ate mesmo on-line de delphi completo também ajuda !!!
Mais minha duvida é o seguinte tenho um arquivo em txt e queria abrir ele e criar um campo para cada string tipo assim:
Ex txt.
0001ORLANDO DE OLIVEIRA 1131540786
0002ROBERTO SANTOS SILVA1185645254
0003MARIA JOSÉ CUNHA 1185233469
e converte-lo para :
0001;ORLANDO DE OLIVEIRA ;11-3154-0786
0002;ROBERTO SANTOS SILVA;11-8564-5254
0003;MARIA JOSÉ CUNHA ;11-8523-3469
Criando tipo uma tabela!
Desde já agradeço
William Calisto
Curtir tópico
+ 0Posts
11/07/2012
Bruno Leandro
codigo da coluna 1 ate coluna 4, nome da coluna 5 ate 55, telefone da 56 ate 64
ou exista algum caracter especial dividindo os campos de forma similar ao ; do modelo cvs
uma forma de fazer eh carregar o txt em um tstringlist e ir copiando as linhas e adicionando o separado de campos o ;
qualquer duvida estou a disposicao
Gostei + 0
11/07/2012
Deivison Melo
https://www.devmedia.com.br/exportando--importando-dados-do-fb--ib/2040
Gostei + 0
11/07/2012
William Calisto
0001ORLANDO DE OLIVEIRA 1131540786
0002ROBERTO SANTOS SILVA1185645254
0003MARIA JOSÉ CUNHA 1185233469
cod := GetString(linha,1,4);
nome:= GetString(linha,5,24);
tel :- GetString(linha,25,35);
minha duvida seria, como colocar ela dentro do script, por que aqui na empresa uso um programa que ultiliza um pascal diferente para gerearmos boleto, ele tiraria uma string de arquivo txt e colocaria no desenho do boleto, mais tem arquivo que nao vem formatado, tipo com separado, la ultizariamos um script desse tipo para carregar cada possição
while Readln(s) <> eof them
Begin
BeginPage(PAGE1);
PAGE1.REC1.CODIGO := GetString(S,1,4);
PAGE1.REC1.NOME := GetString(S,5,24);
PAGE1.REC1.TELEFONE := GetString(S,25,35);
WriteRecord(PAGE1,REC1);
EndPage(PAGE1);
end;
eu queria saber como faço isso no delphi!
Ah e desde ja agradeço a vcs !!!
Gostei + 0
11/07/2012
Edson Melo
ja usei esta dica em sistema meu, so que os dois arquivos eram meu sistema que montava
espero que tenha te feito pensar um pouco
Gostei + 0
11/07/2012
Cauê Nishijima
Você pode criar uma classe (ex.: TRegistro) pra definir cada registro, e utilizar TAttributes definir a propriedade de cada campo(posicao,tamanho,tipo,obrigatoriedade,etc), depois disso é possivel criar uma classe maior (TCollectionRegistros) que recebe uma coleção de TRegistro e tenha uma function que receba um arquivo TXT e retorne um arquivo CSV.
Qualquer dúvida entre em contato
Abraços
Cauê Nishijima
Gostei + 0
12/07/2012
William Calisto
ja usei esta dica em sistema meu, so que os dois arquivos eram meu sistema que montava
espero que tenha te feito pensar um pouco
Bom dia Edson garcia de melo,
Então essa parte ate entendi, como falei la em cima eu sei como fazer no pascal no programa como utilizamos, porem queria desenvolver um programa em delphi para criar separador em arquivo remessa de banco.
Qual o problema que acontece para que eu tenha que fazer isso é o seguinte, nosso programa ele gera boletos de iptu, iss, etc ... tem prefeitura que envia o arquivo já delimitado com o cabeçalho e tudo certo, tem outras que envia o arquivo remessa do banco, que é um arquivo que um contribuinte pode ter mais de uma linha e não tem delimitador, porem os campos são padrão, cada um tem seu devido tamanho que seguimos para elaborar o script.
So que eu preciso transformar esse arquivo de banco que não é delimitado e o contribuinte pode ter linhas variáveis em um arquivo delimitado e por linha, como um csv.
Eu só queria saber como consigo carregar um arquivo txt no delphi e salvar o mesmo arquivo com delimitador.
Só com isso consigo elaborar as condições necessárias para fazer o que eu preciso.
no basico mesmo so queria um pequeno exemplo que eu pudesse olhar e interpretar a logica utilizada, não achei nada na net, as vezes é pq eu nao procurei direito ou com palavras errada.
pq algumas coisa eu sei so nao sei montar o script tipo
var
SDiretorio: string;
TEntrada, TSaida: TextFile;
ASBuffer: AnsiString;
sCodigo, sNome, sTelefone: String;
Begin
Readln(TEntrada, ASBuffer);
sCodigo :=copy(ASBuffer,1,4);
sNome :=copy(ASBuffer,5,24);
sTelefone :=copy(ASBuffer,25,35);
queria entender como montar a parte do while not eof(TEntrada) do Begin
....
você pode me ajudar nessa questão, so um exemplo mesmo! vamos dizer que é aquele momento em que penso penso e nao saio do lugar rsrs
Obrigado Edson garcia de melo
Gostei + 0
12/07/2012
Bruno Leandro
procedure teste;
var
slEntrada,slSaida: TStringList;
i: Integer;
begin
slEntrada := TStringList.Create;
slSaida := TStringList.Create;
slEntrada.LoadFromFile( ´c:\arquivo.txt´ );
for i := 0 to slEntrada.Count - 1 do
begin
slSaida.add( Copy(slEntrada[i],1,4) + ´;´ + Copy(slEntrada[i],5,24) + ´;´ + Copy(slEntrada[i],25,35) );
end;
slSaida.SaveToFile( ´c:\arquivoSaida.txt´ );
FreeAndNil( slEntrada );
FreeAndNil( slSaida );
end;
Gostei + 0
12/07/2012
William Calisto
procedure teste;
var
slEntrada,slSaida: TStringList;
i: Integer;
begin
slEntrada := TStringList.Create;
slSaida := TStringList.Create;
slEntrada.LoadFromFile( ´c:\arquivo.txt´ );
for i := 0 to slEntrada.Count - 1 do
begin
slSaida.add( Copy(slEntrada[i],1,4) + ´;´ + Copy(slEntrada[i],5,24) + ´;´ + Copy(slEntrada[i],25,35) );
end;
slSaida.SaveToFile( ´c:\arquivoSaida.txt´ );
FreeAndNil( slEntrada );
FreeAndNil( slSaida );
end;
Hum, Obrigado BRUNO LEANDRO,
vou tentar, mais vc já me deu uma luz já!
Se consegui posto aqui, mais brigado mesmo!
Agora so mais uma duvida, caso esteja tudo certo como faço para fechar esse topico?
E vc ou alguem conhece algum curso bom de delphi?
Gostei + 0
12/07/2012
William Calisto
Gostei + 0
12/07/2012
Bruno Leandro
Gostei + 0
23/07/2012
William Calisto
Vlw, muito obrigado ajudo e muito, funcionou certinho o que eu queria fazer.
só para tirar mais uma duvida, tem que fechar o tópico ou como faz?
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)