Hola de nuevo Nelson.
Otra vez, gracias por tu tiempo.
Entiendo ahora tus ejemplos.
He reescrito el código y ahora creo que está correcto, al menos no hay advertencias ni corta en ningún momento. Este es el código completo.
Código Delphi
[-]
function ExtractCode(const Tag, Text: String): string;
var
StartPos, EndPos: integer;
begin
Result:= '';
StartPos:= Pos('<' + Tag, Text);
EndPos:= Pos('<' + '/' + Tag + '>', Text);
if (StartPos > 0) and (EndPos > StartPos) then
Result:= Copy(Text, StartPos, EndPos - StartPos + Length(Tag) + 3);
end;
procedure TForm1.StartClick(Sender: TObject);
var
URL: string;
SearchParams: string;
httpClient: THTTPSend;
Page: TMemoryStream;
Line: integer;
begin
URL:= 'http://webpage.com';
SearchParams:= SearchBox.Text;
httpClient:= THTTPSend.Create;
if httpClient.HTTPMethod('GET', (URL+SearchParams)) then
Page:= TMemoryStream.Create;
httpClient.Document.SaveToStream(Page);
httpClient.Free;
Page.Position:=0;
PageStrings:= TStringList.Create;
PageStrings.LoadFromStream(Page);
Page.Position:=0;
Memo1.Lines.LoadFromStream(Page);
Line:= 0;
while Line <= PageStrings.Count -1 do
begin
Memo2.Lines.Add(ExtractCode('tr',PageStrings[Line]));
Line:= Line+1;
end;
end;
He hecho una prueba con este html en vez de cargar la página.
Código:
<t>115451</t><t>fgfdgdfg<dfg/tdfdsf>fdgfdnkjghrehiu4yi5yuihgfjdrgjkbdfnjgkndfjkngjkndfkjgnkjdfnjkgjkdfngjkdnfjkgkjdfngh<t>45345456gdf</t><t>wwwwwwwwwwwwwwwww</t>
<t>00000000</t><t>534fdgfd45345</t><t>gdfdfg</t>
<t>24981vvvvvvvvv</t> <t>21f5f1eeeeeeeeee</t>
<t>24981vvvvvvvvv</t> <t>21f5f1eeeeeeeeee</t>
El resultado es el siguiente:
Código:
<t>115451</t>
<t>115451</t>
<t>115451</t>
<t>115451</t>
<t>115451</t>
<t>115451</t>
<t>115451</t>
// El primer valor repetido 7 veces.
En cambio si cargo la pagina completa, el resultado solo se muestra una vez, pero siempre es el primero y no carga mas.
No se, quizá pueda ser algo relacionado con el formato de html? Es que parece como si no incrementara el indice y parara nada mas encontrar la primera.
Yo sigo probando y probando, pero si se te ocurre alguna cosa, te lo agradecería.
Gracias.