Como remover brancos dentro de um componente edit

Delphi

21/02/2015

Olá Pessoal,

Porque quando eu jogo os valores '116053','125157','124132','132428','132441','132430','132599' para um componente edit do Delphi, ele gera sempre um espaço em branco antes, e quando eu faço isso em uma variável string qualquer ele não da problema algum. Explicando melhor esses valores ou parametros vem de uma seleção ( copiar/colar ) de uma planilha em excel, com os delimitadores ( ; ) que é colocado pelo próprio usuário para que possa facilitar sua vida, pois as vezes chega a ter mais de 2000 parâmetros e se for passar isso na munheca fica totalmente inviável para o usuário, e do jeito que está agora não consigo rodar nada. Na realidade isso é uma implementação em uma aplicação que já existe onde monta o sql automático para o usuário a partir de parâmetros que o próprio usuário informa, mas que trata todo o sql no componente edit. Já testei um monte de rotina que fiz e não da certo, garimpei bastante na internet, mas também não encontrei nada que pudesse me ajudar, então estou recorrendo a essa lista pra ver se alguém poderia me dar uma luz e tentar descobrir o que está acontecendo afinal. As ferramentas que eu estou utilizando é Windows 7, delphi xe7 e servidor sql 2008 r2.

Obrigado.
Vantuil.
Vantuil Amante

Vantuil Amante

Curtidas 0

Respostas

Douglas

Douglas

21/02/2015

Olá Vantuil de Araujo Amante, tudo bem?
Pelo o que entendi o problema só ocorre quando você utiliza o copiar e colar do excel para o edit. Bem, no evento onChange tente dar um Trim no próprio edit.
GOSTEI 0
Vantuil Amante

Vantuil Amante

21/02/2015

Oi Douglas, tudo bem.

Infelizmente a sua sugestão não deu certo, não alterou em nada continua com os mesmo brancos que te falei, não consigo entender porque isso esta acontecendo.

Na planilha Excel gerada pelo usuário esta assim:

114809; 123357; 116053; 125157; 124132; 132428; 132441; 132430; 132599; 132179; 132048; 133928; e assim por diante

depois que eu copio e colo esses valores dessa planilha no edit1.text eu faço assim : edit1.Text:= ''''+StringReplace(edit1.text,';',QuotedStr(','), [rfReplaceAll]) para substituir

os delimitadores ponto e virgula e colocar as aspas simples, mas acaba ficando assim:

' 114809',' 123357',' 116053',' 125157',' 124132',' 132428',' 132441',' 132430',' 132599',' 132179',' 132048',' 133928'

percebe que o primeiro caracter está em branco e não consigo remover esse caracter nem a pau do edit1.text


A planilha é gerada da seguinte forma pelo usuário no Excel:

- ele concatena ponto e virgula, copiar e colar especial e clica no transpor para os itens ficarem em cada coluna do Excel, pois são itens em grande quantidade.


é muito sinistro....
GOSTEI 0
Joao Silva

Joao Silva

21/02/2015

Após preencher o edit coloque no exit do mesmo o seguinte codigo:

edit.text := TIRABRANCO(edit.text);

segue a função TIRABRANCO():

Function TIRABRANCO( pVar:String ): string;
var
Index: integer;
sVar:String;
Begin

sVar := '';
For Index := 1 to Length(pVar) Do
Begin

sVar := sVar + IIF( Copy(pVar, Index,1)= ' ','',Copy(pVar, Index,1) )

End;

end;



SEGUE FUNÇÃO IIF()

Function IIf(pCond:Boolean;pTrue,pFalse:Variant): Variant;
begin
If pCond Then
Result := pTrue
else
Result := pFalse;
end;
GOSTEI 0
Vantuil Amante

Vantuil Amante

21/02/2015

Douglas,

Acabei de descobrir uma coisa, olha só:

1. Peguei uma parte do sql gerado na aplicação mesmo com os brancos
2. Entrei no Sql Server Management Studio
3. Rodei a sentença SQL gerado da aplicação e realmente confirmou o erro: Conversion failed when converting the varchar value ' 161852' to data type int. no parâmetro
4. Então retirei todos os brancos do parâmetro , tornei a rodar e passou sem problemas, o que confirmou então que aqueles brancos realmente estavam dando problema
5. Por intuição minha voltei a colocar os brancos novamente e tornei a rodar a sentença sql, e por incrível que pareça rodou sem problemas

então pra mim não é o problema de ser branco e sim algum caracter do tipo inteiro que na hora de copiar/colar os valores da planilha esta trazendo pra minha aplicação e dando problema, mas continuo pesquisando uma forma de como resolver isso.
GOSTEI 0
Vantuil Amante

Vantuil Amante

21/02/2015

Caro João Silva,

Fiz um teste com sua rotina mas infelizmente também não deu certo, o que acho na realidade é que não tem caracter nenhum em branco, acredito que na transferência dos dados da planilha pela opção copiar/colar ele está trazendo algum outro caracter, que não seja branco no edit do delphi.
GOSTEI 0
Vantuil Amante

Vantuil Amante

21/02/2015

Pessoal, descobri o que era o problema do caracter branco, na realidade era um caracter de controle chr( 09 ) que corresponde a tabulação horizontal que vinha do excel, depois disso eu joguei numa rotina para remoção desse caracter e tudo passou a funcionar, de qualquer forma gostaria de agradecer a todos pela sugestão que me deram.

Um forte abraço,
Vantuil.
GOSTEI 0
Joao Silva

Joao Silva

21/02/2015

Você pode estar certo.

a um tempo atras eu a estruturando um banco de dados de uma nova aplicação e devini toda a estrutura, tabela por tabela, no excel com coluna de "nome do campo" e outra para "descriminação do campo". ao terminar eu copiei a coluna com os nomes dos campos direto para o editor do delphi e não funcionava. Tente colar no word e habilite o mesmo para "mostrar tudo", acho que isso pede ajudar.
GOSTEI 0
Vantuil Amante

Vantuil Amante

21/02/2015

Olá, João, na realidade foi exatamente o que eu fiz, só que foi com o notepad ++, ai eu vi que não era um branco e sim um caracter de tabulação do excel, e resolvi a situação. De qualquer forma agradeço pela atenção.

Abraços,
Vantuil.
GOSTEI 0
POSTAR