Deletar tudo depois da quot;/quot;
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...
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
Curtidas 0
Respostas
Raserafim
05/09/2006
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;
GOSTEI 0
Massuda
05/09/2006
Você pode fazer assim......mas note que isso não funciona ´certo´ no caso de ´http://www.seusite.com.br/algumacoisa´.
var N: Integer; S: string; ... S := ´www.seusite.com.br/algumacoisa´; N := Pos(´/´, S); if N > 0 then begin Delete(S, N, MaxInt); end; ...
GOSTEI 0
Marco Salles
05/09/2006
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;
GOSTEI 0
Delphitotal
05/09/2006
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/
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/
GOSTEI 0
Marco Salles
05/09/2006
é 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;
GOSTEI 0
Delphitotal
05/09/2006
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/
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/
GOSTEI 0
Marco Salles
05/09/2006
ai vai ter que usar o posEx como eu tinha dito anteriormente
Unit : StrUtils;
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;
GOSTEI 0
Raserafim
05/09/2006
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;
GOSTEI 0
Delphitotal
05/09/2006
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?
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?
GOSTEI 0
Marco Salles
05/09/2006
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;
GOSTEI 0
Delphitotal
05/09/2006
Marco Salles,
Vlw! realmente era isso que eu precisava ..
Obrigado..
Vlw! realmente era isso que eu precisava ..
Obrigado..
GOSTEI 0
Delphitotal
05/09/2006
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)
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)
GOSTEI 0
Marco Salles
05/09/2006
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;
GOSTEI 0
Delphitotal
05/09/2006
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/
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/
GOSTEI 0
Marco Salles
05/09/2006
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;
GOSTEI 0
Delphitotal
05/09/2006
Marco Salles, muito obrigado agora o programinha ta funcionando a 100¬
Vlw ! :D
Vlw ! :D
GOSTEI 0
Marco Salles
05/09/2006
atê o próximo ajuste no codigo... :lol: :lol: :lol:
GOSTEI 0
Delphitotal
05/09/2006
Marco Salles, muito Obrigado pela sua ajuda! já me salvou varias vezes!!!
Preciso da sua ajuda novamente pra ajuste no código do meu programinha de bloqueios.
Séria assim o que eu gostaria de fazer
Um listbox recebe:
www.uol.com.br/batepapo/
www.terra.com.br/batepapo/
www.br.inter.net/batepapo/
www.outrosite.com/chat/
www.outrosite.com/pastaqualquer/
eu queria copiar todos os dominios pra um listbox ficando:
www.uol.com.br
www.terra.com.br
www.br.inter.net
www.outrositequalquer.com
www.outrositequalquer.com
e queria copiar todas as subpastas pra outro listbox ficando:
/batepapo/
/batepapo/
/batepapo/
/chat/
/pastaqualquer/
Tentei fazer aqui mais desisti !
Agradeço desde já!
Obrigado.
Preciso da sua ajuda novamente pra ajuste no código do meu programinha de bloqueios.
Séria assim o que eu gostaria de fazer
Um listbox recebe:
www.uol.com.br/batepapo/
www.terra.com.br/batepapo/
www.br.inter.net/batepapo/
www.outrosite.com/chat/
www.outrosite.com/pastaqualquer/
eu queria copiar todos os dominios pra um listbox ficando:
www.uol.com.br
www.terra.com.br
www.br.inter.net
www.outrositequalquer.com
www.outrositequalquer.com
e queria copiar todas as subpastas pra outro listbox ficando:
/batepapo/
/batepapo/
/batepapo/
/chat/
/pastaqualquer/
Tentei fazer aqui mais desisti !
Agradeço desde já!
Obrigado.
GOSTEI 0
Marco Salles
05/09/2006
mas como é que o codigo vai conseguir diferenciar
[u:c408720e41]situação anterior[/u:c408720e41]
de situaçãoe assim :
qual o filtro que o codigo deva entender que deve deletar tudo depois do \
ou deletar o Proprio \... Quero dizer que deve ter um diferença lógica
nessas duas situações acima... Pq se passar o codigo em
[u:c408720e41][b:c408720e41]www.uol.com.br/batepapo/ [/b:c408720e41][/u:c408720e41] do jeito que o codigo propõem é claro que
o resultado ficará assim : [u:c408720e41][b:c408720e41]www.uol.com.br/[/b:c408720e41][/u:c408720e41]
[u:c408720e41]situação anterior[/u:c408720e41]
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/
de situaçãoe assim :
www.uol.com.br/batepapo/
Séria assim o que eu gostaria de fazer
www.uol.com.br
qual o filtro que o codigo deva entender que deve deletar tudo depois do \
ou deletar o Proprio \... Quero dizer que deve ter um diferença lógica
nessas duas situações acima... Pq se passar o codigo em
[u:c408720e41][b:c408720e41]www.uol.com.br/batepapo/ [/b:c408720e41][/u:c408720e41] do jeito que o codigo propõem é claro que
o resultado ficará assim : [u:c408720e41][b:c408720e41]www.uol.com.br/[/b:c408720e41][/u:c408720e41]
GOSTEI 0
Delphitotal
05/09/2006
Marco Salles você não entendeu ...
Estou falando de outro filtro, o filtro anterior está perfeito já estou usando a muito tempo!
O Software que criei manda a requisição e analisa o cabeçalho pra vêr se vai poder bloquear ou não. tipo um proxy entende?
não posso iniciar uma conexão pelo socket assim:
ClientSocket.Host := ´www.uol.com.br/batepapo/´;
vai dar erro
por isso tentei fazer o filtro pra mover a subpasta pra um ListBox e o host pra outro... assim eu poderia fazer algo como :
Dominio := ListBox1.Items.String[0];
Subpasta := ListBox2.Items.String[0];
Assim eu poderia trabalhar com a requisição!
séria mais ou menos isso que queria fazer.
Estou falando de outro filtro, o filtro anterior está perfeito já estou usando a muito tempo!
O Software que criei manda a requisição e analisa o cabeçalho pra vêr se vai poder bloquear ou não. tipo um proxy entende?
não posso iniciar uma conexão pelo socket assim:
ClientSocket.Host := ´www.uol.com.br/batepapo/´;
vai dar erro
por isso tentei fazer o filtro pra mover a subpasta pra um ListBox e o host pra outro... assim eu poderia fazer algo como :
Dominio := ListBox1.Items.String[0];
Subpasta := ListBox2.Items.String[0];
Assim eu poderia trabalhar com a requisição!
séria mais ou menos isso que queria fazer.
GOSTEI 0
Warfighter
05/09/2006
Como faço para usar isso em vez de um Listbox ser um Memo1 ?
[b:d88eda630c]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;[/b:d88eda630c]
[b:d88eda630c]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;[/b:d88eda630c]
GOSTEI 0
Marco Salles
05/09/2006
Como faço para [b:b1970fd95c]usar isso [/b:b1970fd95c]em vez de um Listbox ser um Memo1 ?
afinal o que voce quer ??? São tantos os codigos nesse post é melhor voce afinar aquilo que voce pretende...
GOSTEI 0
Warfighter
05/09/2006
[quote:e3295fa2ec=´Marco Salles´]
afinal o que voce quer ??? São tantos os codigos nesse post é melhor voce afinar aquilo que voce pretende...[/quote:e3295fa2ec]
Esse código ae em baixo quero usalo em um memo por exemplo seria assim ex: [b:e3295fa2ec]for i:=0 to memo1.Count - 1 do [/b:e3295fa2ec] , s:=memo1.lines.Items.Strings[i]; ?
Flw
é pq o conteudo que quero pegar vem de um memo1 e não do listbox a não ser que possa converter do memo1 para o listbox
Como faço para [b:e3295fa2ec]usar isso [/b:e3295fa2ec]em vez de um Listbox ser um Memo1 ?
afinal o que voce quer ??? São tantos os codigos nesse post é melhor voce afinar aquilo que voce pretende...[/quote:e3295fa2ec]
Esse código ae em baixo quero usalo em um memo por exemplo seria assim ex: [b:e3295fa2ec]for i:=0 to memo1.Count - 1 do [/b:e3295fa2ec] , s:=memo1.lines.Items.Strings[i]; ?
Flw
é pq o conteudo que quero pegar vem de um memo1 e não do listbox a não ser que possa converter do memo1 para o listbox
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;
GOSTEI 0
Warfighter
05/09/2006
Como faiz para pegar algo que esteja no meio por exemplo
http:\\[b:8118748c8f]www.site.com.br\[/b:8118748c8f]index.php
como faiz ?
http:\\[b:8118748c8f]www.site.com.br\[/b:8118748c8f]index.php
como faiz ?
GOSTEI 0
Marco Salles
05/09/2006
Como faiz para pegar algo que esteja no meio por exemplo
http:\\[b:92b37239d5]www.site.com.br\[/b:92b37239d5]index.php
como faiz ?
subtende-se que o que voce quer é o que esta em [b:92b37239d5]negrito[/b:92b37239d5]
para o seu caso especifico , é assim :
var s:String; posi,posf:integer; begin s:=´http:\\www.site.com.br\index.php´; posi:=pos(´\\´,s); posf:=PosEx(´\´,s,posi+2); showmessage(copy(s,posi+2,posf-posi-1));
GOSTEI 0
Warfighter
05/09/2006
Muito Obrigado pela sua Ajuda :wink:
Funciono perfeitamente :D
[quote:2b48f180a9=´Marco Salles´]
subtende-se que o que voce quer é o que esta em [b:2b48f180a9]negrito[/b:2b48f180a9]
para o seu caso especifico , é assim :
[/quote:2b48f180a9]
Funciono perfeitamente :D
[quote:2b48f180a9=´Marco Salles´]
Como faiz para pegar algo que esteja no meio por exemplo
http:\\[b:2b48f180a9]www.site.com.br\[/b:2b48f180a9]index.php
como faiz ?
subtende-se que o que voce quer é o que esta em [b:2b48f180a9]negrito[/b:2b48f180a9]
para o seu caso especifico , é assim :
var s:String; posi,posf:integer; begin s:=´http:\\www.site.com.br\index.php´; posi:=pos(´\\´,s); posf:=PosEx(´\´,s,posi+2); showmessage(copy(s,posi+2,posf-posi-1));
GOSTEI 0
Psycho
05/09/2006
Eu não testei ainda mais como ficaria para remover
o que vem antes do ( / )
www.site.com/pagina
deichando:
pagina
eu já fis isso uma vez, + usei uma função diferente
T+ :shock:
o que vem antes do ( / )
www.site.com/pagina
deichando:
pagina
eu já fis isso uma vez, + usei uma função diferente
T+ :shock:
GOSTEI 0
Marco Salles
05/09/2006
é poderia tb ser feito assim
var s:string; posIni:integer; begin s:=´www.site.com/pagina´; posini:=Pos(´/´,s); showmessage(copy(s,posIni+1,length(s)-Posini)); end;
GOSTEI 0