Wykrycie wszystkich linków do grafiki - delphi

Odpowiedz Nowy wątek
2011-07-31 20:26
Gnus
0

Mam przykładowo źródło jakieś strony w stringu, lub w jaki kolwiek inny tekst w którym zawarte są adresy do grafik, np:

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce ac leo ligula, vitae blandit orci. Vivamus quam nisl, sollicitudin sed dictum sit amet, porttitor vel metus. Suspendisse potenti. Maecenas mattis sapien ut urna ornare in pulvinar justo sodales. Aenean eu nisl ut metus interdum iaculis. Vestibulum convallis lectus id velit viverra vestibulum. http://4programmers.net/template/img/logoSmall.png Quisque bibendum egestas lectus, ut blandit purus vehicula id. Phasellus pretium malesuada tortor, in pulvinar risus posuere eu. Mauris nec bibendum turpis. Pellentesque magna risus, egestas eu suscipit non, posuere ut lorem. Morbi ornare molestie bibendum. Vestibulum feugiat, eros sit amet tincidunt molestie, neque erat egestas ipsum, a elementum dui quam ultrices odio. Mauris tortor elit, vulputate et elementum et, gravida et nisi. Nulla ac porttitor massa. Duis facilisis metus ac erat posuere imperdiet. Morbi odio libero, tristique non congue eget, interdum ut nunc. http://pl.lipsum.com/images/lipsum08.gif Integer ut purus felis. Aenean eget turpis sapien, adipiscing adipiscing lorem.

W jaki sposób mogę z tego tekstu wyciąć te adresy, aby każdy z osobna wyświetlić w showmessage, czyli tutaj powinno znaleźć dwie grafiki i wyświetlić 2 showmessage. Może jakiś filtr że najpierw szuka http a potem popularych rozszerzeń graficzych?

Jak to zrobić? Myślałem o strpos i potem copy, no ale tak znajde pierwszy link, a co z następnymi?

Proszę o pomoc

Pozostało 580 znaków

2011-07-31 21:06
0
Gnus napisał(a)

Myślałem o strpos i potem copy, no ale tak znajde pierwszy link, a co z następnymi?

Kolejne linki wyszukujesz za pomocą PosEx.

Pozostało 580 znaków

2011-08-01 00:00
0
var
i,ii, p,pp: integer;
s,ss : string;
begin
 
for i := 0 to memo1.lines.count - 1 do
begin
if pos('http://', memo1.lines.strings[i]) > 0 then
begin
s := '';
for p := pos('http://', memo1.lines.strings[i]) to
length(memo1.lines.strings[i]) do
if memo1.lines.strings[i][p] <> ' ' then
s := s + memo1.lines.strings[i][p]
else
break;
while pos(s[length(s)], '..;!")]}?''>') > 0 do
delete(s, length(s), 1);
Caption := (s);
end;
end;
end;

Iucundi acti labores

Pozostało 580 znaków

2011-08-01 00:36
0
procedure TForm1.Button1Click(Sender: TObject);
var
i, p : integer;
s : string;
sl : TStringList;
begin
  sl := TStringList.Create;
  sl.Text := memo1.Lines.Text;
 
  for i := 0 to sl.count - 1 do
  begin
    if pos('http://', sl.strings[i]) > 0 then
    begin
      s := '';
      for p := pos('http://', sl.strings[i]) to
      length(sl.strings[i]) do
      if sl.strings[i][p] <> ' ' then
      s := s + sl.strings[i][p]
      else
      break;
       while pos(s[length(s)], '..;!")]}?''>') > 0 do
       delete(s, length(s), 1);
 
       if (pos('.png',s) > 0) or
          (pos('.jpg',s) > 0) or
          (pos('.jpeg',s) > 0) or
          (pos('.bmp',s) > 0) or
          (pos('.gif',s) > 0) 
           then
             Showmessage(s);
            // Memo2.Lines.add(s);
    end;
  end;
 sl.Free;
 end;
end.

Iucundi acti labores
edytowany 7x, ostatnio: Bruno(M), 2011-08-01 00:58

Pozostało 580 znaków

2011-08-01 01:47
Gnus
0

Bardzo dziękuję!!

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0