Bonjour

J'essaye d'utiliser le composant HTTPCLI de ICS pour télécharger une page web puis le composant TPerlRegEx pour en extraire des informations.

Le problème est que HTTPCLI utilise un TMemoryStream pour récupérer la page, alors que TPerlRegEx attend un string.

J'ai essayé une fonction qui convertit, mais D2007 génère une erreur "Incompatible types"

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
 
function StreamToText(oStream : TMemoryStream ): String;
var
  oSL : TStringlist;
begin
  oSL := TStringlist.Create;
  oSL.LoadFromStream(oStream);
  result := oSL.Text;
  oSL.Free;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
var
  WebPage : String;
begin
  With HttpCli1 do begin
    URL            := 'www.acme.com';
    RcvdStream := TMemoryStream.Create;
    try
      Get;
    except
      ShowMessage('Oops');
      RcvdStream.Free;
      Exit;
    end;
 
    RcvdStream.Seek(0,0);
    //E2010 Incompatible types: 'TMemoryStream' and 'TStream'
    WebPage := StreamToText(RcvdStream);
    RcvdStream.Free;
  end;
 
  PerlRegEx1.RegEx := '<title>(.+)</title>';
  PerlRegEx1.Options := [preCaseLess];
  //TPerlRegEx attend une string
  PerlRegEx1.Subject := WebPage;
 
  If PerlRegEx1.Match then begin
    ShowMessage(PerlRegEx1.SubExpressions[1]);
  end else begin
    ShowMessage('Not found');
  end;
end;
Quelqu'un aurait-il une idée sur la cause du problème?

Merci.