Turbo C++ i WWW

problemy z tworzeniem programów do obsługi sieci, internetu, e-mail itp..

Re: Turbo C++ i WWW

Nowy postprzez Cyfrowy Baron » piątek, 2 października 2009, 14:49

Po co czytać stronę po kawałku skoro funkcja wczyta ja w całości. Patrz post: posting.php?mode=reply&f=16&t=630#pr3754
Problem niewczytywania strony w całości dotyczy tylko sytuacji, gdy wczytuje się pliki PHP i to w przypadku gdy rozmiar bufora jest ustalany dynamicznie, przy jawnie określonym rozmiarze bufora nie ma problemu z wczytywaniem stron w całości o czym Dante pisał w tym poście: posting.php?mode=reply&f=16&t=630#pr3786

Jeśli jest statycznie podane do zawszę się wczyta.




Nigdzie nie widzę tego.


Patrz tutaj: posting.php?mode=reply&f=16&t=630#pr3754

Zresztą jakby opracował od początku to nie byłoby tematu niekompletnego ściągania zawartości www.


Ten temat nie dotyczy niekompletnego wczytywania stron, tylko wczytywania stron z wykorzystaniem biblioteki wininet.dll, a problem niekompletnego wczytywania stron wyniknął dopiero gdy zaproponowałem zastosowanie funkcji HttpQueryInfo do określania rozmiaru bufora na pobieraną zawartość pliku i dotyczy tylko plików PHP i rzeczywiście jest to problem nagłówka (o czym wspominasz), ale i na to jest rozwiązanie, tylko chwilowo nie chce mi się nad tym siedzieć, gdyż i tak dużo czasu poświęciłem temu problemowi, a mi aktualnie nie jest to do niczego potrzebne.

Chcesz pomóc, to poszukaj rozwiązania jak dynamicznie określać rozmiar bufora na pobierane pliki PHP? Z plikami HTML nie stwierdziłem problemu. Przy jawnie określonym rozmiarze bufora nie ma problemu z pobieraniem plików PHP.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana

Re: Turbo C++ i WWW

Nowy postprzez polymorphism » piątek, 2 października 2009, 15:16

Kod: Zaznacz cały
Patrz tutaj: posting.php?mode=reply&f=16&t=630#pr3754

No i co, jest tam pojedyncze czytanie do bufora ~100kB. W sumie amatorka trochę...

i rzeczywiście jest to problem nagłówka (o czym wspominasz), ale i na to jest rozwiązanie, tylko chwilowo nie chce mi się nad tym siedzieć, gdyż i tak dużo czasu poświęciłem temu problemowi, a mi aktualnie nie jest to do niczego potrzebne.

:lol: Ty chyba sobie żartujesz? Przecież rozwiązaniem jest kod, który podałem.

Chcesz pomóc, to poszukaj rozwiązania jak dynamicznie określać rozmiar bufora na pobierane pliki PHP?

Po pierwsze z serwera nie pobierasz plików PHP, tylko gotową stronę. Po drugie, rozwiązania szukać nie będę, bo dałem inne, rozwiązujące (mam nadzieję) problem. No chyba że mówimy o sztucznym tworzeniu problemów... ale to nie dla mnie.
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    NieznanyNieznana

Re: Turbo C++ i WWW

Nowy postprzez Cyfrowy Baron » piątek, 2 października 2009, 15:39

Eh, jak widzę nie wiesz nawet jak się za to zabrać. Wbrew temu co piszesz rozwiązania nie podałeś.
Nie chodzi już tutaj tylko o podanie konkretnego rozwiązania, ale o rozwiązanie problemu z pobieraniem plików PHP przy dynamicznie określanym rozmiarze bufora, gdyż Twoje rozwiązanie nie jest żadnym zaskoczeniem ani dla Dante, anie dla mnie.

No i co, jest tam pojedyncze czytanie do bufora ~100kB. W sumie amatorka trochę...


Dante podał przykład, który potem był rozwijany. Pojawił się pomysł z dynamicznym określaniem rozmiaru bufora i to stało się problemem. Ty podałeś rozwiązanie z wczytywaniem strony po kawałku, ale nie to jest teraz istotą problemu.

Ponawiam pytania. Jak pobrać stronę PHP przy dynamicznie określanym rozmiarze bufora? Jak rozwiązać problem nagłówka w przypadku plików PHP?
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana

Re: Turbo C++ i WWW

Nowy postprzez polymorphism » piątek, 2 października 2009, 16:50

gdyż Twoje rozwiązanie nie jest żadnym zaskoczeniem ani dla Dante, anie dla mnie.

Szczerze w to wątpię. Gdyby tak było, byłaby tam pętla i... prawdopodobnie problemu by nie było. Swoją drogą nie widzę, żeby Dante od czasu podania kodu z pętlą wypowiedział się w tym temacie. Więc może poczekaj, niech sprawdzi kod i się wypowie, Ok?

[...] ale nie to jest teraz istotą problemu.

W tym przypadku istota tworzy problem 8-) Ale dobra, jeśli twierdzisz, że ta opcja jest na tyle sensowna, że warto ją forsować, choć sam nie potrafisz znaleźć rozwiązania, to powiedz mi, dlaczego bufor ma być dynamicznie tworzony i wszystko ma być przeczytane jednym wywołaniem funkcji? Gdzie są zalety tego rozwiązania?

Jeśli podasz choć jeden racjonalny powód lub zaletę takiego rozwiązania, pochylę się nad problemem i znajdę rozwiązanie ;)
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    NieznanyNieznana

Re: Turbo C++ i WWW

Nowy postprzez Cyfrowy Baron » piątek, 2 października 2009, 17:47

Rozwiązanie jest możliwe, gdyż działa w odniesieniu do plików HTML, więc zakładam, że twórcy biblioteki wininet.dll przewidzieli taką możliwość, skoro służy między innymi do zwracania rozmiaru pliku.
Po co to robić, chociażby z chęci poznania nowych rozwiązań.

Gdyby chodziło mi tylko o rozwiązanie problemu, to nie ślęczałbym na biblioteką wininet.dll, tylko skorzystałbym z bibliotek np. INDY -> TIdHTTP, i nie byłoby najmniejszego problemu.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana

Re: Turbo C++ i WWW

Nowy postprzez polymorphism » piątek, 2 października 2009, 19:03

[...] więc zakładam, że twórcy biblioteki wininet.dll przewidzieli taką możliwość, skoro służy między innymi do zwracania rozmiaru pliku.

Widzisz, problem w tym, że protokół HTTP dopuszcza możliwość, że nagłówek odpowiedzi nie będzie zawierać informacji o rozmiarze zawartości (Content-Length). W przypadku strony, z którą są problemy tej wartości w nagłówku nie ma, a co za tym idzie HttpQueryInfo zwróci błąd. W tym przypadku, inaczej niż czytając fragmentami, nie przeczytasz tego poprawnie. Oczywiście możesz sobie założyć, że strony zawsze mieszczą się w 100KB i wtedy czytać je w jednym wywołaniu, ale to jest naiwne, błędogenne rozwiązanie.
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    NieznanyNieznana

Re: Turbo C++ i WWW

Nowy postprzez GoldWolf » sobota, 3 października 2009, 07:20

Gdyby chodziło mi tylko o rozwiązanie problemu, to nie ślęczałbym na biblioteką wininet.dll, tylko skorzystałbym z bibliotek np. INDY -> TIdHTTP, i nie byłoby najmniejszego problemu.
Tak jak ja, tylko akurat używam Turbo i nie mam takiej możliwości.

Kod: Zaznacz cały
     DWORD   szSizeBuffer;
    DWORD   dwLengthSizeBuffer = 32;
    DWORD   dwBytesRead;

    String m_strURL = "http://programowanie.cal.pl/forum/index.php";
    HINTERNET Sesja;
    Sesja = InternetOpen(Application->Name.c_str(), INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
    if(Sesja !=  NULL)
    {
      HINTERNET Serwis;
      Serwis = InternetOpenUrl(Sesja, m_strURL.c_str(), NULL, 0, 0, 0);
      if(Serwis != NULL)
      {
       if(!HttpQueryInfo( Serwis, HTTP_QUERY_CONTENT_LENGTH,   (LPVOID)szSizeBuffer,   &dwLengthSizeBuffer,   NULL))
       {
        void *cRead = new char[szSizeBuffer];
        InternetReadFile(Serwis,   cRead,   szSizeBuffer,   &dwBytesRead);
        String str = (LPSTR)cRead;
        Memo1->Text = (LPSTR)cRead;
        Memo1->Lines->Add(str.Length());
        delete cRead;
       }
      }else Memo1->Lines->Add("Błąd");

      InternetCloseHandle(Sesja);
    }
Cyfrowy to rozwiązanie nie działa, wczytuje tylko 1 znaki.

Ale zastosowałem wczytanie strony bezINDY. Na razie działa poprawnie ;-).
Kod: Zaznacz cały
AnsiString Url = "http://programowanie.cal.pl/forum/index.php";
URLOpenBlockingStream(0, Url.c_str(), &pStream, 0, 0);
std::auto_ptr<TOleStream> oStream(new TOleStream(pStream));
Memo1->Lines->LoadFromStream(oStream.get());
// UsuwajTagi(Memo1->Text.c_str());
Czy można jakoś zastąpić od razu tą linijkę Memo1->Lines->LoadFromStream(oStream.get());, by można było od razu użyć UsuwajTagi(string);
Ostatnio edytowano sobota, 3 października 2009, 10:14 przez GoldWolf, łącznie edytowano 1 raz
Tylko dwie rzeczy są nieskończone: wszechświat oraz ludzka głupota, choć nie jestem pewien co do tej pierwszej. - Albert Einstein

Błędów nie popełnia ten, kto nic nie robi. - Theodore Roosevelt
Avatar użytkownika
GoldWolf
Homos antropiczny
Homos antropiczny
 
Posty: 116
Dołączył(a): piątek, 16 stycznia 2009, 18:42
Podziękował : 8
Otrzymał podziękowań: 0
System operacyjny: Siódemka Profesjonalna
Kompilator: Microsoft Visual Studio 2010
Version 10.0.30319.1
Gadu Gadu: 0
    NieznanyNieznana

Re: Turbo C++ i WWW

Nowy postprzez Cyfrowy Baron » sobota, 3 października 2009, 08:40

Czy można jakoś zastąpić od razu tą linijkę Memo1->Lines->LoadFromStream(oStream.get());, by można było od razu użyć UsuwajTagi(string);


Pytasz, czy można tak:

Kod: Zaznacz cały
UsuwajTagi(Memo1->Lines->LoadFromStream(oStream.get()))


Jeżeli o to pytasz, to nie można, gdyż z kodu wynika, że funkcja oczekuje parametry typy String: UsuwajTagi(String text);
Obiekt typy TMemo niczego nie zwraca, więc nie możesz wstawić obiektu typu TMemo, tam gdzie oczekiwana jest wartość typu String.



Co do tego, że funkcja nie wczytuje pliku w całości, to ma to związek z nagłówkiem pliku PHP. Funkcja nie jest w stanie prawidłowo określić rozmiaru pliku PHP.



Ale zastosowałem wczytanie strony bezINDY, z tym, że nadal jest problem z tym forum. Na razie działa poprawnie


Jaki problem?

U mnie funkcja URLOpenBlockingStream ładuje cała zawartość strony głównej serwisu.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana

Re: Turbo C++ i WWW

Nowy postprzez polymorphism » sobota, 3 października 2009, 10:19

Cyfrowy to rozwiązanie nie działa, wczytuje tylko 1 znaki.

Nie działa, bo tam jest błąd w warunku z HttpQueryInfo. Oczywiście kod będzie działał tylko z odpowiedziami o określonym rozmiarze.

Sprawdzałeś kod z pętlą?

Czy można jakoś zastąpić od razu tą linijkę Memo1->Lines->LoadFromStream(oStream.get());, by można było od razu użyć UsuwajTagi(string);

Przecież oStream to strumień. Odczytaj z niego dane do stringa i już.
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    NieznanyNieznana

Re: Turbo C++ i WWW

Nowy postprzez GoldWolf » sobota, 3 października 2009, 10:21

Cyfrowy Baron napisał(a):
Czy można jakoś zastąpić od razu tą linijkę Memo1->Lines->LoadFromStream(oStream.get());, by można było od razu użyć UsuwajTagi(string);


Pytasz, czy można tak:
Kod: Zaznacz cały
UsuwajTagi(Memo1->Lines->LoadFromStream(oStream.get()))

Jeżeli o to pytasz, to nie można, gdyż z kodu wynika, że funkcja oczekuje parametry typy String: UsuwajTagi(String text);
Obiekt typy TMemo niczego nie zwraca, więc nie możesz wstawić obiektu typu TMemo, tam gdzie oczekiwana jest wartość typu String.


Nie, chodziło mi o to by to zastąpić. Po prostu nie wiem jak oStream bezpośrednio zamienić na stringa.


Cyfrowy Baron napisał(a):


Ale zastosowałem wczytanie strony bezINDY, z tym, że nadal jest problem z tym forum. Na razie działa poprawnie
Jaki problem?
U mnie funkcja URLOpenBlockingStream ładuje cała zawartość strony głównej serwisu.
Wszystko działa poprawnie, źle poprawiłem posta.
Tylko dwie rzeczy są nieskończone: wszechświat oraz ludzka głupota, choć nie jestem pewien co do tej pierwszej. - Albert Einstein

Błędów nie popełnia ten, kto nic nie robi. - Theodore Roosevelt
Avatar użytkownika
GoldWolf
Homos antropiczny
Homos antropiczny
 
Posty: 116
Dołączył(a): piątek, 16 stycznia 2009, 18:42
Podziękował : 8
Otrzymał podziękowań: 0
System operacyjny: Siódemka Profesjonalna
Kompilator: Microsoft Visual Studio 2010
Version 10.0.30319.1
Gadu Gadu: 0
    NieznanyNieznana

Re: Turbo C++ i WWW

Nowy postprzez Witold » sobota, 3 października 2009, 11:13

Dante napisał(a):
Gdyby chodziło mi tylko o rozwiązanie problemu, to nie ślęczałbym na biblioteką wininet.dll, tylko skorzystałbym z bibliotek np. INDY -> TIdHTTP, i nie byłoby najmniejszego problemu.
Tak jak ja, tylko akurat używam Turbo i nie mam takiej możliwości.


Raczej masz, Turbo C++ Explorer ma zainstalowaną indy (v9.0.50), tyle że komponentów nie ma na palecie, trzeba je tworzyć przez new.

Kod: Zaznacz cały
#include <IdHTTP.hpp>
#pragma comment(lib,"indy.lib") // lub #pragma link "indy.lib"
//---------------------------------------------------------------------------
__fastcall TfrmMain::TfrmMain(TComponent* Owner)
   : TForm(Owner)
{
   TIdHTTP * indyHttp = new TIdHTTP(this);
   Caption =  indyHttp->Version;
   indyHttp->Host = "benchmark.pl";
   indyHttp->HandleRedirects = true;
   Memo1->Text =  indyHttp->Get("http://benchmark.pl/");
}
//---------------------------------------------------------------------------

Za ten post autor Witold otrzymał podziękowanie od:
GoldWolf
Avatar użytkownika
Witold
Konstrukcjonista
Konstrukcjonista
 
Posty: 223
Dołączył(a): piątek, 29 sierpnia 2008, 10:53
Podziękował : 1
Otrzymał podziękowań: 14
Kompilator: bcb6, Turbo C++ Explorer
    NieznanyNieznana

Re: Turbo C++ i WWW

Nowy postprzez GoldWolf » sobota, 3 października 2009, 11:50

Kod: Zaznacz cały
Memo1->Text =  indyHttp->Get("http://programowanie.cal.pl/forum/index.php");
Ze stroną Cyfrowego wywala błąd ;-).
Tylko dwie rzeczy są nieskończone: wszechświat oraz ludzka głupota, choć nie jestem pewien co do tej pierwszej. - Albert Einstein

Błędów nie popełnia ten, kto nic nie robi. - Theodore Roosevelt
Avatar użytkownika
GoldWolf
Homos antropiczny
Homos antropiczny
 
Posty: 116
Dołączył(a): piątek, 16 stycznia 2009, 18:42
Podziękował : 8
Otrzymał podziękowań: 0
System operacyjny: Siódemka Profesjonalna
Kompilator: Microsoft Visual Studio 2010
Version 10.0.30319.1
Gadu Gadu: 0
    NieznanyNieznana

Re: Turbo C++ i WWW

Nowy postprzez Cyfrowy Baron » sobota, 3 października 2009, 12:00

Nie, chodziło mi o to by to zastąpić. Po prostu nie wiem jak oStream bezpośrednio zamienić na stringa.


Można, ale obiekt oStream można sobie darować, gdyż nie ma sensu kopiowanie najpierw zawartości obiektu klasy IStream do obiektu oStream a potem przepisywanie tego do zmiennej typu String, można od razu posłużyć się obiektem klasy IStream, a odpowiedź na właściwie mogłeś znaleźć w poradzie, którą się posługujesz.

Kod: Zaznacz cały
String Url = "http://programowanie.cal.pl/forum/index.php";

IStream* pStream;

URLOpenBlockingStream(0, Url.c_str(), &pStream, 0, 0);

LARGE_INTEGER liZero = { 0 }; // Aby odnosic sie wzgledem poczatku strumienia
ULARGE_INTEGER CurPos; // Do zapisania pozycji wskaźnika

//Zapisujemy bierzaca pozycje wskaznika
pStream->Seek(liZero, STREAM_SEEK_CUR, &CurPos);

// Sprawdzamy wielkość strumienia
ULARGE_INTEGER SizeOfFile;
pStream->Seek(liZero, STREAM_SEEK_END, &SizeOfFile);

// Przywracamy wskaznik na poprzednią pozycje
LARGE_INTEGER Pos;
Pos.QuadPart = CurPos.QuadPart;
pStream->Seek(Pos, STREAM_SEEK_SET, NULL);

//Tworzymy bufor przejsciowy dla strumienia
char *data = new char[SizeOfFile.QuadPart];
pStream->Read(data, SizeOfFile.QuadPart, NULL);

String  tekst = (String)data;

/UsuwajTagi(tekst); // <--

Memo1->Text = tekst; //sprawdzanie co zawiera tekst


Musisz jednak wiedzieć o jednej rzeczy. Gdy wczytujesz z pamięci tekst do obiektu Memo to obiekt ten dobiera odpowiednie kodowanie (w przypadku z przykładu) UTF-8 i prawidłowo wyświetli zawartość pliku. Zmienna typu String nie jest w stanie przechować znaków UNICODE, więc po przepisaniu pliku do zmiennej typu String pojawią się krzaczki i żadna konwersja z UTF8 na Ansi tutaj raczej nie pomoże, gdyż zmienna String nie pomieści znaków z zakresu UTF8.

Pozostaje jeszcze problem kwadracików, które są jak przypuszczam znakami końca linii. Po pobraniu pliku do zmiennej String pojawią się kwadraciki w miejsce znaków końca linii, ale nie w każdym miejscu. Nie wiem z czym to jest związane i jak to zmienić.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana

Re: Turbo C++ i WWW

Nowy postprzez polymorphism » sobota, 3 października 2009, 12:12

ale obiekt oStream można sobie darować, gdyż nie ma sensu kopiowanie najpierw zawartości obiektu klasy IStream do obiektu oStream a potem przepisywanie tego do zmiennej typu String

Gwoli ścisłości, TOleString jest wrapperem na IStream, więc nie ma mowy o kopiowaniu zawartości.
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    NieznanyNieznana

Re: Turbo C++ i WWW

Nowy postprzez GoldWolf » sobota, 3 października 2009, 12:19

Musisz jednak wiedzieć o jednej rzeczy. Gdy wczytujesz z pamięci tekst do obiektu Memo to obiekt ten dobiera odpowiednie kodowanie (w przypadku z przykładu) UTF-8 i prawidłowo wyświetli zawartość pliku.

Stosując rozwiązanie :
Kod: Zaznacz cały
IStream* pStream;
std::string Url = "http://onet.pl";
URLOpenBlockingStream(0, Url.c_str(), &pStream, 0, 0);
std::auto_ptr<TOleStream> oStream(new TOleStream(pStream));
Memo1->Lines->LoadFromStream(oStream.get());
UsuwajTagi(Memo1->Text.c_str());
Nie musisz się tym przejmować wszystko jest poprawnie wczytane i wyświetlane.
Tylko dwie rzeczy są nieskończone: wszechświat oraz ludzka głupota, choć nie jestem pewien co do tej pierwszej. - Albert Einstein

Błędów nie popełnia ten, kto nic nie robi. - Theodore Roosevelt
Avatar użytkownika
GoldWolf
Homos antropiczny
Homos antropiczny
 
Posty: 116
Dołączył(a): piątek, 16 stycznia 2009, 18:42
Podziękował : 8
Otrzymał podziękowań: 0
System operacyjny: Siódemka Profesjonalna
Kompilator: Microsoft Visual Studio 2010
Version 10.0.30319.1
Gadu Gadu: 0
    NieznanyNieznana

Poprzednia stronaNastępna strona

  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Aplikacje sieciowe

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 4 gości

cron