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?
Started by
c0lo
, Sep 07 2009 06:59 PM
2 replies to this topic
#1
Posted 07 September 2009 - 06:59 PM
#2
Posted 08 September 2009 - 12:12 AM
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
Posted 28 September 2009 - 07:01 PM
Excelente respuesta....