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"
Quelqu'un aurait-il une idée sur la cause du problème?
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;
Merci.
Partager