Fórum Espaços em arquivo CSV #362120
06/08/2008
0
Tenho que fazer um programa aki no trampo p eliminar espaços em um arquivo csv, mas estou travado nas ideias.
Vou explicar com exemplo:
2002; JOAO BATISTA ; MERCEDEZ-BENZ ; 2002; MARIA BIA ; FORD ; 2003; HENRIQUE CESAR ; CHEVROLET ;
Preciso excluir os espaços duplos, triplos, apenas deixar [b:cd8e069423]1 [/b:cd8e069423]entre as strings, mas nao alterando a posição, ficaria assim:
2002; JOAO BATISTA ; MERCEDEZ-BENZ ; 2002; MARIA BIA ; FORD ; 2003; HENRIQUE CESAR ; CHEVROLET ;
Shion86
Curtir tópico
+ 0Posts
06/08/2008
Shion86
2002; JOAO BATISTA ; MERCEDEZ-BENZ ; 2002; MARIA BIA ; FORD ; 2003; HENRIQUE CESAR ; CHEVROLET ;
2002; JOAO BATISTA ; MERCEDEZ-BENZ ; 2002; MARIA BIA ; FORD ; 2003; HENRIQUE CESAR ; CHEVROLET ;
ops, eu tentei colocar o codigo na tag CODE, mas acabou bagunçando tudo.
bom, o ponto-e-virgula é embaixo do outro.
01; Fernando Almeida ; Jose Carlos;
02; Joao Flores ; Ricardo ;
Após a execução do programa:
01; Fernando Almeida ; Jose Carlos ;
02; Joao Flores ; Ricardo ;
ou seja, ele tem que excluir os espaços duplos entre as strigns e adicionar no final dela o espaço retirado para que o arquivo CSV nao altere as posições.
Gostei + 0
06/08/2008
Misael
Gostei + 0
07/08/2008
Shion86
O problema é esse, eu tenho que importar ele pro banco, mas nao posso que seja dessa forma que ele vem, portanto tem que manipular o arquivo sempre.
a explicação acima fico ruim, pq os espaços aki nao aparecem, portanto vou usar _ no lugar dos espaços. Exemplo:
2002;JOAO_BATISTA______; MERCEDEZ-BENZ_;
2002;MARIA_BIA_________; FORD___________;
2003;HENRIQUE__CESAR__; CHEVROLET_____;
devo excluir o espaço duplo que existe entre o henrique cesar, mas nao posso tirar a formatação do arqivo, pq ele segue uma ordem
Gostei + 0
07/08/2008
Aroldo Zanela
Não consegui fazer de imediato um exemplo mais simples, mas este aqui também resolve:
var Arquivo, Palavras: TStringList; Linha, NovaLinha: string; I, // Laço for para o arquivo N, // Qtde registros do arquivo Y: Integer; // Posição do ; na linha begin Arquivo := TStringList.Create; Palavras := TStringList.Create; Arquivo.LoadFromFile(´D:\DADOS\ARQUIVO.TXT´); N := Arquivo.Count-1; Palavras.Delimiter := ´ ´; for I := 0 to N do begin Linha := Arquivo.Strings[I]; NovaLinha := ´´; repeat Y := Pos(´;´, Linha); Palavras.DelimitedText := Copy(Linha, 1, Y-1); Linha := Copy(Linha, Y+1, Length(Linha)); if Y>0 then begin NovaLinha := NovaLinha + Format(´¬-´+IntToStr(Y-1)+´s´,[Palavras.DelimitedText])+´;´; end; until Y = 0; Arquivo.Strings[I] := NovaLinha; end; Arquivo.SaveToFile(´D:\DADOS\ARQUIVO.TXT´); Palavras.Free; Arquivo.Free; end;
Gostei + 0
07/08/2008
Shion86
Cara mto OBRIGADOOOO mesmo!! Estou aprendendo mto com seus exemplos e agradeço pela força!!
Funcionou perfeitamente.
abraços
Gostei + 0
07/08/2008
Shion86
tive um problema com um dos arquivos gerados,
ele exclui o ultimo registro da linha, caso ele nao esteja com ponto e virgula no final
2002;JOAO_BATISTA______; MERCEDEZ-BENZ_;S
2002;MARIA_BIA_________; FORD___________;N
2003;HENRIQUE__CESAR__; CHEVROLET_____; S
o arquivo gerado fica:
2002;JOAO_BATISTA______; MERCEDEZ-BENZ_;
2002;MARIA_BIA_________; FORD___________;
2003;HENRIQUE_CESAR___; CHEVROLET______;
Gostei + 0
08/08/2008
Shion86
for I := 0 to N do
begin
Linha := Arquivo.Strings[I] + ´; ´; // Verifica linha por linha
NovaLinha := ´´;
repeat
Y := Pos(´;´, Linha); //Pega a posição da string + ;
Palavras.DelimitedText := Copy(Linha, 1, Y-1); //Pega palavra antes da virgula
Linha := Copy(Linha, Y+1, Length(Linha));
if Y > 0 then // Verifica quantidade de caracteres por coluna
begin
{Formata linha a linha}
NovaLinha := NovaLinha + Format(´¬-´+IntToStr(Y-1)+´s´,[Palavras.DelimitedText])+´;´;
end;
until Y = 0;
//------------------------------------------------------------------------
{Exclui ; e espaço no final de cada linha}
Tam := length(NovaLinha);
NovaLinha := Copy(NovaLinha, 1, Tam-1);
//------------------------------------------------------------------------
{Adiciona as linhas já formatadas ao array }
Arquivo.Strings[I] := NovaLinha;
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)