Wykrycie wszystkich linków do grafiki - delphi

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

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.

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;
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.
0

Bardzo dziękuję!!

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