| Exibir mensagem anterior :: Exibir próxima mensagem |
| Autor |
Mensagem |
WhatEver23 Novato

Registrado: Quinta-Feira, 22 de Julho de 2010 Mensagens: 19
|
Enviada: Qui Jan 19, 2012 12:36 am Assunto: [DÚVIDA] Sobre manipulação de memo... |
|
|
Eae galera, estou com uma dúvida aqui, de como fazer a função abaixo com o memo do delphi.
Supondo que o conteúdo do memo seja este:
| Citação: | Active delphi o
site do programador
delphi |
Estou tentando fazer uma função que organize o texto e tire a quebra de linha ficando assim:
| Citação: | | Active delphi o site do programador delphi |
Seria mais ou menos como um backspace no começo da frase seguida clique no espaço. Agradeço desde já quem ajudar, abraços. |
|
| Voltar ao Topo |
|
 |
Caduzera Profissional

Registrado: Terça-Feira, 29 de Julho de 2008 Mensagens: 656
|
Enviada: Qui Jan 19, 2012 7:34 am Assunto: |
|
|
Amigo, você pode fazer um Loop e montar a string como quiser ..
Exemplo:
var
i : Integer;
sTexto : String;
begin
For i := 0 To Memo.Lines.Count - 1 Do
sTexto := sTexto + Trim(Memo1.Lines.Strings[i]) + ' ';
Memo1.Lines.Clear;
Memo1.Lines.Add(sTexto);
end; |
|
| Voltar ao Topo |
|
 |
marcosalles Moderador

Registrado: Quarta-Feira, 26 de Março de 2008 Mensagens: 1695 Localização: Muriaé Mg
|
Enviada: Qui Jan 19, 2012 7:49 am Assunto: |
|
|
Outro modo é utilizar o DelimitedText
| Código: | begin
memo1.Lines.StrictDelimiter:=true;
Memo1.Lines.Delimiter:='|';
memo1.Lines.Text:=TrimRight(StringReplace(memo1.Lines.DelimitedText,'|',' ',[rfReplaceAll]));
end; |
_________________ http://marcosalles.wordpress.com
Desenvolvo FreeLancer e presto Consultoria
Orientação Online DataSnap DbX ClientDataSet
POO , Padrões de Projeto e dúvidas de Delphi em
Geral |
|
| Voltar ao Topo |
|
 |
imex Moderador

Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Qui Jan 19, 2012 8:56 am Assunto: |
|
|
Segue outra alternativa:
| Código: | | Memo1.Lines.Text := StringReplace(Memo1.Lines.Text, sLineBreak, ' ', [rfReplaceAll]); |
Espero que seja útil.
_________________
Assinatura: Imoveis a venda em Suzano |
|
| Voltar ao Topo |
|
 |
marcosalles Moderador

Registrado: Quarta-Feira, 26 de Março de 2008 Mensagens: 1695 Localização: Muriaé Mg
|
Enviada: Qui Jan 19, 2012 9:03 am Assunto: |
|
|
com sLineBreak Tinha feito a principio com ele , so
que não tinha dado certo. Olhei com mais calma e parece que tem uma
pequena imperfeição nesta instrução. Ja tinha reparado neste pequeno
desvio ,
veja .. Memo1.text
| Código: | var
Str_Um, Str_Dois:String;
begin
Str_um:= StringReplace(memo1.Lines.DelimitedText,sLineBreak,' ',[rfReplaceAll]);;
Str_Dois:=StringReplace(Memo1.Lines.Text,Memo1.Lines.LineBreak, ' ', [rfReplaceAll]);
Showmessage(inttostr(length(Str_Um))+sLineBreak+
inttostr(length(Str_Dois))); |
O Length de Str_Aux retorna 11 quanto a meu ver retorno correto
seria 9
Mas o engraçado que eu tb tinha utilizado o , Memo1.Lines.LineBreak e eu
descartei por causa desta imperfeição que aparece não ocorrer mais.
Vai entender ( na verdade fiquei a noite acordado , pode ser isto ) _________________ http://marcosalles.wordpress.com
Desenvolvo FreeLancer e presto Consultoria
Orientação Online DataSnap DbX ClientDataSet
POO , Padrões de Projeto e dúvidas de Delphi em
Geral |
|
| Voltar ao Topo |
|
 |
imex Moderador

Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Qui Jan 19, 2012 10:08 am Assunto: |
|
|
Marco, quando você disse Str_Aux seria Str_Um ou Str_Dois?
Para verificar o resultado acho que seria melhor adicionar as strings no próprio Memo ao final do código:
| Código: | Memo1.Lines.Add(Str_Um);
Memo1.Lines.Add(Str_Dois); |
A princípio obtive 11 para Str_Um, 10 para Str_Dois. |
|
| Voltar ao Topo |
|
 |
marcosalles Moderador

Registrado: Quarta-Feira, 26 de Março de 2008 Mensagens: 1695 Localização: Muriaé Mg
|
Enviada: Qui Jan 19, 2012 10:11 am Assunto: |
|
|
| Citação: | | Marco, quando você disse Str_Aux seria Str_Um ou Str_Dois? |
DEsculpa seria str_Um utilizando o slineBreak ... Ao inves de colocar no Memo é melhor contar os carecteres , pq olhando pode parecer despercebido _________________ http://marcosalles.wordpress.com
Desenvolvo FreeLancer e presto Consultoria
Orientação Online DataSnap DbX ClientDataSet
POO , Padrões de Projeto e dúvidas de Delphi em
Geral |
|
| Voltar ao Topo |
|
 |
imex Moderador

Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Qui Jan 19, 2012 10:20 am Assunto: |
|
|
Sem setar StrictDelimiter = true obtive 11:
Setando obtive 9:
|
|
| Voltar ao Topo |
|
 |
marcosalles Moderador

Registrado: Quarta-Feira, 26 de Março de 2008 Mensagens: 1695 Localização: Muriaé Mg
|
Enviada: Qui Jan 19, 2012 10:26 am Assunto: |
|
|
| imex escreveu: | Sem setar StrictDelimiter = true obtive 11:
Setando obtive 9:
|
Esquece o StrictDelimiter = true esta solução foi porque tinha achado
um valor incoerente utilizando o sLineBreak ,
Porém esta "incoerencia" parece ser resolvida com
| Citação: | | StringReplace(Memo1.Lines.Text,Memo1.Lines.LineBreak, ' ', [rfReplaceAll]); |
entende ??? _________________ http://marcosalles.wordpress.com
Desenvolvo FreeLancer e presto Consultoria
Orientação Online DataSnap DbX ClientDataSet
POO , Padrões de Projeto e dúvidas de Delphi em
Geral |
|
| Voltar ao Topo |
|
 |
imex Moderador

Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Qui Jan 19, 2012 10:38 am Assunto: |
|
|
| É que não consegui detectar essa incoerência, mas acho que se a versão utilizada tiver a propriedade LineBreak é melhor utiliza-la. |
|
| Voltar ao Topo |
|
 |
marcosalles Moderador

Registrado: Quarta-Feira, 26 de Março de 2008 Mensagens: 1695 Localização: Muriaé Mg
|
Enviada: Qui Jan 19, 2012 12:30 pm Assunto: |
|
|
Concluindo segue as opções .. Para não Poluir mais ainda o tópico .OK
| Código: | var
i : Integer;
sTexto : String;
begin
For i := 0 To Memo.Lines.Count - 1 Do
sTexto := sTexto + Trim(Memo1.Lines.Strings[i]) + ' ';
Memo1.Lines.Clear;
Memo1.Lines.Add(sTexto);
end;
|
e/ou
| Código: | begin
memo1.Lines.StrictDelimiter:=true;
Memo1.Lines.Delimiter:='|';
memo1.Lines.Text:=TrimRight(StringReplace(memo1.Lines.DelimitedText,'|',' ',[rfReplaceAll]));
end; |
e/ou
| Código: | | Memo1.Lines.Text := StringReplace(Memo1.Lines.Text, sLineBreak, ' ', [rfReplaceAll]); |
e/ou
| Código: | | Memo1.Lines.Text := StringReplace(Memo1.Lines.Text, Memo1.Lines.LineBreak, ' ', [rfReplaceAll]); |
_________________ http://marcosalles.wordpress.com
Desenvolvo FreeLancer e presto Consultoria
Orientação Online DataSnap DbX ClientDataSet
POO , Padrões de Projeto e dúvidas de Delphi em
Geral |
|
| Voltar ao Topo |
|
 |
|