Como remover brancos dentro de um componente edit
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.
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
Curtidas 0
Respostas
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.
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
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....
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
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;
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
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.
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
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.
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
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.
Um forte abraço,
Vantuil.
GOSTEI 0
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.
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
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.
Abraços,
Vantuil.
GOSTEI 0