Fórum Como remover brancos dentro de um componente edit #511377
21/02/2015
0
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
Curtir tópico
+ 0Posts
21/02/2015
Douglas
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
21/02/2015
Vantuil Amante
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
21/02/2015
Joao Silva
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
21/02/2015
Vantuil Amante
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
22/02/2015
Vantuil Amante
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
22/02/2015
Vantuil Amante
Um forte abraço,
Vantuil.
Gostei + 0
25/02/2015
Joao Silva
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
25/02/2015
Vantuil Amante
Abraços,
Vantuil.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)