ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Pos del copy alguem pode me ajudar? (Editado)
Ir à página 1, 2  Próximo
 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
gilbertodias1
Novato
Novato


Registrado: Terça-Feira, 6 de Novembro de 2007
Mensagens: 26

MensagemEnviada: Seg Nov 12, 2007 1:20 pm    Assunto: Pos del copy alguem pode me ajudar? (Editado) Responder com Citação

Olá. pessoal Estou precisando de uma função que, dentro de um tmemo, separe tudo que esta Depois das 3 aspas e antes das 4 aspas, EX

'''R$300,oo''''

A funcao e a seguinte, tem que processar linha por linha, de um texto de vamos dizer 30 linhas em um tmemo onde existam varias informacoes como nome do produto, EX

Produto = Lampadas para carro, tipo tal, nome tal, Valor '''300,00''''
E no programa quando o cliente procurar EX, Lampada tal, saia so o valor, 300,00 e basicamente isso porque o resto ja consegui, ja procurei no forum vi varias formas, e tudo se resume no POS ja consegui tirar tudo, que ta antes, por ex ja consegui de '''300,00'''' o programa deixa '''300,00, mais so que as outras linhas de nome de produtos e outros dados, ele joga para o outro memo tambem, nao so o '''300,00 mais todas as linhas, E eu so quero o valor para o ooutro memo, no caso 300,00 Alguem pode me ajudar, ja fiz de tudo peguei varios codigos aqui no forum mais nao consegui adaptar, ja to a 1 semana nisso alguem pode me ajudar porfavor,
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Proficenter
Aprendiz
Aprendiz


Registrado: Sexta-Feira, 9 de Novembro de 2007
Mensagens: 146

MensagemEnviada: Seg Nov 12, 2007 5:04 pm    Assunto: Responder com Citação

Eu fiz esse exemplo de uma olhada e faça algo parecido dentro de um loop para pegar as linhas do memo, acho que deve te ajudar ele retira todos as aspas da linha.

procedure TForm1.Button1Click(Sender: TObject);
var
Str1 : String;
begin
Str1 := edit1.Text;
while (Pos('''', Str1) > 0) do
Delete(Str1, Pos('''', Str1) , 1);

Edit2.Text := Str1;
end;
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
gilbertodias1
Novato
Novato


Registrado: Terça-Feira, 6 de Novembro de 2007
Mensagens: 26

MensagemEnviada: Ter Nov 13, 2007 2:52 pm    Assunto: Responder com Citação

Ola Proficenter, sim e isso mesmo, e isso eu ja consegui, apagar as aspas, so que oq eu nao to conseguindo, e selecionar so oq ta dentro por ex.

Testo blalblabla
testo2
allgo aki
'''300,00''''

Ai eu quero que passe pra otro memo so o 300,00 sem aspas, mais nao so sem aspas e sim sem o texto que nao seja 300,00, no aguardo.

Obrigado pela ajuda amigo.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
bdexterholland
Novato
Novato


Registrado: Quinta-Feira, 15 de Junho de 2006
Mensagens: 13
Localização: Carangola (Onde???)

MensagemEnviada: Ter Nov 13, 2007 2:59 pm    Assunto: Responder com Citação

Código:

var
  numero : string;
begin
  numero:= '''300,00''''; //sei lá se vai mandar com o nº de aspas certas
  showmessage(copy(numero, 3,6);
end;


ou

Código:

var
  numero, aux : string;
  x : integer;
begin
  aux := '';
  x := 0;
  numero:= '''300,00''''; //sei lá se vai mandar com o nº de aspas certas
  while x < length(numero) do
    begin
      if numero[x] <> ''' then
        aux := aux + numero[x];
      inc(x);
    end;
  showmessage(aux);
end;
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
Proficenter
Aprendiz
Aprendiz


Registrado: Sexta-Feira, 9 de Novembro de 2007
Mensagens: 146

MensagemEnviada: Ter Nov 13, 2007 4:30 pm    Assunto: Responder com Citação

Segue ai entao um exemplo como vc pode pegar somente o valor entre as aspas. Mais vc deveria alterar o modo de fazer isso trabalhar com aspas eh pouco chato.

procedure TForm1.Button1Click(Sender: TObject);
var
Aux : String;
begin
Aux := Edit1.Text;

{ Coloca a aspa na posicao 1 }
Delete(Aux, 1, Pos('''', Aux));

{ Retira as outras aspas }
while (Pos('''', Aux) = 1) do
Delete(Aux, Pos('''', Aux), 1);

{ Retira os caracteres que estao atras das aspas }
Delete(Aux, Pos('''', Aux), Length(Aux));

Edit2.Text := Aux;
end;

Vc pode melhorar foi o que pensei rapidamente para poder ajudar.
Blz..
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
forst
Membro Junior
Membro Junior


Registrado: Domingo, 26 de Junho de 2005
Mensagens: 367

MensagemEnviada: Ter Nov 13, 2007 4:30 pm    Assunto: Responder com Citação

Boa tarde amigos,

acho que vcs estão complicando o que não é dificil...

Vc pode usar um copy junto com o pos pra pegar a posição certa que você quer...

em uma string vc coloca 2 aspas simples que corresponde a uma...
ex:
vStr := ''''''''; // é igual a '''


Olha este exemplo para você intender...
Cria 2 Edits.
no Edit1 vc coloca o texto: '''300,00''''

crie um botao:
Código:

procedure TForm1.Button1Click(Sender: TObject);
var vStr, vStr2 : string;
begin
   vStr := '''''''';       // corresponde a '''
   vStr2 := '''''''''';    // corresponde a ''''
   Edit2.Text := Copy(Edit1.Text,Pos(vStr,Edit1.Text)+3,Pos(vStr2,Edit1.Text)-4);
end;


o resultado do Edit2 será 300,00
só implementar essa ideia nas linhas do seu memo...
Espero ter ajudado..

[]s
_________________
Precisando de ícones para suas aplicações em Delphi?
www.soicones.com
Milhares de Ícones PNG de alta qualidade disponíveis em diversos tamanhos.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
gilbertodias1
Novato
Novato


Registrado: Terça-Feira, 6 de Novembro de 2007
Mensagens: 26

MensagemEnviada: Qua Nov 14, 2007 11:51 am    Assunto: Responder com Citação

Ola pessoal ja ajudo muito mais nao resolveu, pq primeiro nao ta processando todas as linhas do memo, o seu exemplo forst servio perfeitamente porem nao processa todas as linhas, e ja que as aspas estao atrapalhando vamos por entao, tudo depois da / e antes da //
Alguem pode ajudar, que processe todas aslinhas do memo e nao copiem testo por ex

Produto tal talal
e isso e tal
valor /300,00//

que so copie para o memo 300,00 e nao produto tal tal e isso e tal valor etc. abraços e obrigado pela ajuda mesmo pessoal.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
forst
Membro Junior
Membro Junior


Registrado: Domingo, 26 de Junho de 2005
Mensagens: 367

MensagemEnviada: Qua Nov 14, 2007 1:45 pm    Assunto: Responder com Citação

Ae cara, blz?

bom, vc tem 2 memos, um deles tem isso por ex:
lalalal
asdad
'''300,00''''
asda
eeee
bcsd'''400,00''''
asdasd


entao no outro memo teria q aparecer somente:
300,00
400,00


é isso nao é?

entao vc usa a mesma ideia que eu postei antes.. soh utiliza uma rotina pra andar nas linhas desse seu memo...

Faça o seguinte..
substitua os 2 edits e coloque 2 memos...
no memo1 coloque o seu texto...

e no botao:
Código:

procedure TForm1.Button1Click(Sender: TObject);
var vStr,vStr2,Valor : string;
   i , linhas : integer;
begin
   vStr  := '''''''';
   vStr2 := '''''''''';
   linhas := memo1.lines.count;
   for i := 1 to linhas do
   begin
      Valor := Copy(memo1.lines[i],Pos(vStr,memo1.lines[i])+3,Pos(vStr2,memo1.lines[i])-4);
      if valor <> '' then
         memo2.lines.Add ( valor );
   end;
end;


pronto..
qualquer coisa posta dnovo..

[]s
_________________
Precisando de ícones para suas aplicações em Delphi?
www.soicones.com
Milhares de Ícones PNG de alta qualidade disponíveis em diversos tamanhos.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
gustavocco
Administrador
Administrador


Registrado: Sexta-Feira, 6 de Fevereiro de 2004
Mensagens: 4253
Localização: Chapecó - SC

MensagemEnviada: Qua Nov 14, 2007 3:07 pm    Assunto: Responder com Citação

Olá, agora q vi seu post da mensagem privada. Entao... eu nao to tendo mto tempo por aqui pra criar um exemplo completo, mas pelas respostas acima, acredito q lhe ajudaram bastante.

Ainda para vc ter uma idéia mais ampla sobre estes comandos indico:

http://www.delphibasics.co.uk/index.html nesse endereço, embora em ingles, vc encontra muitas funções (basicas, mas importantes) e exemplos de implementação.

Flw.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
gilbertodias1
Novato
Novato


Registrado: Terça-Feira, 6 de Novembro de 2007
Mensagens: 26

MensagemEnviada: Qui Nov 15, 2007 10:12 am    Assunto: Responder com Citação

Ola forst , poxa mano valew mesmo nao sabe a quanto tempo tento isso, bom agora ja esta resolvido, muito obrigado mano. So que so um pouco principiante, voce poderia da uma explicada nos passos que voce fez para que eu possa aprender pra na proxima ja até editalo, pois eu edito algo nele como oq procurar no pos, e ja da erro rs, o seu pega certinho aqui, sem erro. se nao for incomodo vlw

vlw gustavo pela atençao abraços . vo da uma estuda no site sim vlw
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
gilbertodias1
Novato
Novato


Registrado: Terça-Feira, 6 de Novembro de 2007
Mensagens: 26

MensagemEnviada: Qui Nov 15, 2007 1:41 pm    Assunto: Responder com Citação

Alguem pode me dizer porque depois que eu do a primeira pesquisada, nao consigo efetuar nova pesquisa.?
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
forst
Membro Junior
Membro Junior


Registrado: Domingo, 26 de Junho de 2005
Mensagens: 367

MensagemEnviada: Qui Nov 15, 2007 11:27 pm    Assunto: Responder com Citação

Citação:

Ola forst , poxa mano valew mesmo nao sabe a quanto tempo tento isso, bom agora ja esta resolvido, muito obrigado mano. So que so um pouco principiante, voce poderia da uma explicada nos passos que voce fez para que eu possa aprender pra na proxima ja até editalo, pois eu edito algo nele como oq procurar no pos, e ja da erro rs, o seu pega certinho aqui, sem erro. se nao for incomodo vlw


Ae cara, trql?
Bah fico feliz por ter ajudado Wink

bom vou te explicar entao oq o codigo que eu te passei faz...

primeiro a parte que copia o valor correto:
Código:

Valor := Copy(memo1.lines[i],Pos(vStr,memo1.lines[i])+3,Pos(vStr2,memo1.lines[i])-4);

a função copy funciona assim Copy(stringAcopiar,posicao de Inicio, qts caracteres copiar).
a função Pos retorna um valor inteiro (a posicao) em que ele encontrou a String..
Ex : '''300,00''''
O primeiro Pos vai retornar 1 (mas como eu nao quero copiar apartir da ' e sim no final dela.. eu tenho que acrescentar + 3 na posicao pra ele começar a copiar no 300,00. entende? dai o copy vai começar com a posicao de inicio no 4...
O segundo Pos é 10(pq é 10? pq ele encontro as aspas no caracter 10 da string), mas como eu nao quero copiar 10 caracteres, eu tenho que subtrai aquelas 4 aspas... dai ficaria 6...
ou seja Meu copy traria uma copia daquela string, da posicao de inicio 4 e de 6 caracter que é exatamente 300,00

e pra andar nas linhas do memo eu tinha feito um for... que é um laço de repetição...
ex:
Código:

   linhas := mmo1.lines.count;
   for i := 1 to linhas do
   begin

   end;

oq esse codigo faz?
a variavel linhas recebe a quantidade de linhas que tem no memo...
e esse meu laço vai começar no 1 e terminar nessa quantidade de linhas..
enquanto ele nao xegar nessa quantidade de linhas ele vai continuar ali dentro...
Código:

mmo1.lines[i]

na primeira volta do meu laço o valor vai ser 1... entao ele vai ver na linha 1... depois vai ser 2.. dai ele vai ver na linha 2... 3...... 4.....

consegue entende?
p.orra é horrivel de explica escrevendo.. aiuwehawe
mas nao é dificil.. só vc prestar atenção...
talvez eu te enrolei mais ainda...


Citação:

Alguem pode me dizer porque depois que eu do a primeira pesquisada, nao consigo efetuar nova pesquisa.?

eu nao intendi oq vc quiz dizer...

Flw,
[]s
_________________
Precisando de ícones para suas aplicações em Delphi?
www.soicones.com
Milhares de Ícones PNG de alta qualidade disponíveis em diversos tamanhos.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
gilbertodias1
Novato
Novato


Registrado: Terça-Feira, 6 de Novembro de 2007
Mensagens: 26

MensagemEnviada: Sex Nov 16, 2007 11:07 am    Assunto: Responder com Citação

Eita, forst aeuahue deu pra entender tudo sim mais explicado que isso nao tem, entendi sim mano vlw, mais olha so
Ai entao O 1 pos copia depois das 3 aspas, o segundo começa na 10 e subitrai 4, pra ficar so os 6 dig no caso 300,00 mais so que ai então se o valor for 1000,00 por ex, que ja aumenta 1 numero, ele vai apagar o ultimo 0 correto?

E sobre a citação que você não entendeu, e que depois que eu faço a primeira busca em um texto, ele acha tudo direitinho mais se eu tentar efetuar, uma nova busca, ja e como se o programa nao funcionasse mais nao acontece nada..
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
gilbertodias1
Novato
Novato


Registrado: Terça-Feira, 6 de Novembro de 2007
Mensagens: 26

MensagemEnviada: Sex Nov 16, 2007 11:11 am    Assunto: Responder com Citação

Oi forst. pode me da uma ajuda ai nesse topico?

http://www.activedelphi.com.br/forum/viewtopic.php?t=36518
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
forst
Membro Junior
Membro Junior


Registrado: Domingo, 26 de Junho de 2005
Mensagens: 367

MensagemEnviada: Sex Nov 16, 2007 2:07 pm    Assunto: Responder com Citação

gilbertodias1 escreveu:
Eita, forst aeuahue deu pra entender tudo sim mais explicado que isso nao tem, entendi sim mano vlw, mais olha so
Ai entao O 1 pos copia depois das 3 aspas, o segundo começa na 10 e subitrai 4, pra ficar so os 6 dig no caso 300,00 mais so que ai então se o valor for 1000,00 por ex, que ja aumenta 1 numero, ele vai apagar o ultimo 0 correto?

Ae..
tipo, faz o seguinte..
tira a linha do valor e coloca essas no lugar:
Código:
 
     Valor := Copy(memo1.lines[i],Pos(vStr,memo1.lines[i])+3,Pos(vStr2,memo1.lines[i]));
      Valor := Copy(Valor,1,length(valor)-4);

a Função length retorna o numero de letras que tem na String.. ou seja, assim vc não vai ter problemas se for um valor 15,00 ou 146000,00.. =]
Saco bixo?

Citação:
E sobre a citação que você não entendeu, e que depois que eu faço a primeira busca em um texto, ele acha tudo direitinho mais se eu tentar efetuar, uma nova busca, ja e como se o programa nao funcionasse mais nao acontece nada..

bom ai é alguma coisa ai..
pq eu fiz um teste aki e funciona certinho... deve ter alguma coisa ai que nao deve tar deixando...
depois que vc faz a primeira busca vc não esta modificando esse seu memo em que você faz a pesquisa? deve ser algo do tipo...

qdo der uma folga no trampo do uma olhada la no teu topico..

Flw,
[]s
_________________
Precisando de ícones para suas aplicações em Delphi?
www.soicones.com
Milhares de Ícones PNG de alta qualidade disponíveis em diversos tamanhos.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Ir à página 1, 2  Próximo
Página 1 de 2

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB