Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.03.30;
Скачать: [xml.tar.bz2];

Вниз

Проблеммы с 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.038 c
3-1194512166
zorik
2007-11-08 11:56
2008.03.30
Корректное отключение (подключение) TIBDatabase


2-1203488436
vegarulez
2008-02-20 09:20
2008.03.30
Вопрос про alignment у TEdit.


2-1204201273
mrfreeman2007
2008-02-28 15:21
2008.03.30
Вывод компа из спячки


2-1204027484
Эрни
2008-02-26 15:04
2008.03.30
найти каталог


15-1203320038
dr_creigan
2008-02-18 10:33
2008.03.30
драйвера





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский