Al decir, como leer un texto en internet me refiero al conetenido de una pagina web. Mas espefico, digamos que tengo www.algo.com/algo.txt, quiero leer el contenido de algo.txt y guardarlo en un arrelo para luego comparar.
Gracias

[RESUELTO] Como leer un texto en internet?
Comenzado por
c0lo
, sep 07 2009 06:59
2 respuestas en este tema
#1
Escrito 07 septiembre 2009 - 06:59
#2
Escrito 08 septiembre 2009 - 12:12
Pues te dejo unas funciones que diseñé para leer una página web. Usan sólo la API.
Esta función puede usarse de la siguiente manera:
Si prefieres simplificarlo usando algo de la VCL en la función, puedes hacerlo así:
Y como ejemplo de uso:
Seguro que le sacas partido.
Saludos.
cpp
#include <vector> bool InternetReadWeb(char* URL, std::vector<BYTE> *Vector) { HINTERNET hNet; HINTERNET hUrl; BYTE Buffer; DWORD BytesRead = 0; bool Result = false; if(InternetAttemptConnect(0) != ERROR_SUCCESS) return Result; hNet = InternetOpen("App", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0); if (hNet){ hUrl = InternetOpenUrl(hNet, URL, NULL, 0, INTERNET_FLAG_RELOAD, 0); if (hUrl){ // Lee la pagina web... for(int ind=0; ; ind+=BytesRead){ Result = InternetReadFile(hUrl, &Buffer, sizeof(BYTE), &BytesRead); if(Result && BytesRead==0) break; Vector->push_back(Buffer); } InternetCloseHandle(hUrl); } InternetCloseHandle(hNet); } return Result; }
Esta función puede usarse de la siguiente manera:
cpp
void __fastcall TForm1::Button1Click(TObject *Sender) { std::vector<BYTE> Memory; InternetReadWeb("http://www.delphiaccess.com/", &Memory); RichEdit1->Text = (char*)&Memory[0]; }
Si prefieres simplificarlo usando algo de la VCL en la función, puedes hacerlo así:
cpp
String InternetReadWeb(char* URL) { HINTERNET hNet; HINTERNET hUrl; char Buffer; DWORD BytesRead = 0; String Text = ""; bool NoError; if(InternetAttemptConnect(0) != ERROR_SUCCESS) return Text; hNet = InternetOpen("agent", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0); if (hNet){ hUrl = InternetOpenUrl(hNet, URL, NULL, 0, INTERNET_FLAG_RELOAD, 0); if (hUrl){ // Lee la pagina web... for(int ind=0; ; ind+=BytesRead){ NoError = InternetReadFile(hUrl, &Buffer, sizeof(BYTE), &BytesRead); if(NoError && BytesRead==0) break; Text = Text + Buffer; } InternetCloseHandle(hUrl); } InternetCloseHandle(hNet); } return Text; }
Y como ejemplo de uso:
cpp
RichEdit1->Text = InternetReadWeb("http://www.delphiaccess.com/");
Seguro que le sacas partido.

Saludos.
#3
Escrito 28 septiembre 2009 - 07:01
Excelente respuesta....