bir url'nin kökünü almak

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
DelphiMania
Üye
Mesajlar: 24
Kayıt: 14 Tem 2004 05:18

bir url'nin kökünü almak

Mesaj gönderen DelphiMania »

herkese selamlar
sorum şu
elimde şöyle adresler var diyelim :

http://blabla.com/xx/aa/x.html
http://blabla.com/xx.html
http://blabla.com/xxq/qww/
blabla.com/cc.html
blabla.com/xx/dd.html

yani bu türl adreslerden http://blabla.com/'u nasıl çıkartabilirim.
şimdiden teşekkürler
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Bütün olasılıkları içeren bir liste yap. Bunların kesişim kümesini alacak bir fonksiyon yaz.

Kullanacağın string operasyon fonksiyonları ise POS() LENGTH() COPY() başlıcaları...
Resim
Resim ....Resim
DelphiMania
Üye
Mesajlar: 24
Kayıt: 14 Tem 2004 05:18

Mesaj gönderen DelphiMania »

Cevap verdiğiniz için teşekkürler ancak ne demek istediğini tam anlamadım..

Mesela kullanıcı şöyle bir url girecek :
http://bilmemne.com/xx/aa/x.html

benim burdan
http://bilmemne.com/'u öğrenmem lazım.
yada kullanıcı şu şekilde de girebilir bilmemne.com/xx/aa/x.html
bilmemne.com/ şeklinde adresin kökünü nasıl öğrenebilirim..

teşekkürler..
Kullanıcı avatarı
MercilessTurk
Üye
Mesajlar: 94
Kayıt: 28 Eki 2005 10:14

Mesaj gönderen MercilessTurk »

ilkönce "http://" yi stringin içinde aratın bulursanız stringden çıkarın. daha sonra "/" işaretini aratın ve kendisi dahil stringin sonuna kadar kalan kısmı silin. Daha sonra elinizde "abc.com" ya da "www.abc.com" gibi bir string kalır. İsterseniz" www" yu da stringinizde varsa siliniz. ve stringinizin başına "http://" sonunada "/" ekleyin. tabi bunları yapmak için @mrmarman ın da belirttiği gibi POS() LENGTH() COPY() fonksiyonlarını kullanmalısınız. forumda bu fonskiyonlar fazlasıyla konuşuldu arama yaparak kullanımlarını öğrenebilirsiniz.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

@MercilessTurk çok iyi ve detaylı ifade etmiş.

- Kullanıcının girebileceği tüm ihtimalleri etüd edin. Odan sonra fonksiyona başlayın..
Resim
Resim ....Resim
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

- Çay molamda, "bana da lazım olur bir zaman, hazırda bulunsun, o zaman vaktim olmaz vs." deyip yapayım dedim... (bahane bu ya) :wink:

Kod: Tümünü seç

Function URLKokBul( URL:String ):String;
begin
  // ilk olarak kontrol kolaylığı için sağındaki solundaki
  // boşlukları atıp, küçük harfe dönüştürücez.
  URL := Trim(LowerCase(URL));
  If URL = '' then begin
    // içerik boş ise "*" döndürüyoruz... 
    Result := '*';
    Exit;
  end;
  Result := '';
  // Garantilemek için sonunda yoksa bir tane "/" ekliyoruz... :)
  If URL[Length(URL)] <> '/' then URL := URL + '/';
  If Pos('http', URL) = 1 then begin
    // http ile başlıyorsa yapılacaklar..
    // üç kere '/''a kadar olan kısmı alırsak kökü elde etmiş oluyoruz..
    //#1 "http:/"
    Result := Result + Copy(URL, 1, Pos('/', URL));
      Delete(URL, 1, Pos('/', URL));
    //#2 "http://"
    Result := Result + Copy(URL, 1, Pos('/', URL));
      Delete(URL, 1, Pos('/', URL));
    //#3 "http://www.xxx.uuu/"
    Result := Result + Copy(URL, 1, Pos('/', URL));
  end else begin
    // http ile başlamamış ise başına http ekleyip ilk '/'a kadar alıyoruz...
    Result := 'http://' + Copy(URL, 1, Pos('/', URL));
  end;
end;
Kullanımı için örnek : Mesela bu adresler bir TMemo'da olsun.

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
Var
  Sayac : Integer;
begin
  For Sayac := 0 to Memo1.Lines.Count-1 do begin
    Memo1.Lines[Sayac] := URLKokBul( Memo1.Lines[Sayac] );
  end;
end;
Afiyet olsun...
Resim
Resim ....Resim
DelphiMania
Üye
Mesajlar: 24
Kayıt: 14 Tem 2004 05:18

Mesaj gönderen DelphiMania »

MercilessTurk ve mrmarman çok sağolun.çok iyi oldu valla çok teşekkürler..
mrmarman hocam özellikle açıklamalı olarak yazman kodları çok çok iyi olmuş..teşekkürler tekrar
Cevapla