Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.03.30;
Скачать: CL | DM;

Вниз

Проблеммы с TMemoryStream в TStringList...   Найти похожие ветки 

 
Evil   (2008-03-02 17:48) [0]

Доброе время суток!!!
Есть процедура для поиска и закачки веб странички:

procedure LoadAndView(ASearchName: String);
var
 BufferLen: DWORD;
 Buffer: array[1..1024] of Byte;
 hSession, hURL: HInternet;
 Stream : TMemoryStream;
 sList : TStringList;
 strCount, I, pS, BeginPos : Integer;
 tmpstr, nUri, sName : String;
const
toSearchStr = "http://www.kinopoisk.ru/index.php?kp_query=";
begin
 Stream := TMemoryStream.Create;
   sList := TStringList.Create;
hSession := InternetOpen("parser", PRE_CONFIG_INTERNET_ACCESS, nil, nil, 0);
hURL := InternetOpenURL(hSession,PChar(toSearchStr + HTTPEncode(ASearchName)),nil, 0, 0, 0);

  repeat
       InternetReadFile(hURL, @Buffer, SizeOf(Buffer), BufferLen);
       Stream.WriteBuffer(Buffer, SizeOf(Buffer));
     until
       BufferLen = 0;
       Stream.Seek(0, 0);
      Stream.SaveToFile("tmp.html"); << здесь сохраняется полностью веб страничка

      Stream.Seek(0, 0);

 sList.LoadFromStream(Stream); << здесь казалось бы должна быть полная страница....

     sList.SaveToFile("tmp1.html"); << но здесь получаем полнейший облом,,, тоесть у нас в TStringList находится реально токо 1-2 строки...

 strCount := sList.Count;

 for I := 0 to strCount - 1 do
 begin
 pS := pos(UpperCase(format(slinkTformat, [ASearchName])), UpperCase(sList.Strings[I]));
 if pS <> 0 then
   begin
   tmpstr := copy(sList.Strings[I], 0, pS - 1);
   BeginPos := Pos("href="", tmpstr);
   if BeginPos <> 0 then
     begin
       nUri := copy(tmpstr, BeginPos + Length("href="") + 1, Length(tmpstr) - (BeginPos + Length("href="")));
       sName := copy(sList.Strings[I], pS + 2, pos(sLinkTOver,sList.Strings[I]) - pS - 2);
       ValueListEditor.InsertRow(sName, SiteUrl + nUri, true);
     end;
   end;
 end;
 Stream.Free;
 sList.Free;
end;


 
Loginov Dmitry ©   (2008-03-02 18:54) [1]

код приведи в божеский вид! Читать это невозможно!


 
Evil   (2008-03-02 19:34) [2]


> код приведи в божеский вид! Читать это невозможно!

Извиняюсь за непонятный код,,, уже все испробывал что б найти проблему...
И всю тарабарщину суда впихнул, а отредактировать уже не могу...
Делаем:  
Stream.SaveToFile("tmp.html"); << здесь сохраняется полностью веб страничка тоесть в стриме находится все данные
Stream.Seek(0, 0);
sList.LoadFromStream(Stream); << здесь мы пытаемся загрузить в TStringList данные со Стрима...
 sList.SaveToFile("tmp1.html"); << но получаеться что в TStringList загрузилась 1-2 строки... :(


 
Loginov Dmitry ©   (2008-03-02 20:59) [3]

> но получаеться что в TStringList загрузилась 1-2 строки


Значит в стриме после 1-2х строк находится символ #0.


 
Evil   (2008-03-02 21:40) [4]

А можна как-то обойти эту проблему?


 
{RASkov} ©   (2008-03-02 21:46) [5]

> [4] Evil   (02.03.08 21:40)

Это не проблема.... а непонимание....
Задачу свою лучше пересмотри с учетом совместимости "текстовых" и "нетекстовых" классов...


 
Evil   (2008-03-02 22:25) [6]

Мдя... чето голова у меня совершенно сегодня не работает :(
Да по логике воно и правда не должно работать я получаеться бинарную инфу пытаюсь текстом зделать :)

Мож кто конкретным примером подскажет как мне с интернета получить веб страницу в текстовом виде,,, или же подскажет где ковырять...
Заранние спасибо!!!


 
{RASkov} ©   (2008-03-02 22:50) [7]

> [6] Evil   (02.03.08 22:25)
> Мож кто конкретным примером подскажет как мне с интернета
> получить веб страницу в текстовом виде

Ну может нечто так:
uses IdHTTP;
...............
begin
 with TIdHTTP.Create(nil) do try
  Memo.Text:=Get("http://www.ya.ru");
 finally
  Free;
 end;
end;



Страницы: 1 вся ветка

Текущий архив: 2008.03.30;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.039 c
2-1204223376
arreke
2008-02-28 21:29
2008.03.30
Отправить письмо на email


3-1194513654
dolmat
2007-11-08 12:20
2008.03.30
Отключить пользователей от базы


3-1194552532
БарЛог
2007-11-08 23:08
2008.03.30
Помогите составить SQL-запрос


2-1204281620
arhis
2008-02-29 13:40
2008.03.30
Символ возврата каретки.


3-1194010850
Андрей Пл
2007-11-02 16:40
2008.03.30
FireBird нужна прога для визуальной работы!!!