GARANTIR DESCONTO

Fórum Deletar tudo depois da quot;/quot; #328735

05/09/2006

0

Estou desenvolvendo uma aplicação com Socket.. onde o cliente vai digitar o endereço em um Edit ..

o edit só vai aceitar endereço dessa maneira >

www.host.com.br

agora se o cliente digitar

www.host.com.br/intranet

eu queria que deletar tudo depois da barra ´/´

dai ia ficar

www.host.com.br

se alguem puder ajudar...


Delphitotal

Delphitotal

Responder

Posts

06/09/2006

Raserafim

aí vai uma sugestão. provavelmente deve haver uma outra bem mais simples, mas...

var
  Texto_Orig, Texto_Dest: String;
  S: Smallint;
begin
  Texto_Orig := ´www.host.com.br/intranet´;
  for S := 0 to Length(Texto_Orig) - 1 do
  begin
    if Texto_Orig[S] <> ´/´ then
    begin
      SetLength(Texto_Dest, Length(Texto_Dest) + 1);
      Texto_Dest[S] := Texto_Orig[S];
    end
    else
      Break;
  end;

  ShowMessage(Texto_Dest);
end;



Responder

Gostei + 0

06/09/2006

Massuda

Você pode fazer assim...
var
  N: Integer;
  S: string;
...
  S := ´www.seusite.com.br/algumacoisa´;
  N := Pos(´/´, S);
  if N > 0 then begin
    Delete(S, N, MaxInt);
  end;
...
...mas note que isso não funciona ´certo´ no caso de ´http://www.seusite.com.br/algumacoisa´.


Responder

Gostei + 0

06/09/2006

Marco Salles

delphi 7.0 , fu~ção PosAx unit StrUtils;

mas note que isso não funciona ´certo´ no caso de ´http://www.seusite.com.br/algumacoisa´.


N: Integer;
  S: string;
begin
  S := ´http://www.seusite.com.br/algumacoisa´;
  N := Pos(´//´,S);
  N:=posEx(´/´,S,N+2);
  if N > 0 then begin
    Delete(S,N, MaxInt);
  end;



Responder

Gostei + 0

06/09/2006

Delphitotal

consegui isso no Edit ..
mais me deparei com outra coisa.. tirar a mesma coisa mais de todos os hosts de uma listbox..

tpo >

www.empresa.com/cliente1
www.empresa.com/cliente2
www.empresa.com/cliente3
www.empresa.com/cliente4
www.empresa.com/cliente5

etc..

dai ele remove tudo depois da / no ListBox .. dai ficaria >

www.empresa.com/
www.empresa.com/
www.empresa.com/
www.empresa.com/
www.empresa.com/


Responder

Gostei + 0

06/09/2006

Marco Salles

é so percorrer a lista

procedure TForm1.Button1Click(Sender: TObject);
var
  N,i: Integer;
  S: string;
begin
for i:=0 to listbox1.Count - 1 do
  begin
     s:=ListBox1.Items.Strings[i];
     N := Pos(´/´, S);
     if N > 0 then
      begin
       Delete(S,N+1, MaxInt);
       ListBox1.Items.Strings[i]:=S;
      end;
  end;
end;



Responder

Gostei + 0

06/09/2006

Delphitotal

vlw!! ficou ótimo ..

mais só que eu queria tudo depois da ultima / ..

o código que fizeram remove geral .. exemplo:

www.empresa.com.br/~ddbrasil/brasil/index.php

dai com o código de vcs fica >

www.empresa.com.br

eu to querendo que ele remova tudo só da última barra ..

exemplo:

www.empresa.com.br/~ddbrasil/brasil/index.php

ficaria:

www.empresa.com.br/~ddbrasil/brasil/


Responder

Gostei + 0

06/09/2006

Marco Salles

ai vai ter que usar o posEx como eu tinha dito anteriormente

Unit : StrUtils;

var
N,i: Integer;
S: string;
begin
for i:=0 to listbox1.Count - 1 do
  begin
     s:=ListBox1.Items.Strings[i];
     N := Pos(´/´,S);
     N:=posEx(´/´,S,N+1);
     if N > 0 then
       begin
        Delete(S,N+1, MaxInt);
        ListBox1.Items.Strings[i]:=S;
       end;
  end;
end;



Responder

Gostei + 0

07/09/2006

Raserafim

testado e aprovado! :)

...
var
  Texto_Orig, Texto_Dest: String;
  S: Smallint;
begin
  Texto_Orig := ´www.host.com.br/intranet/downloads/index.html´;
  for S := Length(Texto_Orig) - 1 downto 0 do
  begin
    if Texto_Orig[S] = ´/´ then
    begin
      Texto_Dest := Copy(Texto_Orig, 0, S);
      Break;
    end
  end;

  ShowMessage(Texto_Dest);
end;



Responder

Gostei + 0

25/10/2006

Delphitotal

Oi ..
Estou com outro problema ..
andei utilizando por algum tempo esses códigos que me ajudaram muito aqui no trampo ...

Estou precisando de outra ajuda ..
o código que me passaram remove de boa depois da ultima barra..

exemplo:

www.empresa.com.br/~ddbrasil/brasil/index.php

dai o código remove tudo depois da ultima barra ai fica:

www.empresa.com.br/~ddbrasil/brasil/

Certo ai tudo bem ..
mais só que por exemplo ..

vamos supor que na lista tem

www.empresa.com.br/~ddbrasil/brasil/index.php
www.empresa.com.br/index.php
www.empresa.com/intranet/dados.jsp

passando o código ficaria:

www.empresa.com.br/~ddbrasil/brasil/
www.empresa.com.br/index.php
www.empresa.com/intranet/

ou seja no segundo link:
www.empresa.com.br/index.php

o index.php não foi removido porque será? sendo que remove tudo depois da ultima / ..

era pra ficar

www.empresa.com.br/~ddbrasil/brasil/
www.empresa.com.br/
www.empresa.com/intranet/

alguém pode ajudar?


Responder

Gostei + 0

25/10/2006

Marco Salles

teste ai:

var
Np,N,i: Integer;
S: string;
begin
for i:=0 to listbox1.Count - 1 do
  begin
     s:=ListBox1.Items.Strings[i];
     N := Pos(´/´,S);
     while N > 0 DO
      begin
        NP:=N;
        N:=posEx(´/´,S,N+1);
      end;
          Delete(S,NP+1, MaxInt);
        ListBox1.Items.Strings[i]:=S;
  end;



Responder

Gostei + 0

25/10/2006

Delphitotal

Marco Salles,

Vlw! realmente era isso que eu precisava ..
Obrigado..


Responder

Gostei + 0

02/05/2007

Delphitotal

Marco Salles,

Outro probleminha ... :cry:

Estou utilizando esse código em um software de bloqueio que desenvolvi .. onde a pessoa coloca o dominio que vai ser bloqueado ou o subdir que vai ser bloqueado etc..

Páginas com o endereço assim:

www.site.com.br/intranet.php?inc=operador/

passando o código teria que ficar

www.site.com.br/

outras assim

www.site.com.br/produtos.php?categoria=productos/sp/fornece/

Passando o código teria que ficar:

www.site.com.br/

acho que filtrando isso o código estaria 100¬ perfeito (completo)


Responder

Gostei + 0

03/05/2007

Marco Salles

Fiz rápido aqui.. De uma conferida ai :

procedure TForm1.Button1Click(Sender: TObject); var Np,N,i: Integer; S: string; begin for i:=0 to listbox1.Count - 1 do begin s:=ListBox1.Items.Strings[i]; if S[Length(S)-1] = ´/´ then ListBox1.Items.Strings[i]:=copy(S,1,pos(´/´,S)) else begin N := Pos(´/´,S); while N > 0 DO begin NP:=N; N:=posEx(´/´,S,N+1); end; Delete(S,NP+1, MaxInt); ListBox1.Items.Strings[i]:=S; end; end; end;



Responder

Gostei + 0

03/05/2007

Delphitotal

Marco Salles,

Funcionou perfeito mais não filtra quando o site é assim:

http://www.site.com.br/index.php?pagina=3512-software/plugin/
http://www.site.com.br/index.php?pagina=destaques/
http://www.site.com.br/index.php?pagina=conteudo/


Responder

Gostei + 0

04/05/2007

Marco Salles

Marco Salles, Funcionou perfeito mais não filtra quando o site é assim: http://www.site.com.br/index.php?pagina=3512-software/plugin/[b:10bf699395] [/b:10bf699395] http://www.site.com.br/index.php?pagina=destaques/[b:10bf699395] [/b:10bf699395] http://www.site.com.br/index.php?pagina=conteudo/


eu acho que é porque nessas strings , tem espaços vazios no fim;
alem disso apareceu um novo diferencial a sequencia de strings
http://

então devemos mudar um pouco o codigo e tb a logica

1)eliminar espaços vazios 2)retirar o ´/´ no Fim 3)e por fim Filtrar


var
Np,N,i: Integer;
S: string;
begin
  for i:=0 to listbox1.Count - 1 do
    begin
      s:=ListBox1.Items.Strings[i];
      Np:=Length(S);
      //retira espaços vazios no Fim
     //ps não confunda while S[Np]=´ ´ do com while S[Np]=´´ do
      while S[Np]=´ ´ do
            Np:=Np-1;
      s:=copy(s,1,Np);
     //elimina o ´/´ no Fim da String se Houver
        if S[Np] = ´/´ then
           Delete(S,Np,1);
    //efetua o Filtro normalmente...
        N := Pos(´/´,S);
        while N > 0 DO
          begin
            NP:=N;
            N:=posEx(´/´,S,N+1);
            end;
      Delete(S,NP+1, MaxInt);
      ListBox1.Items.Strings[i]:=S;
    end;



Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar